{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-android/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["code-walkthrough","step","admonition"]},"type":"markdown"},"seo":{"title":"PaymentSheetConfiguration | Finix Android Reference","description":"Reference for PaymentSheetConfiguration and ThreeDSConfiguration — configure credentials, environment, and 3D Secure for the Finix Android payment sheet.","siteUrl":"https://docs.finix.com/","llmstxt":{"hide":false,"sections":[{"title":"Getting Started","includeFiles":["guides/getting-started/**/*.md"],"excludeFiles":[]},{"title":"Online Payments","includeFiles":["guides/online-payments/**/*.md"],"excludeFiles":["guides/online-payments/payment-features/fsa-hsa-non-healthcare-mcc.md"]},{"title":"In-Person Payments","includeFiles":["guides/in-person-payments/**/*.md"],"excludeFiles":[]},{"title":"Subscriptions","includeFiles":["guides/subscriptions/**/*.md"],"excludeFiles":[]},{"title":"After the Payment","includeFiles":["guides/after-the-payment/**/*.md"],"excludeFiles":[]},{"title":"Managing Operations","includeFiles":["guides/managing-operations/**/*.md"],"excludeFiles":[]},{"title":"Platform Payments","includeFiles":["guides/platform-payments/**/*.md"],"excludeFiles":[]},{"title":"Payouts","includeFiles":["guides/payouts/**/*.md"],"excludeFiles":[]},{"title":"Low-Code / No-Code","includeFiles":["low-code-no-code/**/*.md"],"excludeFiles":[]},{"title":"Developers","includeFiles":["additional-resources/developers/**/*.md"],"excludeFiles":[]},{"title":"Plugins","includeFiles":["additional-resources/plugins/**/*.md"],"excludeFiles":[]},{"title":"Industry Considerations","includeFiles":["guides/industry-considerations/**/*.md"],"excludeFiles":[]},{"title":"Regional Considerations","includeFiles":["guides/regional-considerations/**/*.md"],"excludeFiles":[]},{"title":"Release Notes","includeFiles":["release-notes/**/*.md"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"CodeWalkthrough","attributes":{"__idx":1,"filters":{},"filesets":[{"files":[{"path":"android/online/_filesets/configuration.kt","content":[{"start":0,"condition":{"steps":["configuration-shape"]},"children":["val configuration = PaymentSheetConfiguration(","    applicationId = \"APgPDQrLD52TYvqazjHJJchM\",","    environment = PaymentSheetEnvironment.LIVE,","    merchantId = \"MUxxxxxxxx\",","    apiUsername = \"USxxxxxxxx\",","    apiPassword = \"your-api-password\",","    threeDSConfiguration = threeDS,",")"]},"",{"start":11,"condition":{"steps":["threeds-shape","param-threeds"]},"children":["val threeDS = ThreeDSConfiguration(","    redirectScheme = \"yourappscheme://redirect\",","    isEnabled = true,",")"]},"",{"start":18,"condition":{"steps":["full-example"]},"children":["val configuration = PaymentSheetConfiguration(","    applicationId = \"APgPDQrLD52TYvqazjHJJchM\",","    environment = PaymentSheetEnvironment.LIVE,","    merchantId = \"MUxxxxxxxx\",","    apiUsername = \"USxxxxxxxx\",","    apiPassword = \"your-api-password\",","    threeDSConfiguration = ThreeDSConfiguration(","        redirectScheme = \"yourappscheme://redirect\",","        isEnabled = true,","    ),",")"]},""],"metadata":{"steps":["configuration-shape","threeds-shape","param-threeds","full-example"]},"basename":"configuration.kt","language":"kotlin"}],"downloadAssociatedFiles":[]}],"steps":[{"id":"configuration-shape","heading":"PaymentSheetConfiguration shape"},{"id":"threeds-shape","heading":"ThreeDSConfiguration shape"},{"id":"param-threeds","heading":"Creating a ThreeDSConfiguration"},{"id":"full-example","heading":"Full example"}],"inputs":{},"toggles":{}},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"paymentsheetconfiguration","__idx":0},"children":["PaymentSheetConfiguration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Groups the credentials, environment flag, and optional 3D Secure configuration passed to ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/android/online/payment-sheet"},"children":["CompletePaymentSheet"]},". Previously these were top-level composable parameters; they've been moved into a dedicated class so future options can be added without widening the composable signature."]},{"$$mdtype":"Tag","name":"CodeStep","attributes":{"id":"configuration-shape","heading":"PaymentSheetConfiguration shape"},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"data class PaymentSheetConfiguration(\n    val applicationId: String,\n    val environment: PaymentSheetEnvironment,\n    val merchantId: String? = null,\n    val apiUsername: String? = null,\n    val apiPassword: String? = null,\n    val threeDSConfiguration: ThreeDSConfiguration? = null,\n)\n","lang":"kotlin"},"children":[]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Property"},"children":["Property"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Required"},"children":["Required"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["applicationId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your Finix Application ID, found in the Finix Dashboard. Application IDs are environment-specific — use the one that matches ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["environment"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["environment"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PaymentSheetEnvironment"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The Finix environment the SDK targets: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PaymentSheetEnvironment.LIVE"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PaymentSheetEnvironment.SANDBOX"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PaymentSheetEnvironment.QA"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["merchantId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Finix Merchant ID. Required when ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["threeDSConfiguration"]}," is set — the SDK forwards it to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/3d_secure_sessions"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiUsername"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Finix API username used to authenticate the 3DS session call."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiPassword"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Finix API password used to authenticate the 3DS session call."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["threeDSConfiguration"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ThreeDSConfiguration?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["When set, runs 3D Secure authentication after tokenization. Omit (or pass ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]},") to leave 3DS disabled. See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"#threedsconfiguration"},"children":["ThreeDSConfiguration"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Do not embed production API credentials"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiUsername"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiPassword"]}," are privileged Finix API credentials — even ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ROLE_MERCHANT"]}," keys can create Transfers (see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/additional-resources/developers/authentication-and-api-basics/api-keys"},"children":["API Keys"]},"). Credentials embedded in a distributed APK can be extracted and reused by an attacker. For live mode, mint short-lived or scope-restricted credentials from your backend and inject them at runtime, or proxy the 3DS session call through your backend rather than shipping the live account key with the app."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"paymentsheetenvironment","__idx":1},"children":["PaymentSheetEnvironment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Selects which Finix environment the SDK targets. Pair the value with the matching ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["applicationId"]}," and (when 3DS is enabled) the matching API credentials."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"enum class PaymentSheetEnvironment {\n    LIVE,\n    SANDBOX,\n    QA,\n}\n","lang":"kotlin"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"threedsconfiguration","__idx":2},"children":["ThreeDSConfiguration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enables 3D Secure (3DS) card authentication after tokenization. When set on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PaymentSheetConfiguration"]},", the SDK calls ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/3d_secure_sessions"]},", presents a WebView challenge if required, and polls the session until it reaches a terminal state. The outcome is returned via ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/android/online/token-response#threedsresponse"},"children":["PaymentSheetResponse.threeDSResponse"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["threeDSConfiguration"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]},", tokenization behaves exactly as before — existing integrations are unaffected."]},{"$$mdtype":"Tag","name":"CodeStep","attributes":{"id":"threeds-shape","heading":"ThreeDSConfiguration shape"},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"data class ThreeDSConfiguration(\n    val redirectScheme: String,\n    val isEnabled: Boolean,\n)\n","lang":"kotlin"},"children":[]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Property"},"children":["Property"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Required"},"children":["Required"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redirectScheme"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Custom URL scheme the issuer's challenge page returns to when authentication completes. Must match an intent-filter in your app's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AndroidManifest.xml"]}," — see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/android/online/#register-the-redirect-url-scheme"},"children":["Register the redirect URL scheme"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isEnabled"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Boolean"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Set to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}," to construct a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ThreeDSConfiguration"]}," without triggering 3DS. Useful for runtime toggles. Unlike the iOS counterpart, this parameter has no default — pass it explicitly."]}]}]}]}]}]},{"$$mdtype":"Tag","name":"CodeStep","attributes":{"id":"param-threeds","heading":"Creating a ThreeDSConfiguration"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redirectScheme"]}," tells the SDK which URL to listen for when the issuer's challenge page redirects back to your app. Register the same scheme in your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AndroidManifest.xml"]}," or the SDK will time out waiting for the redirect."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"val threeDS = ThreeDSConfiguration(\n    redirectScheme = \"yourappscheme://redirect\",\n    isEnabled = true,\n)\n","lang":"kotlin"},"children":[]}]},{"$$mdtype":"Tag","name":"CodeStep","attributes":{"id":"full-example","heading":"Full example"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Compose a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PaymentSheetConfiguration"]}," with 3D Secure enabled."]}]}]}]},"headings":[{"value":"PaymentSheetConfiguration","id":"paymentsheetconfiguration","depth":1},{"value":"PaymentSheetEnvironment","id":"paymentsheetenvironment","depth":2},{"value":"ThreeDSConfiguration","id":"threedsconfiguration","depth":2}],"frontmatter":{"seo":{"title":"PaymentSheetConfiguration | Finix Android Reference","description":"Reference for PaymentSheetConfiguration and ThreeDSConfiguration — configure credentials, environment, and 3D Secure for the Finix Android payment sheet."},"markdown":{"toc":{"hide":true}},"footer":{"hide":true}},"lastModified":"2026-10-15T19:56:08.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/android/online/configuration","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}