{"templateId":"markdown","versions":[{"version":"v0-beta","label":"Beta (v0)","link":"/products/native-api/docs/sdk/flutter-sdk-reference","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":"Flutter SDK Reference","description":"Official Banxa API documentation – on-ramp and off-ramp transfers with identity verification and compliance.","llmstxt":{"title":"Banxa Developer Documentation","description":"Integrate crypto-fiat exchange with Banxa's licensed infrastructure: payments, KYC, compliance, and settlement handled. 150+ countries, 45 global licences.","details":{"content":"Two integration products: **Banxa Native API** for partners who manage their own KYC and want full UX control (headless, HMAC server-to-server, no Banxa-hosted screens); **Banxa Hosted Checkout** for partners who want Banxa to handle KYC and payments (three paths: Referral URL, API, or an SDK — React Native, iOS, Android, Flutter, or JS Native Payments). Both use the same sandbox and production environments at `https://api.banxa-sandbox.com` and `https://api.banxa.com`.\n\n## When to use Banxa\n\nReach for Banxa when a product needs to let people **buy crypto with fiat or sell crypto for fiat** without the partner holding money-transmitter or VASP licences. Banxa is the licensed counterparty: it takes the payment, runs compliance, and delivers the asset. Typical fits are wallets, exchanges, dApps, gaming platforms and fintech apps adding an on-ramp or off-ramp.\n\nPick the product by who owns KYC:\n\n- **Banxa Native API** - the partner already runs its own KYC and wants no Banxa screens at all. Headless, HMAC-signed server-to-server, partner owns the entire interface. Needs a backend. Days to weeks to integrate.\n- **Banxa Hosted Checkout** - the partner does not want to run KYC. Banxa handles identity, payment and delivery in its own flow, reached by redirect, embedded iFrame, or an SDK (React Native, iOS, Android, Flutter, JS Native Payments). No backend required for the referral path. Hours to days to integrate.\n- **Legacy API** - existing integrations only. Do not start here.\n\nBanxa is not the right tool for crypto-to-crypto swaps, custody or wallet infrastructure, or for any flow where the partner wants to settle funds itself.\n\n## Constraints\n\n- **Authentication**: HMAC credentials must be stored server-side only, never expose in frontend, mobile, or client-side code. HMAC is required for all Native API calls and for KYC sharing in Hosted Checkout; `x-api-key` is used for all other Hosted Checkout endpoints.\n- **`externalCustomerId`**: Required on every buy and sell order. Use a stable opaque identifier, never PII.\n- **`identityReference`**: Must remain constant for the same user across all requests. Must not contain PII. If you attempt to create an identity for an email that already exists, you will receive a 422 / code 81, so retrieve the existing record rather than retrying creation. Use `GET /eapi/v0/identities/{identityReference}?email=user@example.com` to look up the real `identityReference` linked to an email.\n- **`quoteId`**: Only supported by `POST /eapi/v0/ramps` (bank transfer). The React Native SDK and Embedded Payment Button do not accept a `quoteId`, so use indicative pricing (`GET /eapi/v0/price`) for SDK and Embedded Payment Button flows.\n- **Quotes**: Indicative prices are not rate-locked, so refresh close to order creation to minimise rate drift. Locked quotes (`GET /eapi/v0/quote`) expire after approximately 3 minutes and are only valid for bank transfer ramp creation.\n- **Eligibility gate**: Never create a ramp or invoke the SDK when `paymentReady` is `false`. Always check eligibility and satisfy all requirements before payment execution.\n- **Webhooks**: Verify all inbound webhook signatures with HMAC-SHA256 before processing. Return HTTP 200 immediately and process asynchronously.\n- **Product selection**: Banxa Native is for partners who manage their own KYC. Banxa Hosted Checkout is for partners who do not do KYC. These are separate products with separate flows: do not mix endpoints across products.\n- **SDK scope**: The React Native SDK has no `banxa.customerIdentity` module. Identity and KYC are handled through the Native API only. `primerCallbacks` and `primerSettings` are Native context only and must not be referenced in Hosted Checkout integrations.\n- **Payment method naming**: Never use \"eAPI\" or \"EAPI\" as a product name. The correct name is \"Banxa Native API\". The URL path prefix `/eapi/` is correct and should not be changed.\n"}}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"flutter-sdk-reference","__idx":0},"children":["Flutter SDK Reference"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For the complete documentation index, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docs.banxa.com/llms.txt"},"children":["llms.txt"]},". Append ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".md"]}," to any page URL for its markdown version."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Banxa Flutter SDK (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["banxa_payments_flutter"]},") is the payment execution layer of Banxa Native for Flutter apps. It is the Dart counterpart to the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/sdk/sdk-reference"},"children":["React Native SDK"]},": used alongside the Native API to present the native payment sheet for cards, Apple Pay, and Google Pay, the payment methods that cannot be handled through the API alone due to PCI requirements."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Bank transfers are handled directly by the Native API and do not involve the SDK. For the end-to-end integration walkthrough, see the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/guides/foundations"},"children":["Integration Guide"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"which-parts-are-relevant-for-banxa-native","__idx":1},"children":["Which parts are relevant for Banxa Native"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Your backend still owns orchestration"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In a Banxa Native integration your backend handles pricing, identity, and eligibility through the Native API. The SDK's role is limited to payment execution: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaPayments.startPayment"]}," and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaPayments.checkoutEvents"]}," stream."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SDK also ships catalog, quote, and eligibility helpers that call partner-api v2 under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-api-key"]},". Prefer the equivalent Native API endpoints for those, so that configuration, pricing, and eligibility stay on one HMAC-authenticated surface. The helpers are documented below for completeness."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"requirements","__idx":2},"children":["Requirements"]},{"$$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":"Requirement"},"children":["Requirement"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Version"},"children":["Version"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Dart"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":[">=3.12.2 <4.0.0"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Flutter"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":[">=3.44.9"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["iOS"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["15.0 and above"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Android"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["minSdk 24 and above"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The plugin ships iOS and Android implementations only."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You also need a Banxa partner account, which supplies the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiKey"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["partnerId"]}," used to configure the SDK."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"installation","__idx":3},"children":["Installation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add the dependency to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pubspec.yaml"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"dependencies:\n  banxa_payments_flutter: 0.1.0\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Or from the command line:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sh","header":{"controls":{"copy":{}}},"source":"flutter pub add banxa_payments_flutter:0.1.0\n","lang":"sh"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Pin the exact version"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Pin ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["0.1.0"]},". Do not use a caret range: this is a preview release and Android native checkout is still on a Primer Checkout beta pin (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["3.0.0-beta.2"]},"; iOS is on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2.49.0"]},")."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Do not depend on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["banxa_payments_flutter_ios"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["banxa_payments_flutter_android"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["banxa_payments_flutter_platform_interface"]}," directly. Only the umbrella package is a supported dependency."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"ios-deployment-target","__idx":4},"children":["iOS deployment target"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Set the iOS deployment target to 15.0 in Xcode. After ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["flutter pub get"]},", build once with Flutter before opening the iOS project in Xcode:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sh","header":{"controls":{"copy":{}}},"source":"flutter build ios --config-only\n","lang":"sh"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Skipping this can leave Xcode showing a 13.0 minimum, and plugin resolution fails."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Primer adds native binary size. Measure with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["flutter build appbundle --analyze-size"]}," and an iOS archive if binary size matters for your app."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"permissions","__idx":5},"children":["Permissions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The plugin merges ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INTERNET"]}," on Android. Hosted checkout and Primer may open the camera or photo library for KYC document capture, and those permissions must be declared in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["host app"]},"."]},{"$$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":"Platform"},"children":["Platform"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Declare"},"children":["Declare"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["iOS (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Info.plist"]},")"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NSCameraUsageDescription"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NSPhotoLibraryUsageDescription"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NSMicrophoneUsageDescription"]}," if you enable video KYC"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Android (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AndroidManifest.xml"]},")"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["android.permission.CAMERA"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Missing iOS usage strings crash the app when capture starts."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SDK is TLS only (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https"]},") and does not certificate-pin."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"configuration","__idx":6},"children":["Configuration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["configure"]}," once per process, before any other SDK method. Re-calling it replaces the HTTP client and rebinds checkout listeners."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"import 'package:banxa_payments_flutter/banxa_payments_flutter.dart';\n\nawait BanxaPayments.configure(\n  const BanxaConfig(\n    apiKey: 'YOUR_API_KEY',\n    partnerId: 'your-partner-id',\n    environment: BanxaEnvironment.sandbox,\n  ),\n);\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"banxaconfig","__idx":7},"children":["BanxaConfig"]},{"$$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":"Parameter"},"children":["Parameter"]},{"$$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":["apiKey"]}]},{"$$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 Banxa API key from the Partner Dashboard."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["partnerId"]}]},{"$$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 partner identifier."]}]},{"$$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":["BanxaEnvironment"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Defaults to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaEnvironment.sandbox"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["applePayMerchantIdentifier"]}]},{"$$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":["Apple Pay merchant identifier, for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["merchant.com.example"]},". Primer refuses Apple Pay without it."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["applePayMerchantName"]}]},{"$$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":["Fallback name for the Apple Pay sheet, used only when the Primer client session does not carry a merchant name."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["configure"]}," also takes an optional ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["httpClient"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"await BanxaPayments.configure(config, httpClient: myClient);\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All partner-api traffic is issued from Dart, so it appears in the DevTools network view and can be intercepted, logged, or mocked with your own ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["http.Client"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"environments","__idx":8},"children":["Environments"]},{"$$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":"BanxaEnvironment"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaEnvironment"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Host"},"children":["Host"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sandbox"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://api.banxa-sandbox.com"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["preprod"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://api.banxa-preprod.com"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["production"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://api.banxa.com"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Requests go to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{host}/{partnerId}/v2"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-api-key"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Content-Type: application/json"]},". Sandbox and production credentials are separate and are not interchangeable."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"starting-a-payment","__idx":9},"children":["Starting a payment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["startPayment"]}," creates the order and launches checkout in one call. It returns a sealed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaCheckoutLaunch"]}," telling you which route was taken."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"final launch = await BanxaPayments.startPayment(\n  const CreateOrderRequest(\n    orderType: OrderType.buy,\n    crypto: 'ETH',\n    fiat: 'EUR',\n    fiatAmount: '40',\n    walletAddress: '0x0000000000000000000000000000000000000000',\n    email: 'user@example.com',\n    redirectUrl: 'https://example.com/redirect',\n    paymentMethodId: 'debit-credit-card',\n    blockchain: 'ETH',\n  ),\n);\n\nswitch (launch) {\n  case BanxaPrimerCheckoutLaunched():\n    // Primer is on screen. Wait for checkoutEvents.\n  case BanxaHostedCheckoutRequired():\n    Navigator.of(context).push(\n      MaterialPageRoute<void>(\n        builder: (_) => Scaffold(\n          appBar: AppBar(title: const Text('Checkout')),\n          body: BanxaHostedCheckoutView(checkout: launch),\n        ),\n      ),\n    );\n}\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"launch-results","__idx":10},"children":["Launch results"]},{"$$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":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaPrimerCheckoutLaunched"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The order returned a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["nativeToken"]},", the payment method can run on this device, and Primer has been presented. Outcomes arrive on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkoutEvents"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaHostedCheckoutRequired"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No usable native route. Render ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaHostedCheckoutView"]}," with this value. Carries ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkoutUrl"]}," and the request's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redirectUrl"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Both types expose the created ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order"]}," as a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateOrderResponse"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the order has neither a usable native route nor a valid Banxa ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https"]}," checkout URL, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["startPayment"]}," throws ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NativeCheckoutNotEligibleException"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On iOS, Primer presents a single payment method (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["showPaymentMethod"]},"). On Android, Primer Checkout 3.x presents the methods from the client session; the requested Banxa method is still recorded natively."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Gate on eligibility before you call startPayment"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["startPayment"]}," does not call any eligibility endpoint. Call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /eapi/v0/eligibility"]}," from your backend and confirm ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentReady: true"]}," before invoking the SDK, so you can drive the KYC remediation loop from the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requirements[]"]}," array."]},{"$$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"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SDK does not accept a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["quoteId"]},". Use indicative pricing from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /eapi/v0/price"]}," and re-price close to the point of payment to reduce rate drift."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"creating-an-order-without-presenting-checkout","__idx":11},"children":["Creating an order without presenting checkout"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"final order = await BanxaPayments.createOrder(request);\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["createOrder"]}," posts to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/buy"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/sell"]}," and returns the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateOrderResponse"]}," without presenting any checkout UI."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Do not create orders in advance"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Banxa checkout URLs must be loaded within about one minute of order creation. Prefer ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["startPayment"]},", which creates and presents in a single call. If you use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["createOrder"]},", present checkout immediately."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"checkout-events","__idx":12},"children":["Checkout events"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Subscribe to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaPayments.checkoutEvents"]}," before calling ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["startPayment"]},". The stream carries outcomes from both native Primer checkout and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaHostedCheckoutView"]},"."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"BanxaPayments.checkoutEvents.listen((event) {\n  switch (event) {\n    case BanxaCheckoutCompleted(:final paymentId, :final orderId, :final status):\n      // Success.\n    case BanxaCheckoutFailed(:final message):\n      // Error.\n    case BanxaCheckoutDismissed():\n      // Sheet closed.\n  }\n});\n","lang":"dart"},"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":"Event"},"children":["Event"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Fires when"},"children":["Fires when"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Fields"},"children":["Fields"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaCheckoutCompleted"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The customer completed payment."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]},", all ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaCheckoutFailed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Any checkout failure."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]},", a short reason, never a URL"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaCheckoutDismissed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The customer closed checkout, or the hosted WebView was disposed before a terminal URL."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["none"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}," may be null on Android. Primer may emit ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dismissed"]}," after ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completed"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]},", so treat the events as distinct rather than mutually exclusive."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Completion identifiers are read from Primer or from hosted-checkout query parameters (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]},", plus ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_id"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order_id"]}," aliases). Raw URLs are never surfaced to your app."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Checkout events are a UI signal, not the authoritative order state. Confirm the final state from ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/transaction-lifecycle/webhooks"},"children":["webhooks"]}," before you credit a customer."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"hosted-checkout-fallback","__idx":13},"children":["Hosted checkout fallback"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["startPayment"]}," returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaHostedCheckoutRequired"]},", render ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaHostedCheckoutView"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"BanxaHostedCheckoutView(checkout: launch)\n","lang":"dart"},"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":"Parameter"},"children":["Parameter"]},{"$$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":["checkout"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaHostedCheckoutRequired"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The launch result from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["startPayment"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Behaviour to design around:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The view reports on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkoutEvents"]}," and never pops itself. Dismiss it yourself when a terminal event arrives."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Disposing it before a terminal URL emits ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaCheckoutDismissed"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A first page that has not loaded within 30 seconds emits ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaCheckoutFailed"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The first URL must be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https"]}," on a Banxa-owned host: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["banxa.com"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["banxa-sandbox.com"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["banxa-preprod.com"]},", including subdomains. Later navigations may leave Banxa for bank or wallet pages during 3DS, but must stay ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["JavaScript is enabled for the hosted UI. There is no JavaScript bridge into your app."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"apple-pay-and-google-pay","__idx":14},"children":["Apple Pay and Google Pay"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Apple Pay requires a merchant identifier and the matching ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["com.apple.developer.in-app-payments"]}," entitlement, added in Xcode under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signing & Capabilities, Apple Pay"]},"."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"await BanxaPayments.configure(\n  const BanxaConfig(\n    apiKey: 'YOUR_API_KEY',\n    partnerId: 'your-partner-id',\n    applePayMerchantIdentifier: 'merchant.com.yourcompany.yourapp',\n    applePayMerchantName: 'Your Store',\n  ),\n);\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["startPayment"]}," returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaHostedCheckoutRequired"]}," instead of presenting Primer when:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["No ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["applePayMerchantIdentifier"]}," is configured."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The app is running on the iOS simulator. Apple Pay does not run on the simulator."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The device has no usable card in Wallet."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The request is for Apple Pay on Android."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Google Play services are missing, for Google Pay."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/guides/apple-pay"},"children":["Apple Pay"]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/guides/google-pay"},"children":["Google Pay"]}," for platform setup."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"models","__idx":15},"children":["Models"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"createorderrequest","__idx":16},"children":["CreateOrderRequest"]},{"$$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":"Field"},"children":["Field"]},{"$$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":["orderType"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OrderType"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OrderType.buy"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OrderType.sell"]},". Selects ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /buy"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /sell"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["crypto"]}]},{"$$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":["Crypto asset symbol, for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ETH"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fiat"]}]},{"$$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":["Fiat currency code, for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EUR"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fiatAmount"]}]},{"$$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":["Fiat amount as a string."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["walletAddress"]}]},{"$$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":["Destination wallet address."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["email"]}]},{"$$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":["Customer email address."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redirectUrl"]}]},{"$$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":["URL the customer returns to after hosted checkout."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}]},{"$$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":["Your order id."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentMethodId"]}]},{"$$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":["Banxa payment method slug, for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apple-pay"]},". Required in practice: native checkout is skipped without it."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["blockchain"]}]},{"$$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":["Explicit blockchain network."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cryptoAmount"]}]},{"$$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":["Crypto amount when ordering by crypto value."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["walletAddressTag"]}]},{"$$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":["Tag or memo for chains that require it."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subPartnerId"]}]},{"$$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":["Sub-partner identifier."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metadata"]}]},{"$$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":["Opaque metadata string."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCustomerId"]}]},{"$$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":["Your customer identifier. Pass the same value you use as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["identityReference"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalOrderId"]}]},{"$$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":["Your order reference."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["discountCode"]}]},{"$$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":["Promotion or discount code."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["crypto"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fiat"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fiatAmount"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["walletAddress"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["email"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redirectUrl"]}," are validated locally before the request is sent. A blank value throws ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ValidationException"]}," with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FieldError"]}," per missing field."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"A missing memo can permanently lose funds"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["XRP, XLM, EOS, and ATOM require a memo or tag. Pass it as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["walletAddressTag"]},". An on-ramp to one of these chains without the memo can be unrecoverable."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"createorderresponse","__idx":17},"children":["CreateOrderResponse"]},{"$$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":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Banxa order id."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkoutUrl"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Hosted checkout URL. Drives the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaHostedCheckoutRequired"]}," route."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["nativeToken"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Primer client token. Present when native checkout is available."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Order status at creation."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentMethodId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Catalog slug. Numeric wire values are stringified."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentMethodType"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payment method type."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderType"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["buy"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sell"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fiat"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fiatAmount"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["crypto"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cryptoAmount"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["blockchain"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Echoed order amounts and assets."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["walletAddress"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["walletAddressTag"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Echoed destination."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCustomerId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalOrderId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Echoed partner references."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["createdAt"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["updatedAt"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Timestamps."]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"catalog-and-quote-helpers","__idx":18},"children":["Catalog and quote helpers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These call partner-api v2 under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-api-key"]}," and require a configured SDK. In a Banxa Native integration, prefer the equivalent Native API endpoints so that configuration and pricing stay on the HMAC-authenticated surface."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"final countries = await BanxaPayments.fetchCountries();\nfinal fiats = await BanxaPayments.fetchFiats(orderType: OrderType.buy);\nfinal cryptos = await BanxaPayments.fetchCrypto(orderType: OrderType.buy);\nfinal methods = await BanxaPayments.fetchPaymentMethods(\n  orderType: OrderType.buy,\n  fiat: 'USD',\n);\n","lang":"dart"},"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":"Method"},"children":["Method"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Endpoint"},"children":["Endpoint"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Returns"},"children":["Returns"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fetchCountries()"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /countries"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["List<Country>"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fetchFiats({required orderType})"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /fiats/{buy|sell}"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["List<Fiat>"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fetchCrypto({required orderType})"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /crypto/{buy|sell}"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["List<Crypto>"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fetchPaymentMethods({required orderType, fiat})"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /payment-methods/{buy|sell}"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["List<PaymentMethod>"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fetchQuotes({required orderType, required request})"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /quotes/{buy|sell}"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["List<Quote>"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"catalog-types","__idx":19},"children":["Catalog types"]},{"$$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":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Fields"},"children":["Fields"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Country"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["states: List<CountryState>"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CountryState"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Fiat"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description?"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["symbol?"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["supportedPaymentMethods: List<FiatPaymentMethod>"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FiatPaymentMethod"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["name?"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["minimum?"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maximum?"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Crypto"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description?"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["blockchains: List<Blockchain>"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Blockchain"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description?"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isDefaultBlockchain?"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["address?"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["network?"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["minimum?"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["unsupportedCountries: Map<String, List<String>>"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PaymentMethod"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["name?"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description?"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["supportedFiats: List<String>"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["unsupportedCountries"]},", the key is a country code and the value is the restricted state codes. An empty list means the whole country is restricted."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"quotes","__idx":20},"children":["Quotes"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"final quotes = await BanxaPayments.fetchQuotes(\n  orderType: OrderType.buy,\n  request: const QuoteRequest(\n    paymentMethodId: 'debit-credit-card',\n    crypto: 'ETH',\n    blockchain: 'ETH',\n    fiat: 'AUD',\n    fiatAmount: '200',\n  ),\n);\n","lang":"dart"},"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":"QuoteRequest field"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["QuoteRequest"]}," field"]},{"$$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":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentMethodId"]}]},{"$$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":["Payment method slug."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["crypto"]}]},{"$$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":["Crypto asset symbol."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["blockchain"]}]},{"$$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":["Blockchain network."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fiat"]}]},{"$$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":["Fiat currency code."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fiatAmount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Conditional"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Provide this or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cryptoAmount"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cryptoAmount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Conditional"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Provide this or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fiatAmount"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCustomerId"]}]},{"$$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":["Your customer identifier."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ipAddress"]}]},{"$$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":["Customer IP for regional pricing."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["discountCode"]}]},{"$$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":["Promotion or discount code."]}]}]}]}]},{"$$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":"Quote field"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Quote"]}," field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentMethodId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payment method the quote applies to."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cryptoAmount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Crypto the customer receives."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fiatAmount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Fiat the customer spends."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processingFee"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Banxa processing fee in fiat."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["networkFee"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Blockchain network fee in fiat."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["discount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["QuoteDiscount?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Present when a discount code was applied. Carries ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["discountCode"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["originalQuote: QuoteOriginalAmounts?"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["originalFiatAmount"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["originalCryptoAmount"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["originalProcessingFee"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["originalNetworkFee"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fetchQuotes"]}," returns a list because Banxa returns multiple entries when discount codes apply. Quotes carry no quote id and are not accepted by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["startPayment"]},". Do not cache them: call immediately before showing a price."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"eligibility-helper","__idx":21},"children":["Eligibility helper"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"final eligibility = await BanxaPayments.checkEligibility(request);\nif (eligibility.paymentReady == true) {\n  await BanxaPayments.startPayment(request);\n}\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkEligibility"]}," posts the same body as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["createOrder"]}," to partner-api ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /eligibility"]}," and returns:"]},{"$$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":"EligibilityResponse field"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EligibilityResponse"]}," field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Eligibility check identifier."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentReady"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bool?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Whether the customer can pay now."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kycRequirements"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["List<String>"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Outstanding KYC requirement identifiers."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String?"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Human-readable detail."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is opt-in, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["startPayment"]}," never calls it. For a Banxa Native integration, use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /eapi/v0/eligibility"]}," from your backend instead: it returns the full ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requirements[]"]}," dictionary you need to drive remediation, on the HMAC-authenticated surface. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/how-it-works/interpreting-eligibility"},"children":["Interpreting Eligibility"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"primer-session-updates","__idx":22},"children":["Primer session updates"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"await BanxaPayments.updatePrimerSession(\n  primerToken: 'PRIMER_CLIENT_TOKEN',\n  savedCard: false,\n);\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["updatePrimerSession"]}," posts to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/primer/session"]}," for mid-flow session patches, and accepts an optional ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["additionalFields"]}," map of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["String"]}," values. Most integrations do not need it."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"error-handling","__idx":23},"children":["Error handling"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every SDK failure is a subclass of the sealed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaPaymentsException"]},", which exposes a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]},". Catch the sealed type and switch on the subclass."]},{"$$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":"Exception"},"children":["Exception"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Cause"},"children":["Cause"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SdkNotConfiguredException"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A method was called before ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BanxaPayments.configure"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MissingCredentialsException"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiKey"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["partnerId"]}," was blank. Exposes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fields"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UnauthorizedException"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["HTTP 401. Check the key matches the environment."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ValidationException"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["HTTP 400 or 422, or local field validation. Exposes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["errors: List<FieldError>"]},", each with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["field"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["messages"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ServerException"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Any other non-success HTTP status. Exposes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["statusCode"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NetworkException"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transport failure, including TLS errors and timeouts."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CheckoutFailedException"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Native Primer presentation failed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NativeCheckoutNotEligibleException"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The order has no usable native Primer path and no valid hosted ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkoutUrl"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UnknownException"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unexpected local failure, for example a JSON decode error."]}]}]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"dart","header":{"controls":{"copy":{}}},"source":"try {\n  await BanxaPayments.startPayment(request);\n} on ValidationException catch (e) {\n  for (final error in e.errors) {\n    debugPrint('${error.field}: ${error.messages.join(', ')}');\n  }\n} on BanxaPaymentsException catch (e) {\n  debugPrint(e.message);\n}\n","lang":"dart"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Show user-facing messages only from validated error fields. Do not expose raw error strings that may include internal detail. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/getting-started/error-codes"},"children":["Error Codes"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"not-available-in-the-sdk","__idx":24},"children":["Not available in the SDK"]},{"$$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":"Capability"},"children":["Capability"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Use instead"},"children":["Use instead"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Identity creation, KYC sharing, document sharing"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Native API. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/how-it-works/identity-kyc"},"children":["Identity and KYC"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The full eligibility ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requirements[]"]}," dictionary"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /eapi/v0/eligibility"]}," from your backend"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Locked pricing (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["quoteId"]},")"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Bank transfer ramps only. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/how-it-works/quotes-and-pricing"},"children":["Quotes and Pricing"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Order lookup and reconciliation"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/transaction-lifecycle/webhooks"},"children":["Webhooks"]}," and the Native API"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"google-pay-approval","__idx":25},"children":["Google Pay approval"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When your Android app presents Google Pay, Google requires app-level approval before you can process live payments. Banxa's own approval does not cover payments presented inside your app. Start the approval process early: it is the most common cause of a delayed Android launch. See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/guides/google-pay"},"children":["Google Pay guide"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"payment-methods-and-supported-fiats","__idx":26},"children":["Payment methods and supported fiats"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Availability varies by partner, region, and order type. Treat ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fetchPaymentMethods"]}," or the Native API configuration endpoints as the source of truth. The table below is a static reference."]},{"$$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":"Payment method id"},"children":["Payment method id"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Supported fiats"},"children":["Supported fiats"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["debit-credit-card"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AED"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ARS"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AUD"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BRL"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CAD"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CHF"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CZK"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DKK"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EUR"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GBP"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["HKD"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IDR"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INR"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["JPY"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["KRW"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MXN"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MYR"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NGN"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NOK"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NZD"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PHP"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PLN"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["QAR"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RUB"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SAR"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SEK"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SGD"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["THB"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TRY"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TWD"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["USD"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VND"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ZAR"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["google-pay"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AUD"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EUR"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["USD"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apple-pay"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AUD"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EUR"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GBP"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["USD"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payid-bank-transfer"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AUD"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pix"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BRL"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["zar-bank-transfer"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ZAR"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pse"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["COP"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["khipu"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CLP"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["interac-bank-transfer"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CAD"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["klarna-paynow"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EUR"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ideal-bank-transfer"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AUD"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EUR"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sepa-bank-transfer"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EUR"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["gbp-bank-transfer"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GBP"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["spei"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MXN"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":27},"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/guides/foundations"},"children":["Integration Guide"]},": end-to-end walkthrough."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/guides/apple-pay"},"children":["Apple Pay"]},": merchant identifier and entitlement setup."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/guides/google-pay"},"children":["Google Pay"]},": app approval and platform setup."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/guides/cards"},"children":["Cards"]},": 3D Secure setup."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/native-api/docs/how-it-works/interpreting-eligibility"},"children":["Interpreting Eligibility"]},": the requirements dictionary and remediation loop."]}]}]},"headings":[{"value":"Flutter SDK Reference","id":"flutter-sdk-reference","depth":1},{"value":"Which parts are relevant for Banxa Native","id":"which-parts-are-relevant-for-banxa-native","depth":2},{"value":"Requirements","id":"requirements","depth":2},{"value":"Installation","id":"installation","depth":2},{"value":"iOS deployment target","id":"ios-deployment-target","depth":3},{"value":"Permissions","id":"permissions","depth":3},{"value":"Configuration","id":"configuration","depth":2},{"value":"BanxaConfig","id":"banxaconfig","depth":3},{"value":"Environments","id":"environments","depth":3},{"value":"Starting a payment","id":"starting-a-payment","depth":2},{"value":"Launch results","id":"launch-results","depth":3},{"value":"Creating an order without presenting checkout","id":"creating-an-order-without-presenting-checkout","depth":3},{"value":"Checkout events","id":"checkout-events","depth":2},{"value":"Hosted checkout fallback","id":"hosted-checkout-fallback","depth":2},{"value":"Apple Pay and Google Pay","id":"apple-pay-and-google-pay","depth":2},{"value":"Models","id":"models","depth":2},{"value":"CreateOrderRequest","id":"createorderrequest","depth":3},{"value":"CreateOrderResponse","id":"createorderresponse","depth":3},{"value":"Catalog and quote helpers","id":"catalog-and-quote-helpers","depth":2},{"value":"Catalog types","id":"catalog-types","depth":3},{"value":"Quotes","id":"quotes","depth":3},{"value":"Eligibility helper","id":"eligibility-helper","depth":2},{"value":"Primer session updates","id":"primer-session-updates","depth":2},{"value":"Error handling","id":"error-handling","depth":2},{"value":"Not available in the SDK","id":"not-available-in-the-sdk","depth":2},{"value":"Google Pay approval","id":"google-pay-approval","depth":2},{"value":"Payment methods and supported fiats","id":"payment-methods-and-supported-fiats","depth":2},{"value":"Next steps","id":"next-steps","depth":2}],"frontmatter":{"title":"Flutter SDK Reference","description":"Complete reference for the Banxa Flutter SDK, the payment execution layer of Banxa Native in Flutter apps, covering configuration, startPayment, checkout events, hosted fallback, models, and error handling.","seo":{"title":"Flutter SDK Reference"}},"lastModified":"2026-09-04T06:00:19.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/native-api/docs/sdk/flutter-sdk-reference","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}