Skip to main content
Primer Checkout Android SDK is currently in beta (v3.0.0-beta.2). The API is subject to change before the stable release.
Object providing pre-built composable functions for each part of the card form. Use these to rearrange or selectively replace sections of PrimerCardForm.

Card detail fields

FunctionDescription
CardNumberField(controller, modifier)Card number input with auto-formatting, Luhn validation, and network icon
ExpiryField(controller, modifier)Expiry date input with MM/YY auto-formatting
CvvField(controller, modifier)CVV input with dynamic length based on card network
CardholderField(controller, modifier)Cardholder name input. Only rendered when required by session.
CardNetworkField(controller)Co-badge network selector. Only rendered for co-badged cards.
All field functions accept controller: PrimerCardFormController and modifier: Modifier = Modifier (except CardNetworkField which has no modifier).

Billing address fields

FunctionDescription
CountryCodeField(controller, modifier)Country selector that opens a picker dialog
FirstNameField(controller, modifier)Billing first name input
LastNameField(controller, modifier)Billing last name input
AddressLine1Field(controller, modifier)Street address line 1
AddressLine2Field(controller, modifier)Street address line 2 (optional)
CityField(controller, modifier)City name input
StateField(controller, modifier)State or region input
PostalCodeField(controller, modifier)Postal or ZIP code input
Only rendered when required by the session configuration.

Content composables

CardDetailsContent

@Composable
fun CardFormDefaults.CardDetailsContent(
    controller: PrimerCardFormController,
    cardNumber: @Composable () -> Unit = { CardNumberField(controller) },
    expiryDate: @Composable () -> Unit = { ExpiryField(controller) },
    cvv: @Composable () -> Unit = { CvvField(controller) },
    cardholderName: @Composable () -> Unit = { CardholderField(controller) },
)
Renders the default card details layout. Each field can be individually replaced via slot parameters.

BillingAddressContent

@Composable
fun CardFormDefaults.BillingAddressContent(
    controller: PrimerCardFormController,
    countryCode: @Composable () -> Unit = { CountryCodeField(controller) },
    firstName: @Composable () -> Unit = { FirstNameField(controller) },
    lastName: @Composable () -> Unit = { LastNameField(controller) },
    addressLine1: @Composable () -> Unit = { AddressLine1Field(controller) },
    addressLine2: @Composable () -> Unit = { AddressLine2Field(controller) },
    city: @Composable () -> Unit = { CityField(controller) },
    state: @Composable () -> Unit = { StateField(controller) },
    postalCode: @Composable () -> Unit = { PostalCodeField(controller) },
)
Renders the default billing address layout. Only renders fields required by the session.

Submit button

SubmitButton

@Composable
fun CardFormDefaults.SubmitButton(
    controller: PrimerCardFormController,
    modifier: Modifier = Modifier,
)
Default pay button that displays the formatted amount, disables when invalid or submitting, and shows a loading indicator during submission.