{"templateId":"markdown","versions":[{"version":"v0-beta","label":"Beta (v0)","link":"/products/native-api/docs/how-it-works/native-payments","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":"Native Payment Experience","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":"native-payment-experience","__idx":0},"children":["Native Payment Experience"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Card, Apple Pay, and Google Pay payments in a Banxa Native integration are executed entirely inside your app via the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/sdk/sdk-reference"},"children":["React Native SDK"]},". There are no Banxa-hosted screens, no redirects, and no webviews in the payment path. The customer selects a payment method, completes payment on a native sheet, and returns to your app — all without leaving your product."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Bank transfers are handled directly through the Native API and do not involve the SDK at all."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-eligibility-gate","__idx":1},"children":["The eligibility gate"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before invoking any SDK payment flow, your backend must call the eligibility endpoint and confirm that ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentReady: true"]}," is returned."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"paymentReady\": true,\n  \"requirements\": []\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentReady: false"]}," means there are outstanding KYC or compliance requirements. Collect the missing information, submit it to the identity endpoint, and re-check eligibility before attempting payment. Do not proceed to the SDK if ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentReady"]}," is false — the order creation will fail."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once eligibility confirms the user is cleared, pass the same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["identityReference"]}," to the SDK as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCustomerId"]}," and call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["createOrderAndShowPrimerCheckout"]},". The SDK creates the order and presents the native payment sheet in a single call — there is no need to re-run eligibility client-side."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["→ See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/how-it-works/interpreting-eligibility"},"children":["Interpreting Eligibility"]}," for the full requirements dictionary and handling logic."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"pci-compliance-via-primer","__idx":2},"children":["PCI compliance via Primer"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Card data, Apple Pay tokens, and Google Pay tokens are captured by ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://primer.io"},"children":["Primer"]}," — PCI DSS Level 1 certified. Card numbers and wallet tokens never pass through your servers or Banxa's API."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"No PCI certification required"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Partners using the SDK for card and wallet payments do not need their own PCI compliance certification. Bank transfers bypass the SDK entirely — no card data is involved, so they run fully through the Native API."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-the-payment-experience-looks-like","__idx":3},"children":["What the payment experience looks like"]},{"$$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":"Method"},"children":["Method"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"UI"},"children":["UI"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Card details entered?"},"children":["Card details entered?"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Apple Pay"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OS-native Apple Pay sheet"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No — authenticates with Face ID or Touch ID"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Google Pay"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OS-native Google Pay sheet"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No — authenticates with device PIN"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Cards"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Primer card input drawer"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes — the only non-native screen in the integration"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Primer card input drawer is a bottom sheet that overlays your app. It is not Banxa-branded — it is Primer's card capture component, styled to your configuration. After the customer submits, it dismisses and control returns to your app. Everything else in the flow is built and owned by your product."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"interactive-prototypes","__idx":4},"children":["Interactive prototypes"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following screens show the native payment experience as it appears within a partner app. Select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["View interactive prototype"]}," to walk through the full flow."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"apple-pay","__idx":5},"children":["Apple Pay"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Apple Pay flow triggers the OS-native Apple Pay sheet. No card details are entered — the customer authenticates using a card already saved to their device."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/apple-pay.767e2fd7c221f2c91627ba157811efbd9de7dce9dc39f6b849d87e3548354599.2b83df8c.png","alt":"Apple Pay native payment flow"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.figma.com/proto/S3w7htZVKmMdlBpbsl9nVx/-EXTERNAL--Banxa-ATLUS?node-id=4043-17924&viewport=956%2C-246%2C0.13&t=OLlWLGdGTzTaiOOa-0&scaling=min-zoom&content-scaling=fixed&starting-point-node-id=4043%3A17924"},"children":["View interactive prototype →"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"cards","__idx":6},"children":["Cards"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The card flow presents the Primer card input drawer — a bottom sheet overlaying the partner app. The customer enters their card number, expiry, and CVV. This is the only non-native UI component in a Banxa Native integration."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/cards.d2e99a82c4a1450303802b8cb01b6675d5bc5b97b282b52d2bfcdb243872db5a.2b83df8c.png","alt":"Cards native payment flow"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.figma.com/proto/S3w7htZVKmMdlBpbsl9nVx/-EXTERNAL--Banxa-ATLUS?node-id=4061-35816&viewport=8%2C-5899%2C1.13&t=OhPt4MR8UQVixobT-1&scaling=min-zoom&content-scaling=fixed&starting-point-node-id=4061%3A35816"},"children":["View interactive prototype →"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"google-pay","__idx":7},"children":["Google Pay"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Google Pay flow triggers the OS-native Google Pay sheet on Android. Like Apple Pay, no card details are entered manually — the customer selects a saved payment method and authenticates."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/google-pay.1bee5a6b1fea94165b2c9e5d831f9f8f5f5077e58450360266bcb14dd10f88d3.2b83df8c.png","alt":"Google Pay native payment flow"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.figma.com/proto/S3w7htZVKmMdlBpbsl9nVx/-EXTERNAL--Banxa-ATLUS?node-id=4061-30411&viewport=-58%2C-4868%2C1&t=vI82YCHzoBMLAsbn-1&scaling=min-zoom&content-scaling=fixed&starting-point-node-id=4061%3A30411"},"children":["View interactive prototype →"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":8},"children":["Next steps"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/sdk/sdk-reference"},"children":["React Native SDK Reference"]}," — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["createOrderAndShowPrimerCheckout"]},", Primer theming, configuration options, and type definitions."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/guides/foundations"},"children":["Integration Guide"]}," — full end-to-end walkthrough, including the SDK payment step in context."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/how-it-works/interpreting-eligibility"},"children":["Interpreting Eligibility"]}," — requirements dictionary and the loop for satisfying outstanding checks."]}]}]},"headings":[{"value":"Native Payment Experience","id":"native-payment-experience","depth":1},{"value":"The eligibility gate","id":"the-eligibility-gate","depth":2},{"value":"PCI compliance via Primer","id":"pci-compliance-via-primer","depth":2},{"value":"What the payment experience looks like","id":"what-the-payment-experience-looks-like","depth":2},{"value":"Interactive prototypes","id":"interactive-prototypes","depth":2},{"value":"Apple Pay","id":"apple-pay","depth":3},{"value":"Cards","id":"cards","depth":3},{"value":"Google Pay","id":"google-pay","depth":3},{"value":"Next steps","id":"next-steps","depth":2}],"frontmatter":{"title":"Native Payment Experience","description":"How card, Apple Pay, and Google Pay work in a Banxa Native integration — Primer, PCI compliance, the eligibility gate, and the native payment sheet.","seo":{"title":"Native Payment Experience"}},"lastModified":"2026-06-01T06:57:34.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/native-api/docs/how-it-works/native-payments","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}