{"templateId":"markdown","versions":[{"version":"v0-beta","label":"Beta (v0)","link":"/products/native-api/docs/guides/cards","default":true,"active":true,"folderId":"e4cb5a06"}],"sharedDataIds":{"sidebar":"sidebar-products/native-api/@v0-beta/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Cards","description":"Official Banxa API documentation – on-ramp and off-ramp transfers with identity verification and compliance.","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"cards","__idx":0},"children":["Cards"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Card payments are handled by the Banxa React Native SDK, which presents Primer's card input drawer — a bottom sheet that overlays your app. The user enters their card details, and Primer handles PCI-compliant card capture and 3D Secure authentication. Your app never touches raw card data."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide covers payment execution and 3DS SDK installation only. Identity creation, KYC, eligibility, and React Native SDK installation are covered in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/guides/foundations"},"children":["Integration Guide"]}," — start there if you haven't set those up yet. This guide picks up from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentReady: true"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"execute-payment","__idx":1},"children":["Execute payment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After your backend confirms ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentReady: true"]}," from eligibility, call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["createOrderAndShowPrimerCheckout"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentMethod: 'card'"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"import {\n  isPrimerCheckoutWebViewResult,\n} from '@banxa-official/react-native-sdk';\n\nconst result = await banxa.buy.createOrderAndShowPrimerCheckout(orderRequest, {\n  paymentMethod: 'card',\n  callbacks: {\n    onCheckoutComplete: () => {\n      // Payment confirmed — transaction is in progress\n    },\n    onError: (error) => {\n      // Payment failed — see error handling below\n    },\n    onDismiss: () => {\n      // User dismissed the card drawer without completing\n    },\n  },\n});\n\nif (isPrimerCheckoutWebViewResult(result)) {\n  // SDK fell back to hosted WebView\n  render(<CheckoutWebView {...result.webViewProps} />);\n}\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderRequest"]}," must include ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCustomerId"]}," — pass the same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["identityReference"]}," you used for eligibility."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"install-the-3ds-sdk","__idx":2},"children":["Install the 3DS SDK"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Card payments require Primer's 3DS SDK in addition to the Banxa React Native SDK. Install this before invoking ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["createOrderAndShowPrimerCheckout"]}," — the card payment sheet will not initialise without it."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The version you install must match the version of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["@primer-io/react-native"]}," in your project — see the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#interoperability-matrix"},"children":["interoperability matrix"]}," below."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"ios","__idx":3},"children":["iOS"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Adding 3D Secure on iOS requires the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Primer3DS"]}," pod. The configuration depends on how your project links CocoaPods. Run ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bundle exec pod install"]}," in your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ios"]}," folder to check:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Framework build type is static library"]}," → ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#static-library"},"children":["Static library"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Configuring Pod with dynamically linked Frameworks"]}," → ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#dynamic-framework"},"children":["Dynamic framework"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Configuring Pod with statically linked Frameworks"]}," → ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#static-framework"},"children":["Static framework"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"static-library","__idx":4},"children":["Static library"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The default for most React Native apps."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pod 'Primer3DS'"]}," to your target and configure the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["post_install"]}," block:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"ruby","header":{"controls":{"copy":{}}},"source":"target 'MyApp' do\n  # ... other CocoaPods config ...\n  pod 'Primer3DS'\n  post_install do |installer|\n    installer.pods_project.targets.each do |target|\n      if target.name == \"primer-io-react-native\" || target.name == \"PrimerSDK\"\n        target.build_configurations.each do |config|\n          config.build_settings['FRAMEWORK_SEARCH_PATHS'] = \"$(inherited) ${PODS_CONFIGURATION_BUILD_DIR}/Primer3DS\"\n          config.build_settings['LIBRARY_SEARCH_PATHS'] = \"$(inherited) ${PODS_CONFIGURATION_BUILD_DIR}/Primer3DS\"\n          config.build_settings['SWIFT_INCLUDE_PATHS'] = \"$(inherited) ${PODS_CONFIGURATION_BUILD_DIR}/Primer3DS\"\n          # Use this line for static libraries:\n          config.build_settings['OTHER_SWIFT_FLAGS'] = '$(inherited) -Xcc -fmodule-map-file=\"${PODS_CONFIGURATION_BUILD_DIR}/Primer3DS/Primer3DS.framework/Modules/Primer3DS.modulemap\"'\n          config.build_settings['OTHER_LDFLAGS'] = '$(inherited) -weak_library -l\"Primer3DS\"'\n        end\n      end\n    end\n  end\nend\n","lang":"ruby"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bundle exec pod install"]}," to finish."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"dynamic-framework","__idx":5},"children":["Dynamic framework"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pod 'Primer3DS'"]}," to your target — no additional config needed:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"ruby","header":{"controls":{"copy":{}}},"source":"target 'MyApp' do\n  # ... other RN iOS config ...\n  pod 'Primer3DS'\nend\n","lang":"ruby"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bundle exec pod install"]}," to finish. The 3DS pod is detected automatically at runtime."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"static-framework","__idx":6},"children":["Static framework"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Static frameworks require the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cocoapods-pod-linkage"]}," plugin to allow the 3DS pod to be loaded dynamically at runtime."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add to your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Gemfile"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"ruby","header":{"controls":{"copy":{}}},"source":"gem 'cocoapods-pod-linkage'\n","lang":"ruby"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bundle install"]},", then add the plugin to your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Podfile"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"ruby","header":{"controls":{"copy":{}}},"source":"plugin 'cocoapods-pod-linkage'\n","lang":"ruby"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Configure your target to link ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PrimerSDK"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Primer3DS"]}," dynamically:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"ruby","header":{"controls":{"copy":{}}},"source":"use_frameworks! :linkage => :static\n\ntarget 'MyApp' do\n  # ... other CocoaPods config ...\n  pod 'PrimerSDK', :linkage => :dynamic\n  pod 'Primer3DS', :linkage => :dynamic\n\n  post_install do |installer|\n    installer.pods_project.targets.each do |target|\n      if target.name == \"primer-io-react-native\" || target.name == \"PrimerSDK\"\n        target.build_configurations.each do |config|\n          config.build_settings['FRAMEWORK_SEARCH_PATHS'] = \"$(inherited) ${PODS_CONFIGURATION_BUILD_DIR}/Primer3DS\"\n          config.build_settings['LIBRARY_SEARCH_PATHS'] = \"$(inherited) ${PODS_CONFIGURATION_BUILD_DIR}/Primer3DS\"\n          config.build_settings['SWIFT_INCLUDE_PATHS'] = \"$(inherited) ${PODS_CONFIGURATION_BUILD_DIR}/Primer3DS\"\n          config.build_settings['OTHER_LDFLAGS'] = '$(inherited) -framework Primer3DS'\n        end\n      end\n    end\n  end\nend\n","lang":"ruby"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bundle exec pod install"]}," to finish."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"android","__idx":7},"children":["Android"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["io.primer:3ds-android"]}," library to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dependencies"]}," block in your app's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["build.gradle"]},". Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{version}"]}," with the correct version from the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#interoperability-matrix"},"children":["interoperability matrix"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"groovy","header":{"controls":{"copy":{}}},"source":"dependencies {\n  // ... other dependencies ...\n  implementation \"io.primer:3ds-android:{version}\"\n}\n","lang":"groovy"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"interoperability-matrix","__idx":8},"children":["Interoperability matrix"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The version of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["io.primer:3ds-android"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Primer3DS"]}," you install must match the version of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["@primer-io/react-native"]}," in your project."]},{"$$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":"@primer-io/react-native"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["@primer-io/react-native"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"io.primer:3ds-android"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["io.primer:3ds-android"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Primer3DS (iOS)"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Primer3DS"]}," (iOS)"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[">= 2.42.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1.8.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[">= 2.7.0"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.41.0 – 2.42.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1.7.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.6.0 – 2.7.0"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.35.0 – 2.40.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1.6.2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.4.2 – 2.5.x"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.34.1 – 2.35.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1.6.2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.3.0 – 2.4.2"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.27.2 – 2.34.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1.5.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.3.0 – 2.4.2"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.24.0 – 2.27.1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1.4.3"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.3.0 – 2.4.2"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.21.0 – 2.23.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1.4.2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.3.0 – 2.4.2"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.20.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1.4.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.1.0 – 2.2.1"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.19.0 – 2.19.2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1.3.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.1.0 – 2.2.1"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.17.2 – 2.18.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1.2.0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.0.0 – 2.0.2"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.16.0 – 2.17.1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1.1.2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.0.0 – 2.0.2"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.15.0 – 2.15.1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1.1.1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2.0.0 – 2.0.2"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"oob-redirects-optional","__idx":9},"children":["OOB redirects (optional)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["From 3DS protocol version 2.2.0, you can enable automatic redirect back to your app after an out-of-band (OOB) authentication challenge completes in another app. Without this, users must return to your app manually — which adds friction at the payment step."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To enable OOB redirects, pass ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["threeDsAppRequestorUrl"]}," in your Primer settings. The iOS value must be an ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content"},"children":["iOS Universal Link"]}," and the Android value must be an ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.android.com/training/app-links"},"children":["Android App Link"]},"."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"import { Banxa } from '@banxa-official/react-native-sdk';\n\nconst banxa = new Banxa({\n  apiKey: 'YOUR_API_KEY',\n  partner: 'your-partner-id',\n  environment: 'production',\n  primerSettings: {\n    paymentMethodOptions: {\n      threeDsOptions: {\n        iOS: {\n          threeDsAppRequestorUrl: 'https://yourdomain.com/3ds',\n        },\n        android: {\n          threeDsAppRequestorUrl: 'https://yourdomain.com/3ds',\n        },\n      },\n    },\n  },\n});\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See Apple's ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content"},"children":["Universal Links"]}," and Google's ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.android.com/training/app-links"},"children":["Android App Links"]}," documentation for setup steps."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"testing","__idx":10},"children":["Testing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use Banxa's sandbox environment during development:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"const banxa = new Banxa({\n  environment: 'sandbox',\n  // ...\n});\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If your app is not installed from a trusted source — a debug build, not installed from the store, or running on an emulator — 3DS initialisation may fail due to security checks. Disable the sanity check in development:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"const banxa = new Banxa({\n  // ...\n  primerSettings: {\n    debugOptions: {\n      is3DSSanityCheckEnabled: false,\n    },\n  },\n});\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Development only"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["is3DSSanityCheckEnabled: false"]}," only in development builds. Do not ship this to production."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For test cards and 3DS challenge scenarios, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://primer.io/docs/payment-services/3d-secure/testing"},"children":["Primer's 3DS Testing Guide"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"going-live","__idx":11},"children":["Going live"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before releasing to production:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Remove ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["is3DSSanityCheckEnabled: false"]}," from your configuration"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Switch to production credentials in the SDK"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm with your Banxa integration contact that your account is provisioned for production card payments"]}]}]},"headings":[{"value":"Cards","id":"cards","depth":1},{"value":"Execute payment","id":"execute-payment","depth":2},{"value":"Install the 3DS SDK","id":"install-the-3ds-sdk","depth":2},{"value":"iOS","id":"ios","depth":3},{"value":"Static library","id":"static-library","depth":4},{"value":"Dynamic framework","id":"dynamic-framework","depth":4},{"value":"Static framework","id":"static-framework","depth":4},{"value":"Android","id":"android","depth":3},{"value":"Interoperability matrix","id":"interoperability-matrix","depth":3},{"value":"OOB redirects (optional)","id":"oob-redirects-optional","depth":2},{"value":"Testing","id":"testing","depth":2},{"value":"Going live","id":"going-live","depth":2}],"frontmatter":{"title":"Cards","description":"How to add card payments to a Banxa Native integration — 3DS SDK setup for iOS and Android, and React Native SDK payment execution.","seo":{"title":"Cards"}},"lastModified":"2026-06-01T06:29:39.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/native-api/docs/guides/cards","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}