Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.y.uno/llms.txt

Use this file to discover all available pages before exploring further.

Parameters, customizations, and advanced features for all Android SDK flows. Setup: Payment flows (Android), Enrollment flows (Android), integration modes.

Key parameters (checkout session creation)

When creating a checkout session on your backend for payment flows, the following parameters are commonly used across Android SDKs:
ParameterRequiredDescription
amountYesThe primary transaction amount object containing currency (ISO 4217 code) and value (numeric amount in that currency).
alternative_amountNoAn alternative currency representation of the transaction amount with the same structure as amount (currency and value). Useful for multi-currency scenarios, such as displaying prices to customers in their preferred currency (e.g., USD) while processing the payment in the local currency (e.g., COP).

Payment parameters (full reference)

Parameters for payment flows. All parameters used in Payment flows (Android) are listed here with full detail.
ParameterTypeRequiredDescription
checkoutSessionstringYesCheckout session ID from your backend (Create checkout session API). Required for all payment flows.
countryCodestringYesISO country code where the payment runs (e.g. US, BR). Determines available payment methods and compliance.
callbackPaymentStatefunctionNoCallback invoked when the payment state changes. Receives the current state: e.g. SUCCEEDED, FAIL, PROCESSING, REJECT. Use for UI updates, analytics, or navigation.
merchantSessionIdstringNoOptional merchant session identifier. Use to correlate the SDK session with your own session or order ID.

YunoConfig options (initialize)

Runtime behavior and appearance are configured via the YunoConfig data class when calling Yuno.initialize(context, publicApiKey, config). All parameters used across Android payment and enrollment flows are listed below. For visual styling (fonts, colors, buttons), see SDK customizations (Android).
ParameterTypeRequiredDescription
saveCardEnabledbooleanNoWhen true, allows the user to save or enroll the card during payment. Requires backend support for vaulting (e.g. payment_method.vault_on_success in checkout session).
keepLoaderbooleanNoIf true, the SDK loader persists from OTT generation until continuePayment() is called, preventing UI flickering. If payment creation fails, call hideLoader() to manually dismiss it.
languagestringNoLanguage code for the SDK UI (e.g. en, es). Use a code from Supported languages when available.
stylesobjectNoCustom styles applied to SDK UI elements. Define in your app’s styles and reference here, or use theme overrides. See SDK customizations (Android) for font, button, and color options.

Enrollment parameters (full reference)

Parameters for enrollment flows. All parameters used in Enrollment flows (Android) are listed here with full detail.
ParameterTypeRequiredDescription
customerSessionstringYesCustomer session ID from Create customer session API. Required. Associates the enrolled payment method with a specific customer.
countryCodestringYesISO country code (e.g. US, BR). Required for enrollment.
showEnrollmentStatusbooleanNoWhen true, shows the enrollment result screen after the flow. Default true. Set to false to handle result only via callback.
callbackEnrollmentStatefunctionNoCallback invoked when enrollment state changes. Requires registering initEnrollment in your Activity’s onCreate (or equivalent) so the SDK can deliver results. Optional when using onActivityResult with requestCode.
requestCodeintNoOptional request code used when capturing the enrollment result via onActivityResult. Use when you prefer activity-result flow over callbacks.

Public methods

The following methods are available globally via the Yuno object or as Activity extensions.

Activity.hideLoader()

Dismisses the SDK loader when keepLoader is active. Use this method when a backend payment creation fails and you cannot proceed with continuePayment().
fun Activity.hideLoader()

Yuno.continuePayment()

Resumes the payment flow for asynchronous methods (3ds, PIX, etc.) after a payment has been created on your backend.
fun continuePayment(
    showPaymentStatus: Boolean = true,
    checkoutSession: String? = null,
    countryCode: String? = null,
    callbackPaymentState: ((String?) -> Unit)? = null
)

Enrolling payment methods

You can enroll payment methods (store cards for future use) during the payment flow or via dedicated enrollment flows. For payment flows, enable save card in YunoConfig and set payment_method.vault_on_success (or equivalent) when creating the checkout session where supported. For dedicated enrollment, see Enrollment flows (Android).

keepLoader parameter

Available since Android SDK v2.13.0

How it works

The keepLoader parameter allows you to persist the SDK’s loading indicator across the entire startPaymentcontinuePayment flow, providing a seamless visual experience without the loader flickering between steps. By default, the SDK hides its loader after generating the One-Time Token (OTT) and shows it again when continuePayment is called. With keepLoader enabled, the loader stays visible continuously from the moment the user submits the payment form until the payment is fully processed (or explicitly dismissed).

Integration

1. Enable in YunoConfig

Yuno.initialize(
    applicationContext = this,
    apiKey = "YOUR_PUBLIC_API_KEY",
    config = YunoConfig(
        keepLoader = true,
    ),
)

2. Handle OTT and call continuePayment

When keepLoader is enabled, the OTT callback fires while the loader is still visible. Create your payment on your backend and then call continuePayment as usual:
activity.startCheckout(
    checkoutSession = checkoutSession,
    countryCode = countryCode,
    callbackOTT = { token ->
        // The loader is still visible at this point.
        // Create payment on your backend using the token,
        // then call continuePayment:
        activity.continuePayment(showPaymentStatus = true)
    },
    callbackPaymentState = { state, subState ->
        // Handle final payment state
    },
)

3. Handle errors with hideLoader

If your backend call fails and you cannot proceed with continuePayment, call hideLoader() to dismiss the loader and finish the payment flow:
callbackOTT = { token ->
    try {
        val payment = createPaymentOnBackend(token)
        activity.continuePayment(showPaymentStatus = true)
    } catch (e: Exception) {
        // Dismiss the loader on failure
        activity.hideLoader()
    }
}
Handling Failures
When keepLoader is active and payment creation fails, you must call hideLoader(). Otherwise, the loader will remain on the screen indefinitely (until the built-in timeout triggers).

Compatibility

  • Works with both Full and Lite payment flows (startPayment and startPaymentLite).
  • Compatible with vaulted tokens.
  • The loader respects the SDK’s built-in timeout — if neither continuePayment nor hideLoader is called, the loader will automatically dismiss after the timeout period.
  • Not applicable to the Seamless flow (startPaymentSeamlessLite), which does not use the startPaymentcontinuePayment two-step pattern.