{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-products/hosted-checkout/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["img"]},"type":"markdown"},"seo":{"title":"Customer Journey","description":"Official Banxa API documentation – on-ramp and off-ramp transfers with identity verification and compliance.","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"customer-journey","__idx":0},"children":["Customer Journey"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This page describes the general flow that end-users experience when purchasing or selling cryptocurrency through Banxa. Understanding this journey helps you design the right integration touchpoints and set accurate customer expectations."]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/customer-journey.71f033024d07ef79682ff6778bb7bc1ccd4c704c3769abe5131961531059e4f4.c6355c35.png","alt":"customer-journey.png","withLightbox":true,"width":"","height":""},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.figma.com/proto/LuFNeO6PbtedrLicuhqFni/Quick-wins?node-id=32-227&viewport=304%2C296%2C0.19&t=pmSGYzOCqsAn0mJm-1&scaling=scale-down&content-scaling=fixed&starting-point-node-id=32%3A227&page-id=32%3A226"},"children":["View interactive prototype →"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-banxa-handles-for-your-customers","__idx":1},"children":["What Banxa handles for your customers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Banxa's checkout abstracts the complexity of crypto payments — liquidity management, regulatory compliance, and payment network integrations — so your customers interact with a streamlined, guided flow rather than raw blockchain infrastructure."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"on-ramp-buy-journey","__idx":2},"children":["On-ramp (buy) journey"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"1. Enter amount       → Customer selects crypto and fiat, views live quote\n2. Identity check     → KYC verification (first-time or tiered)\n3. Payment            → Customer pays via their chosen method\n4. Processing         → Banxa confirms payment and purchases crypto\n5. Delivery           → Crypto sent to customer's wallet address\n6. Completion         → Customer redirected to your redirectUrl\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["First-time customers"]}," will be guided through document upload and identity verification before reaching the payment step. Returning customers who are already verified may proceed directly to payment."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"off-ramp-sell-journey","__idx":3},"children":["Off-ramp (sell) journey"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"1. Enter amount       → Customer selects crypto to sell, views live quote\n2. Bank details       → Customer provides fiat payout account\n3. Identity check     → KYC verification if required\n4. Crypto transfer    → Customer (or your platform) sends crypto to Banxa\n5. Processing         → Banxa confirms receipt and arranges fiat payout\n6. Completion         → Fiat sent to customer's bank account\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For the custodial flow, your platform executes the crypto transfer on the customer's behalf after receiving a webhook notification. → See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/hosted-checkout/docs/on-ramp-off-ramp/custodial-vs-non-custodial"},"children":["Custodial vs. Non-Custodial"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"key-experience-considerations","__idx":4},"children":["Key experience considerations"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"quote-visibility","__idx":5},"children":["Quote visibility"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you use the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/hosted-checkout/docs/api-integration/api-integration-overview"},"children":["API integration"]},", you can show the customer a live quote in your own UI before they enter the Banxa checkout. This sets expectations and reduces drop-off at the payment step."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"kyc-friction","__idx":6},"children":["KYC friction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["First-time users will spend the most time in the identity verification step. You can reduce this friction significantly by using ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/hosted-checkout/docs/identity-compliance/kyc-sharing"},"children":["KYC sharing"]}," or ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/hosted-checkout/docs/identity-compliance/sumsub-integration"},"children":["Sumsub integration"]}," if you already collect identity data."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"returning-customers","__idx":7},"children":["Returning customers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Banxa recognises returning customers and avoids re-collecting information already on file. Passing a consistent ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCustomerId"]}," in every order is essential for this to work. → See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/hosted-checkout/docs/getting-started/integration-best-practices#externalcustomerid"},"children":["Integration Best Practices"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"post-checkout-return","__idx":8},"children":["Post-checkout return"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When the transaction is complete (or cancelled), the customer is redirected to your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redirectUrl"]},". Use ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/hosted-checkout/docs/transaction-lifecycle/webhooks"},"children":["webhooks"]}," to get the authoritative order status rather than relying on the redirect URL parameters alone."]}]},"headings":[{"value":"Customer Journey","id":"customer-journey","depth":1},{"value":"What Banxa handles for your customers","id":"what-banxa-handles-for-your-customers","depth":2},{"value":"On-ramp (buy) journey","id":"on-ramp-buy-journey","depth":2},{"value":"Off-ramp (sell) journey","id":"off-ramp-sell-journey","depth":2},{"value":"Key experience considerations","id":"key-experience-considerations","depth":2},{"value":"Quote visibility","id":"quote-visibility","depth":3},{"value":"KYC friction","id":"kyc-friction","depth":3},{"value":"Returning customers","id":"returning-customers","depth":3},{"value":"Post-checkout return","id":"post-checkout-return","depth":3}],"frontmatter":{"title":"Customer Journey Through Banxa Checkout | Banxa Docs","description":"Understand the end-user flow through Banxa's on-ramp and off-ramp checkout, from quote to KYC, payment, crypto delivery, and post-checkout redirect.","seo":{"title":"Customer Journey"}},"lastModified":"2026-05-19T23:30:38.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/hosted-checkout/docs/checkout-experience/customer-journey","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}