> ## Documentation Index
> Fetch the complete documentation index at: https://primer.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# PrimerCardForm

> Composable component that renders a complete card payment form with customizable slots

> [!WARNING]
>
> Primer Checkout Android SDK is currently in **beta** (v3.0.0-beta.8).
> The API is subject to change before the stable release.

Composable that renders a card payment form with card details, optional billing address, and submit button. Each section is a slot parameter you can replace.

## Signature

```kotlin theme={"dark"}
@Composable
fun PrimerCardForm(
    controller: PrimerCardFormController,
    modifier: Modifier = Modifier,
    cardDetails: @Composable () -> Unit = { CardFormDefaults.CardDetailsContent(controller) },
    billingAddress: @Composable () -> Unit = { CardFormDefaults.BillingAddressContent(controller) },
    submitButton: @Composable () -> Unit = { CardFormDefaults.SubmitButton(controller) },
)
```

## Parameters

| Parameter | Type | Default | Description |
| - | - | - | - |
| `controller` | [`PrimerCardFormController`](https://primer.io/docs/sdk/android-checkout/v3.0.0-beta/api/card-form/card-form-controller) | Required | Controller managing form state, validation, and submission |
| `modifier` | `Modifier` | `Modifier` | Modifier applied to the root container |
| `cardDetails` | `@Composable () -> Unit` | `CardFormDefaults.CardDetailsContent(controller)` | Slot for card input fields (number, expiry, CVV, cardholder name) |
| `billingAddress` | `@Composable () -> Unit` | `CardFormDefaults.BillingAddressContent(controller)` | Slot for billing address fields. Only rendered when required by session. |
| `submitButton` | `@Composable () -> Unit` | `CardFormDefaults.SubmitButton(controller)` | Slot for the submit/pay button |

## Default layout


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.