How to add a Bitnob virtual card to Apple Wallet or Google Wallet, and what to expect when paying contactlessly.
This guide walks you through adding your Bitnob virtual card to Apple Wallet or Google Wallet so you can make contactless payments anywhere in the world where it is supported. Bitnob does not add your card automatically. Instead, you’ll enter your card details from the Bitnob dashboard into Apple Wallet or Google Wallet. Once your card has been added, you can use Apple Pay or Google Pay to pay in stores, in apps, and online where supported.
Before you can add a card to Apple Wallet or Google Pay, you first need a Bitnob virtual card. If you don’t have one yet, follow the Card Issuance guide to create a virtual card for a customer or team member.
You need to create a Virtual card (Customer or team member) on Bitnob Business
Your Bitnob virtual card must be active and not frozen, expired or terminated.
The card must have contactless enabled. Through the API, create it with contactless_payment: true.
Your phone software should be up to date (iOS for Apple Wallet, Android for Google Pay).
You need a stable internet connection.
Your Apple ID region must be set to the United States (US)
Adding a card to your phone does not remove it from your Bitnob dashboard. You can still see your balance, transactions and other activities as normal.
Open the Bitnob dashboard and go to your Customer or team member cards.
Click on cardholder details to reveal your card number, expiry date, CVV, and name on the Bitnob dashboard before you begin.
Copy the card number, expiry date, CVV, and cardholder name.
Never share these details with anyone else, and avoid taking a screenshot that you save or send. Close the card details screen once you have them copied.
In stores: unlock your phone (if required), then hold it near the contactless payment terminal until you see the confirmation near the card reader, the same way you would with a physical card.
In apps and online: choose Apple Pay or Google Pay/Google Wallet where available as the payment method at checkout points.
You may still be asked to confirm with Face ID, Touch ID, or your phone PIN.
Card details rejected: double check the card number, expiry date, and CVV against the Bitnob dashboard. A single wrong digit can cause this.
Card is inactive or expired: confirm the card status on Bitnob before trying again.
Verification code not received: check the phone number and email linked to your card, then ask Apple Wallet or Google Pay to resend the code. For a card issued through the API, the code arrives as the virtualcard.contactless.activation webhook, sent to the card’s webhook_url.
Payment declined at checkout: check your card balance and limits on Bitnob.
If you are still stuck, reach out to Bitnob support.
You can remove the card from Apple Wallet or Google Pay at any time. This does not close or freeze your Bitnob card.
If you get a new phone, you will need to add the card again on that device.
Your card number stays private. Apple Wallet and Google Pay use a secure, encrypted version of your card details instead of the real number.
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"Bitnob","description":"Bitnob is a financial infrastructure API for bitcoin, stablecoins, and local currency rails across Africa. Guides, API reference, and courses.","colors":{"primary":"#00A57F","light":"#00E4AF","dark":"#00795D"},"logo":{"light":"https://mintcdn.com/bitnob/1gUqO4UxgycXihsV/logo/light.svg?fit=max\u0026auto=format\u0026n=1gUqO4UxgycXihsV\u0026q=85\u0026s=d85bd0bfb85b47fa764bc1ff421b8ce8","dark":"https://mintcdn.com/bitnob/1gUqO4UxgycXihsV/logo/dark.svg?fit=max\u0026auto=format\u0026n=1gUqO4UxgycXihsV\u0026q=85\u0026s=e86a2938d369b4849b355e94a9aa39d4"},"favicon":"https://mintcdn.com/bitnob/_7Z9zBKHf2nvKkWh/favicon.svg?fit=max\u0026auto=format\u0026n=_7Z9zBKHf2nvKkWh\u0026q=85\u0026s=f807ad45c796566ee843893b0bc3345d","api":{"params":{"expanded":"closed"},"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python","php","go","java"],"prefill":true}},"navbar":{"links":[{"href":"https://status.bitnob.com","label":"Status"},{"href":"https://app.bitnob.com","label":"Dashboard"}],"primary":{"type":"button","label":"Get Started","href":"https://bitnob.com"}},"footer":{"socials":{"x":"https://x.com/bitnob","github":"https://github.com/bitnob","website":"https://bitnob.com"}},"search":{"prompt":"Ask a question or search the Bitnob docs"},"seo":{"metatags":{"og:site_name":"Bitnob Docs","twitter:card":"summary_large_image","twitter:site":"@bitnob","twitter:creator":"@bitnob"},"organization":{"id":"https://bitnob.com/#organization","name":"Bitnob","url":"https://bitnob.com/","logo":"https://bitnob.com/bitnob-logo.png","sameAs":["https://x.com/bitnob","https://twitter.com/Bitnob_Official","https://linkedin.com/company/bitnob","https://github.com/bitnob","https://instagram.com/Bitnob","https://youtube.com/@bitnob","https://facebook.com/bitnob","https://tiktok.com/@bitnob"]},"indexing":"navigable"},"contextual":{"options":["copy","view","assistant","download-pdf","download-spec","chatgpt","claude","perplexity","grok","devin","windsurf","cursor","vscode","mcp","add-mcp","devin-mcp"],"display":"header"},"thumbnails":{"appearance":"dark","background":"https://mintcdn.com/bitnob/6uym4cOVBRGACTcE/images/og-background.png?fit=max\u0026auto=format\u0026n=6uym4cOVBRGACTcE\u0026q=85\u0026s=05d6033949a75937f6e325be7eb98d83"},"markdown":{"schema":true,"instructions":["Bitnob API requests authenticate with an `X-Auth-Client` API key header against https://api.bitnob.com.","Always use the sandbox environment for testing. Never put live API keys in sample code.","Money amounts are integers in the smallest unit of the currency (satoshis for BTC, cents for fiat). Never use floats.","Every state-changing request takes a client-supplied `reference` and must be treated as idempotent on retry.","Quotes expire. Re-quote rather than reusing a stale quote id."]},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"bitnob","hasAudioNarration":false,"actualSubdomain":"bitnob","customDomains":["www.bitnob.dev"],"gitSource":{"type":"github","owner":"bitnob","repo":"stealthdocs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aecadec07fe6b5b8129a2aa","collectionId":"a203871d-299d-4c5c-a71a-ab8b1036668b","liveDeploymentHistoryId":"6aecadec07fe6b5b8129a2aa","schemaVersion":"v3"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aeda9e8f8ed849a5c7d8668","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Docs","count":117},{"language":"default","tag":"Business API","count":110},{"language":"default","tag":"Learn","count":106},{"language":"default","tag":"Enterprise API","count":89},{"language":"default","tag":"Bitnob Business","count":82},{"language":"default","tag":"Courses","count":82},{"language":"default","tag":"Card issuing","count":44},{"language":"default","tag":"Guides","count":43},{"language":"default","tag":"Get started","count":35},{"language":"default","tag":"Bitnob Enterprise","count":35}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[{"filePath":"playground.css","content":".pg-shell{--pg-bg:rgb(var(--background-light));--pg-fg:rgb(var(--gray-900));--pg-muted:rgb(var(--gray-500));--pg-border:rgb(var(--gray-200));--pg-field-bg:rgb(var(--background-light));--pg-field-border:rgb(var(--gray-300));--pg-placeholder:rgb(var(--gray-400));--pg-hover:rgb(var(--gray-50));--pg-primary:rgb(var(--primary));color-scheme:light;margin:1.5rem 0;border:1px solid var(--pg-border);border-radius:0.875rem;background:var(--pg-bg);overflow:hidden}.dark .pg-shell{--pg-bg:rgb(var(--gray-900));--pg-fg:rgb(var(--gray-100));--pg-muted:rgb(var(--gray-400));--pg-border:rgb(var(--gray-800));--pg-field-bg:rgb(var(--background-dark));--pg-field-border:rgb(var(--gray-800));--pg-placeholder:rgb(var(--gray-500));--pg-hover:rgb(var(--gray-800));--pg-primary:rgb(var(--primary-light));color-scheme:dark}.pg-header{padding:1rem 1.25rem;border-bottom:1px solid var(--pg-border)}.pg-title{font-size:1rem;font-weight:600;color:var(--pg-fg)}.pg-subtitle{margin-top:0.125rem;font-size:0.875rem;color:var(--pg-muted)}.pg-body{padding:1.25rem;display:flex;flex-direction:column;gap:1rem}.pg-label{display:block;font-size:0.875rem;font-weight:500;color:var(--pg-fg);margin-bottom:0.375rem}.pg-input,.pg-select,.pg-textarea{width:100%;border-radius:0.5rem;border:1px solid var(--pg-field-border);background:var(--pg-field-bg);color:var(--pg-fg);padding:0.5rem 0.75rem;font-size:0.875rem;line-height:1.5}.pg-input,.pg-textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.pg-textarea{resize:vertical}.pg-input::placeholder,.pg-textarea::placeholder{color:var(--pg-placeholder)}.pg-input:focus,.pg-select:focus,.pg-textarea:focus{outline:none;border-color:var(--pg-primary);box-shadow:0 0 0 2px rgb(var(--primary)/0.35)}.pg-row{display:flex;flex-wrap:wrap;align-items:center;gap:0.5rem}.pg-grid{display:grid;grid-template-columns:1fr;gap:1rem}@media (min-width:640px){.pg-grid{grid-template-columns:2fr 1fr}}.pg-btn-primary,.pg-btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:0.375rem;height:2.25rem;border-radius:0.75rem;padding:0 0.75rem;font-size:0.875rem;font-weight:500;cursor:pointer;transition:opacity .15s,background-color .15s}.pg-btn-primary{background:rgb(var(--primary));color:#fff;border:1px solid transparent}.pg-btn-primary:hover{opacity:.8}.pg-btn-secondary{background:var(--pg-bg);color:var(--pg-fg);border:1px solid var(--pg-border)}.pg-btn-secondary:hover{background:var(--pg-hover)}.pg-btn-primary:disabled,.pg-btn-secondary:disabled{opacity:.5;cursor:not-allowed}.pg-meta{font-size:0.75rem;color:var(--pg-muted)}.pg-check{display:inline-flex;align-items:center;gap:0.5rem;font-size:0.875rem;color:var(--pg-fg)}.pg-note{border-radius:0.5rem;padding:0.5rem 0.75rem;font-size:0.875rem;border:1px solid}.pg-error{border-color:rgb(254 202 202);background:rgb(254 242 242);color:rgb(185 28 28)}.dark .pg-error{border-color:rgb(127 29 29);background:rgb(69 10 10);color:rgb(252 165 165)}.pg-ok{border-color:rgb(167 243 208);background:rgb(236 253 245);color:rgb(4 120 87)}.dark .pg-ok{border-color:rgb(6 78 59);background:rgb(2 44 34);color:rgb(110 231 183)}.pg-warn{border-color:rgb(253 230 138);background:rgb(255 251 235);color:rgb(180 83 9)}.dark .pg-warn{border-color:rgb(120 53 15);background:rgb(69 26 3);color:rgb(253 230 138)}.pg-grid2{display:grid;grid-template-columns:1fr;gap:1rem}@media (min-width:640px){.pg-grid2{grid-template-columns:1fr 1fr}}.pg-grid3{display:grid;grid-template-columns:1fr;gap:0.75rem}@media (min-width:640px){.pg-grid3{grid-template-columns:repeat(3,1fr)}}.pg-between{margin-top:0.5rem;display:flex;align-items:center;justify-content:space-between}.pg-end{margin-top:0.5rem;display:flex;align-items:center;justify-content:flex-end}.pg-wrap{display:flex;flex-wrap:wrap;gap:0.5rem 1rem;padding-top:0.375rem}.pg-strong{font-weight:500;margin-bottom:0.25rem}.pg-file{display:block;width:100%;font-size:0.875rem;color:var(--pg-fg)}.pg-file::file-selector-button{margin-right:0.75rem;height:2.25rem;border-radius:0.75rem;border:0;padding:0 0.75rem;font-size:0.875rem;font-weight:500;color:#fff;background:rgb(var(--primary));cursor:pointer}.pg-checklabel{display:flex;align-items:center;gap:0.5rem;font-size:0.875rem;color:var(--pg-fg);cursor:pointer}.pg-checklabel-tight{display:flex;align-items:center;gap:0.375rem;font-size:0.875rem;color:var(--pg-fg);cursor:pointer}.pg-inline-label{font-size:0.875rem;font-weight:500;color:var(--pg-fg)}.pg-endpad{display:flex;align-items:flex-end;padding-bottom:0.5rem}.pg-tablewrap{overflow-x:auto;border-radius:0.5rem;border:1px solid var(--pg-border)}.pg-table{width:100%;font-size:0.875rem;border-collapse:collapse}.pg-table th{border-bottom:1px solid var(--pg-border);text-align:left;color:var(--pg-muted);font-weight:500;padding:0.5rem 0.75rem}.pg-table td{padding:0.5rem 0.75rem;color:var(--pg-fg)}.pg-table tr+tr td{border-top:1px solid var(--pg-border)}.pg-result-row{display:flex;justify-content:space-between;gap:1rem;font-size:0.875rem;padding:0.25rem 0}.pg-result-key{color:var(--pg-muted)}.pg-result-val{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--pg-fg);word-break:break-all}"}],"page":{"pagePath":"learn/playbooks/cards/contactless-cards","slug":"/learn/playbooks/cards/contactless-cards","pageMetadata":{"title":"Contactless payment","description":"How to add a Bitnob virtual card to Apple Wallet or Google Wallet, and what to expect when paying contactlessly.","href":"/learn/playbooks/cards/contactless-cards"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"How to add a Bitnob virtual card to Apple Wallet or Google Wallet, and what to expect when paying contactlessly.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Tip}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This guide walks you through adding your Bitnob virtual card to Apple Wallet or Google Wallet so you can make contactless payments anywhere in the world where it is supported. Bitnob does not add your card automatically. Instead, you’ll enter your card details from the Bitnob dashboard into Apple Wallet or Google Wallet. Once your card has been added, you can use Apple Pay or Google Pay to pay in stores, in apps, and online where supported.`}),`\n`,_jsx(Heading,{level:`2`,id:`creating-your-virtual-cards`,children:`Creating your virtual cards`}),`\n`,_jsxs(_components.p,{children:[`Before you can add a card to Apple Wallet or Google Pay, you first need a Bitnob virtual card. If you don’t have one yet, follow the `,_jsx(_components.a,{href:`/docs/card-issuing/card-issuance`,children:_jsx(_components.strong,{children:`Card Issuance`})}),` guide to create a virtual card for a customer or team member.`]}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-start`,children:`Before you start`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`You need to create a Virtual card (Customer or team member) on Bitnob Business`}),`\n`,_jsx(_components.li,{children:`Your Bitnob virtual card must be active and not frozen, expired or terminated.`}),`\n`,_jsxs(_components.li,{children:[`The card must have contactless enabled. Through the API, create it with `,_jsx(_components.code,{children:`contactless_payment: true`}),`.`]}),`\n`,_jsx(_components.li,{children:`Your phone software should be up to date (iOS for Apple Wallet, Android for Google Pay).`}),`\n`,_jsx(_components.li,{children:`You need a stable internet connection.`}),`\n`,_jsx(_components.li,{children:`Your Apple ID region must be set to the United States (US)`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Adding a card to your phone does not remove it from your Bitnob dashboard. You can still see your balance, transactions and other activities as normal.`})}),`\n`,_jsx(Heading,{level:`2`,id:`step-1-get-your-card-details-from-bitnob`,children:`Step 1: Get your card details from Bitnob`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Open the Bitnob dashboard and go to your Customer or team member cards.`}),`\n`,_jsx(_components.li,{children:`Click on cardholder details to reveal your card number, expiry date, CVV, and name on the Bitnob dashboard before you begin.`}),`\n`,_jsx(_components.li,{children:`Copy the card number, expiry date, CVV, and cardholder name.`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Never share these details with anyone else, and avoid taking a screenshot that you save or send. Close the card details screen once you have them copied.`})}),`\n`,_jsx(Heading,{level:`2`,id:`step-2-add-your-card-to-apple-wallet-iphone`,children:`Step 2: Add your card to Apple wallet (iPhone)`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Open the Wallet app on your iPhone.`}),`\n`,_jsx(_components.li,{children:`Tap the plus (+) sign in the top corner.`}),`\n`,_jsx(_components.li,{children:`Choose “Debit or Credit Card”`}),`\n`,_jsx(_components.li,{children:`Tap “Enter Card Details Manually”`}),`\n`,_jsx(_components.li,{children:`Type in the copied card number, expiry date, and CVV from your Bitnob dashboard, then tap “Next.”`}),`\n`,_jsx(_components.li,{children:`Enter the cardholder name and billing address associated with the card if asked, then tap “Next”`}),`\n`,_jsx(_components.li,{children:`If Apple asks you to verify the card, choose text message or email, then enter the code sent to you.`}),`\n`,_jsx(_components.li,{children:`Tap “Done” and Your card is now added to Apple Wallet and ready to use with Apple Pay.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-3-add-your-card-to-google-pay-android`,children:`Step 3: Add your card to Google pay (Android)`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Open the Google Pay app or the Google Wallet app on your Android phone.`}),`\n`,_jsx(_components.li,{children:`Tap the plus (+) sign to add a card.`}),`\n`,_jsx(_components.li,{children:`Choose “New Card”`}),`\n`,_jsx(_components.li,{children:`Tap “Enter card details manually”`}),`\n`,_jsx(_components.li,{children:`Type in the card number, expiry date, and CVV from your Bitnob dashboard.`}),`\n`,_jsx(_components.li,{children:`Enter the cardholder name and billing address associated with the card if asked, then tap “Save”`}),`\n`,_jsx(_components.li,{children:`If Google asks you to verify the card, choose text message or email, then enter the code sent to you.`}),`\n`,_jsx(_components.li,{children:`Once verified, your card will show as ready to use.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-4-how-to-pay`,children:`Step 4: How to pay`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`In stores:`}),` unlock your phone (if required), then hold it near the contactless payment terminal until you see the confirmation near the card reader, the same way you would with a physical card.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`In apps and online:`}),` choose Apple Pay or Google Pay/Google Wallet where available as the payment method at checkout points.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`You may still be asked to confirm with Face ID, Touch ID, or your phone PIN.`}),`\n`,_jsx(Heading,{level:`2`,id:`if-something-goes-wrong`,children:`If something goes wrong`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Card details rejected:`}),` double check the card number, expiry date, and CVV against the Bitnob dashboard. A single wrong digit can cause this.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Card is inactive or expired:`}),` confirm the card status on Bitnob before trying again.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Verification code not received:`}),` check the phone number and email linked to your card, then ask Apple Wallet or Google Pay to resend the code. For a card issued through the API, the code arrives as the `,_jsx(_components.code,{children:`virtualcard.contactless.activation`}),` webhook, sent to the card’s `,_jsx(_components.code,{children:`webhook_url`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Payment declined at checkout:`}),` check your card balance and limits on Bitnob.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`If you are still stuck, reach out to Bitnob support.`}),`\n`,_jsx(Heading,{level:`2`,id:`good-to-know`,children:`Good to know`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`You can remove the card from Apple Wallet or Google Pay at any time. This does not close or freeze your Bitnob card.`}),`\n`,_jsx(_components.li,{children:`If you get a new phone, you will need to add the card again on that device.`}),`\n`,_jsx(_components.li,{children:`Your card number stays private. Apple Wallet and Google Pay use a secure, encrypted version of your card details instead of the real number.`}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Contactless payment","description":"How to add a Bitnob virtual card to Apple Wallet or Google Wallet, and what to expect when paying contactlessly.","href":"/learn/playbooks/cards/contactless-cards"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Creating your virtual cards","slug":"creating-your-virtual-cards","depth":2,"children":[]},{"title":"Before you start","slug":"before-you-start","depth":2,"children":[]},{"title":"Step 1: Get your card details from Bitnob","slug":"step-1-get-your-card-details-from-bitnob","depth":2,"children":[]},{"title":"Step 2: Add your card to Apple wallet (iPhone)","slug":"step-2-add-your-card-to-apple-wallet-iphone","depth":2,"children":[]},{"title":"Step 3: Add your card to Google pay (Android)","slug":"step-3-add-your-card-to-google-pay-android","depth":2,"children":[]},{"title":"Step 4: How to pay","slug":"step-4-how-to-pay","depth":2,"children":[]},{"title":"If something goes wrong","slug":"if-something-goes-wrong","depth":2,"children":[]},{"title":"Good to know","slug":"good-to-know","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/bitnob/a5987023060b539e/test-playground.js"],"subdomain":"bitnob","siteName":"Bitnob","title":"Contactless payment - Bitnob","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T02:20:00.497Z","originalFileLocation":"learn/playbooks/cards/contactless-cards.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"How to add a Bitnob virtual card to Apple Wallet or Google Wallet, and what to expect when paying contactlessly.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Bitnob\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/bitnob/eBFTVQiF9mXbjiUl/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/bitnob/eBFTVQiF9mXbjiUl/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/bitnob/eBFTVQiF9mXbjiUl/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/bitnob/eBFTVQiF9mXbjiUl/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/bitnob/eBFTVQiF9mXbjiUl/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/bitnob/eBFTVQiF9mXbjiUl/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/bitnob/eBFTVQiF9mXbjiUl/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/bitnob/eBFTVQiF9mXbjiUl/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/bitnob/eBFTVQiF9mXbjiUl/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Contactless payment - Bitnob\">\u003cmeta data-mint-head property=\"og:description\" content=\"How to add a Bitnob virtual card to Apple Wallet or Google Wallet, and what to expect when paying contactlessly.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Bitnob Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.bitnob.dev/learn/playbooks/cards/contactless-cards\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://bitnob.mintlify.site/_mintlify/api/og/v2?division=Card+issuing\u0026amp;title=Contactless+payment\u0026amp;description=How+to+add+a+Bitnob+virtual+card+to+Apple+Wallet+or+Google+Wallet%2C+and+what+to+expect+when+paying+contactlessly.\u0026amp;theme=1bbb91a73b5fc150fde1eea2\u0026amp;signature=0abbb709ed36a5d5c4dadfd89c0d305a03e901e9525d8a510feab6ed518dcf97\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Contactless payment - Bitnob\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How to add a Bitnob virtual card to Apple Wallet or Google Wallet, and what to expect when paying contactlessly.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://bitnob.mintlify.site/_mintlify/api/og/v2?division=Card+issuing\u0026amp;title=Contactless+payment\u0026amp;description=How+to+add+a+Bitnob+virtual+card+to+Apple+Wallet+or+Google+Wallet%2C+and+what+to+expect+when+paying+contactlessly.\u0026amp;theme=1bbb91a73b5fc150fde1eea2\u0026amp;signature=0abbb709ed36a5d5c4dadfd89c0d305a03e901e9525d8a510feab6ed518dcf97\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/bitnob/eBFTVQiF9mXbjiUl/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Bitnob\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00A57F\">\u003cmeta data-mint-head name=\"twitter:creator\" content=\"@bitnob\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.bitnob.dev/learn/playbooks/cards/contactless-cards\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/learn/playbooks/cards/contactless-cards.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://bitnob.com/#organization\",\"name\":\"Bitnob\",\"url\":\"https://bitnob.com/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://bitnob.com/bitnob-logo.png\"},\"sameAs\":[\"https://x.com/bitnob\",\"https://twitter.com/Bitnob_Official\",\"https://linkedin.com/company/bitnob\",\"https://github.com/bitnob\",\"https://instagram.com/Bitnob\",\"https://youtube.com/@bitnob\",\"https://facebook.com/bitnob\",\"https://tiktok.com/@bitnob\"]},{\"@type\":\"WebSite\",\"@id\":\"https://www.bitnob.dev#website\",\"name\":\"Bitnob\",\"url\":\"https://www.bitnob.dev\",\"publisher\":{\"@id\":\"https://bitnob.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.bitnob.dev/learn/playbooks/cards/contactless-cards#webpage\",\"url\":\"https://www.bitnob.dev/learn/playbooks/cards/contactless-cards\",\"name\":\"Contactless payment\",\"description\":\"How to add a Bitnob virtual card to Apple Wallet or Google Wallet, and what to expect when paying contactlessly.\",\"dateModified\":\"2026-11-06T02:20:00.497Z\",\"isPartOf\":{\"@id\":\"https://www.bitnob.dev#website\"},\"breadcrumb\":{\"@id\":\"https://www.bitnob.dev/learn/playbooks/cards/contactless-cards#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.bitnob.dev/learn/playbooks/cards/contactless-cards#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Playbooks\",\"item\":\"https://www.bitnob.dev/learn/playbooks/trading/how-integrators-can-make-money\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contactless payment\",\"item\":\"https://www.bitnob.dev/learn/playbooks/cards/contactless-cards\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.bitnob.dev/learn/playbooks/cards/contactless-cards#article\",\"headline\":\"Contactless payment\",\"name\":\"Contactless payment\",\"description\":\"How to add a Bitnob virtual card to Apple Wallet or Google Wallet, and what to expect when paying contactlessly.\",\"url\":\"https://www.bitnob.dev/learn/playbooks/cards/contactless-cards\",\"mainEntityOfPage\":{\"@id\":\"https://www.bitnob.dev/learn/playbooks/cards/contactless-cards#webpage\"},\"dateModified\":\"2026-11-06T02:20:00.497Z\",\"publisher\":{\"@id\":\"https://bitnob.com/#organization\"},\"isPartOf\":{\"@id\":\"https://www.bitnob.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Bitnob\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Bitnob","nav":{"global":null,"tabs":[{"tab":"Home","icon":"house","pages":[{"title":"Home","href":""}]},{"tab":"Docs","icon":"book-open","dropdowns":[{"dropdown":"Bitnob Business","icon":"bolt","description":"Payouts, cards, trading, and virtual accounts.","groups":[{"group":"Get started","icon":"rocket","expanded":true,"pages":[{"title":"Introduction to the Bitnob APIs","sidebarTitle":"Introduction","href":"/docs/getting-started/overview"},{"title":"Set up your account","href":"/docs/getting-started/account-setup"},{"title":"Bitnob Business API quickstart","sidebarTitle":"Quickstart","href":"/docs/getting-started/quickstart"},{"group":"Concepts","pages":[{"title":"Core concepts and architecture","href":"/docs/getting-started/core-concepts-and-architecture"},{"title":"Currencies and amounts","href":"/docs/getting-started/core-concepts-and-architecture/currencies-and-amounts"},{"title":"Fees and limits by product","sidebarTitle":"Fees and limits","href":"/docs/getting-started/fees-and-limits"},{"title":"Which KYC endpoint to use","sidebarTitle":"Which KYC endpoint","href":"/docs/getting-started/which-kyc-endpoint"}]},{"group":"Build reliably","pages":[{"title":"API keys and credential security","href":"/docs/getting-started/api-best-practices/api-keys-and-credentials"},{"title":"Idempotency and references","href":"/docs/getting-started/api-best-practices/idempotency-and-reference-integrity"},{"title":"Webhooks and event handling","href":"/docs/getting-started/api-best-practices/webhook-best-practices"},{"title":"Errors and retries","href":"/docs/getting-started/api-best-practices/errors-and-retries"},{"title":"Quote lifecycle and expiry","href":"/docs/getting-started/api-best-practices/quote-expiry-and-transaction-windows"},{"title":"Test in sandbox","href":"/docs/getting-started/api-best-practices/simulating-flows-and-testing-in-sandbox"},{"title":"Observability, logging, and traceability","href":"/docs/getting-started/api-best-practices/observability-logging-and-traceability"}]}]},{"group":"Bitcoin","icon":"bitcoin","pages":[{"title":"Bitcoin and Lightning on Bitnob","sidebarTitle":"Overview","href":"/docs/bitcoin/overview"},{"group":"Concepts","pages":[{"title":"LNURL and Lightning addresses","href":"/docs/bitcoin/lnurl-and-lightning-addresses"}]},{"group":"Get started","pages":[{"title":"Send bitcoin on-chain or over Lightning","href":"/docs/bitcoin/send-bitcoin"}]},{"group":"Guides","pages":[{"title":"Issue addresses and Lightning invoices","href":"/docs/bitcoin/issuing-bitcoin-addresses-and-lightning-invoices"},{"title":"Test Lightning payments in sandbox","sidebarTitle":"Test Lightning in sandbox","href":"/docs/bitcoin/test-lightning-in-sandbox"}]},{"group":"Reference","pages":[{"title":"Confirmations and webhook events","href":"/docs/bitcoin/confirmations-and-webhook-events"}]}]},{"group":"Stablecoins","icon":"coins","pages":[{"title":"Stablecoins on Bitnob","sidebarTitle":"Overview","href":"/docs/stablecoins/overview"},{"group":"Concepts","pages":[{"title":"How stablecoins work on Bitnob","href":"/docs/stablecoins/key-concepts"},{"title":"Why multiple chains","href":"/docs/stablecoins/why-support-stablecoins-on-multiple-chains"}]},{"group":"Get started","pages":[{"title":"Accept USDT and settle in naira","href":"/docs/stablecoins/accept-usdt-and-settle-in-naira"}]},{"group":"Guides","pages":[{"title":"Set up for stablecoins","href":"/docs/stablecoins/getting-started-with-stablecoins"},{"title":"Issue deposit addresses","href":"/docs/stablecoins/issuing-stablecoin-addresses"},{"title":"Receive deposits","href":"/docs/stablecoins/receiving-stablecoin-deposits"},{"title":"Send stablecoins","href":"/docs/stablecoins/sending-stablecoins"},{"title":"Transfer between wallets","href":"/docs/stablecoins/internal-wallet-to-wallet-transfers"},{"title":"Receive stablecoin webhooks","href":"/docs/stablecoins/webhooks"},{"title":"Handle transfer failures","href":"/docs/stablecoins/error-handling-and-failure-scenarios"},{"title":"Reconcile balances","href":"/docs/stablecoins/stablecoin-reconciliation-and-ledger-integrity-guide"}]},{"group":"Reference","pages":[{"title":"Stablecoin address webhook events","sidebarTitle":"Address webhook events","href":"/docs/stablecoins/address-webhook-events"},{"title":"Withdrawal webhook events","sidebarTitle":"Withdrawal webhook events","href":"/docs/stablecoins/withdrawal-webhook-events"},{"title":"Supported stablecoin chains and tokens","sidebarTitle":"Supported chains","href":"/docs/stablecoins/supported-chains"}]}]},{"group":"Trading","icon":"arrow-right-arrow-left","pages":[{"title":"Trading and currency conversion","sidebarTitle":"Overview","href":"/docs/trading/overview"},{"group":"Concepts","pages":[{"title":"How trading works","href":"/docs/trading/how-trading-works"}]},{"group":"Get started","pages":[{"title":"Swap bitcoin to USDT","href":"/docs/trading/swap-bitcoin-to-usdt"}]},{"group":"Guides","pages":[{"title":"Create a quote","href":"/docs/trading/create-quote"},{"title":"Execute a trade","href":"/docs/trading/execute-trade"},{"title":"Track orders and history","href":"/docs/trading/trade-status-and-history"},{"title":"Receive trade webhooks","href":"/docs/trading/trade-webhooks"},{"title":"Handle trading failures","href":"/docs/trading/error-handling-patterns"}]},{"group":"Reference","pages":[{"title":"Trade statuses and webhook events","sidebarTitle":"Statuses and webhook events","href":"/docs/trading/statuses-and-webhook-events"}]}]},{"group":"Payouts","icon":"money-bill-transfer","pages":[{"title":"Payouts to bank accounts and mobile money","sidebarTitle":"Overview","href":"/docs/payouts/overview"},{"group":"Concepts","pages":[{"title":"How payouts settle","href":"/docs/payouts/settlement-models"},{"title":"The payout lifecycle","href":"/docs/payouts/payouts-lifecycle"}]},{"group":"Get started","pages":[{"title":"Send your first payout","href":"/docs/payouts/send-your-first-payout"}]},{"group":"Guides","pages":[{"title":"Validate a beneficiary","href":"/docs/payouts/validate-a-beneficiary"},{"title":"Send a SWIFT payout","href":"/docs/payouts/swift-payout"},{"title":"Receive payout webhooks","href":"/docs/payouts/webhook-payout"},{"title":"Handle payout failures","href":"/docs/payouts/error-handling"},{"title":"Payouts API integration guide","href":"/api-reference/payouts/usage-example"},{"title":"The Trip timeline","href":"/docs/payouts/understanding-trip-timeline"},{"title":"Payout incident postmortem template","href":"/docs/payouts/payout-incident-postmortem"},{"title":"Troubleshooting: payout stuck in pending","href":"/docs/payouts/troubleshoot-payout-stuck"},{"title":"Troubleshooting: webhooks not received","href":"/docs/payouts/troubleshoot-webhooks-not-received"}]},{"group":"Reference","pages":[{"title":"Payout statuses and webhook events","sidebarTitle":"Statuses and webhook events","href":"/docs/payouts/statuses-and-webhook-events"},{"title":"Payout webhook events","sidebarTitle":"Webhook events","href":"/docs/payouts/webhook-events"},{"title":"Supported currencies and rails","href":"/docs/payouts/supported-currencies"},{"group":"Corridors","pages":[{"title":"Corridor behavior","href":"/docs/payouts/corridor-specific-behavior"},{"title":"Nigeria","href":"/docs/payouts/corridor-specific-behavior/nigeria-payout"},{"title":"Ghana","href":"/docs/payouts/corridor-specific-behavior/ghana-payout"},{"title":"Kenya","href":"/docs/payouts/corridor-specific-behavior/kenya-payout"}]},{"title":"Payout glossary","sidebarTitle":"Glossary","href":"/docs/payouts/glossary-terms"}]}]},{"group":"Card issuing","icon":"credit-card","pages":[{"title":"Virtual card issuing on Bitnob","sidebarTitle":"Overview","href":"/docs/card-issuing/overview"},{"group":"Concepts","pages":[{"title":"How card issuance works","href":"/docs/card-issuing/card-issuance"}]},{"group":"Get started","pages":[{"title":"Issue your first card","href":"/docs/card-issuing/issue-your-first-card"}]},{"group":"Guides","pages":[{"title":"Verify cardholders with Card KYC","sidebarTitle":"Card KYC","href":"/docs/card-issuing/card-kyc"},{"title":"Fund a card","href":"/docs/card-issuing/card-funding"},{"title":"Freeze, unfreeze, or terminate a card","href":"/docs/card-issuing/card-status-management"},{"title":"Set card spending limits","sidebarTitle":"Set spending limits","href":"/docs/card-issuing/spending-limits"},{"title":"Monitor card transactions","href":"/docs/card-issuing/transaction-monitoring"},{"title":"Receive card webhooks","href":"/docs/card-issuing/receive-card-webhooks"},{"title":"Decrypt card secured details","sidebarTitle":"Decrypt card details","href":"/docs/card-issuing/decrypt-card-details"}]},{"group":"Reference","pages":[{"title":"Webhook events","href":"/docs/card-issuing/webhooks"},{"title":"Virtual card webhook events","sidebarTitle":"Webhook payloads","href":"/docs/card-issuing/webhook-payloads"},{"title":"Fees and decline rules","href":"/docs/card-issuing/card-fees"},{"title":"Virtual card glossary","sidebarTitle":"Glossary","href":"/docs/card-issuing/virtual-card-glossary"}]}]},{"group":"Virtual accounts","icon":"building-columns","pages":[{"title":"NGN virtual accounts on Bitnob","sidebarTitle":"Overview","href":"/docs/virtual-accounts/overview"},{"group":"Get started","pages":[{"title":"Set up NGN virtual accounts","sidebarTitle":"Set up virtual accounts","href":"/docs/virtual-accounts/set-up-virtual-accounts"},{"title":"Virtual account deposit webhook","sidebarTitle":"Deposit webhook","href":"/docs/virtual-accounts/deposit-webhook"}]}]}]},{"dropdown":"Bitnob Enterprise","icon":"wallet","description":"Policy-governed wallets.","groups":[{"group":"Get started","icon":"rocket","expanded":true,"pages":[{"title":"Bitnob Enterprise API overview","sidebarTitle":"Introduction","href":"/docs/platform/overview"},{"title":"Set up your Bitnob Enterprise account","sidebarTitle":"Set up your account","href":"/docs/platform/account-setup"},{"title":"Bitnob Enterprise API quickstart","sidebarTitle":"Quickstart","href":"/docs/platform/quickstart"},{"group":"Concepts","pages":[{"title":"Bitnob Enterprise core concepts","sidebarTitle":"Core concepts","href":"/docs/platform/core-concepts"}]},{"group":"Build reliably","pages":[{"title":"Bitnob Enterprise API best practices","sidebarTitle":"Best practices","href":"/docs/platform/best-practices"}]}]},{"group":"Policies","icon":"shield-check","pages":[{"title":"Transaction policies on Bitnob Enterprise","sidebarTitle":"Overview","href":"/docs/platform/policies/overview"},{"group":"Concepts","pages":[{"title":"How Bitnob Enterprise evaluates policy rules","sidebarTitle":"How evaluation works","href":"/docs/platform/policies/how-policy-evaluation-works"},{"title":"Policy lifecycle and quorum approval","sidebarTitle":"Lifecycle and quorum","href":"/docs/platform/policies/policy-lifecycle-and-quorum"}]},{"group":"Get started","pages":[{"title":"Write and activate your first Enterprise policy","sidebarTitle":"Write your first policy","href":"/docs/platform/policies/write-and-activate-your-first-policy"}]},{"group":"Guides","pages":[{"title":"Require approval for high-value transfers","sidebarTitle":"Require approval","href":"/docs/platform/policies/require-approval-for-high-value-transfers"},{"title":"Delay large transfers with a policy time lock","sidebarTitle":"Add a time lock","href":"/docs/platform/policies/delay-large-transfers-with-a-time-lock"},{"title":"Test policy rules with dry-run evaluation","sidebarTitle":"Test with dry runs","href":"/docs/platform/policies/test-rules-with-dry-run-evaluation"},{"title":"Change an enforced Bitnob Enterprise policy","sidebarTitle":"Change a live policy","href":"/docs/platform/policies/change-an-enforced-policy"},{"title":"Handle transactions held or rejected by policy","sidebarTitle":"Handle held transactions","href":"/docs/platform/policies/handle-held-and-rejected-transactions"}]},{"group":"Reference","pages":[{"title":"Bitnob Enterprise policy rule reference","sidebarTitle":"Rule reference","href":"/docs/platform/policies/rule-reference"},{"title":"Policy statuses, errors, and webhook events","sidebarTitle":"Statuses and events","href":"/docs/platform/policies/statuses-and-webhook-events"}]}]},{"group":"Gas sponsorship","icon":"gas-pump","pages":[{"title":"Gas sponsorship on Bitnob Enterprise","sidebarTitle":"Overview","href":"/docs/platform/gas-sponsorship/overview"},{"group":"Concepts","pages":[{"title":"How Bitnob Enterprise gas stations work","sidebarTitle":"How gas stations work","href":"/docs/platform/gas-sponsorship/how-gas-stations-work"},{"title":"How Bitnob sponsored transfers work","sidebarTitle":"How sponsored transfers work","href":"/docs/platform/gas-sponsorship/how-sponsored-transfers-work"},{"title":"What users sign for a sponsored transfer, by chain","sidebarTitle":"Signing by chain","href":"/docs/platform/gas-sponsorship/signing-by-chain"}]},{"group":"Get started","pages":[{"title":"Set up a gas station for your Enterprise wallets","sidebarTitle":"Set up a gas station","href":"/docs/platform/gas-sponsorship/set-up-a-gas-station"},{"title":"Send your first sponsored transfer on Solana","sidebarTitle":"Send your first transfer","href":"/docs/platform/gas-sponsorship/send-your-first-sponsored-transfer"}]},{"group":"Guides","pages":[{"title":"Sign sponsored transfers on EVM chains","sidebarTitle":"Sign on EVM chains","href":"/docs/platform/gas-sponsorship/sign-on-evm-chains"},{"title":"Sign sponsored USDT transfers on Tron","sidebarTitle":"Sign on Tron","href":"/docs/platform/gas-sponsorship/sign-on-tron"},{"title":"Charge your own fee on sponsored transfers","sidebarTitle":"Charge a partner fee","href":"/docs/platform/gas-sponsorship/charge-a-partner-fee"},{"title":"Sweep a full stablecoin balance with gross mode","sidebarTitle":"Sweep a full balance","href":"/docs/platform/gas-sponsorship/sweep-a-full-balance"},{"title":"Handle sponsored transfer failures and expiry","sidebarTitle":"Handle failures","href":"/docs/platform/gas-sponsorship/handle-failures-and-expiry"}]},{"group":"Reference","pages":[{"title":"Gas station fields, health, and webhook events","sidebarTitle":"Gas station reference","href":"/docs/platform/gas-sponsorship/gas-station-reference"},{"title":"Sponsored transfer statuses, errors, and tracking","sidebarTitle":"Sponsored transfer statuses","href":"/docs/platform/gas-sponsorship/statuses-errors-and-events"}]}]},{"group":"Bitcoin","icon":"bitcoin","pages":[{"group":"Concepts","pages":[{"title":"Custody models","href":"/docs/bitcoin/custody-models"},{"title":"UTXO management","href":"/docs/bitcoin/utxo-management-introduction"},{"title":"Fees and confirmation strategy","href":"/docs/bitcoin/fee-market-and-transaction-strategies"}]},{"group":"Guides","pages":[{"title":"Run business-managed custody","href":"/docs/bitcoin/business-managed-non-custodial-bitcoin-wallets"},{"title":"Build self-custodial wallets","href":"/docs/bitcoin/user-managed-self-custodial-wallets"}]}]},{"group":"Use cases","icon":"briefcase","pages":[{"title":"Exchange integration guide","href":"/docs/platform/exchange-integration-guide"}]}]}]},{"tab":"Business API","icon":"code","pages":[{"title":"Business API","href":"/api-reference/authentication/authentication"}]},{"tab":"Enterprise API","icon":"wallet","pages":[{"title":"Enterprise API","href":"/docs/platform/authentication"}]},{"tab":"Playground","icon":"flask","pages":[{"title":"Playground","href":"/docs/playground/overview"}]},{"tab":"Learn","icon":"graduation-cap","groups":[{"group":"Learn","icon":"graduation-cap","pages":[{"title":"Bitnob developer courses","href":"/learn/overview"}]},{"group":"Courses","icon":"graduation-cap","pages":[{"group":"Bitcoin for product managers","icon":"bitcoin","pages":[{"title":"Bitcoin for product managers course","sidebarTitle":"Course overview","href":"/learn/courses/bitcoin-for-product-managers"},{"title":"Module 1: What Bitcoin really is","href":"/learn/courses/bitcoin-for-product-managers/module-1"},{"title":"Module 2: Private keys, public keys, and Bitcoin addresses","href":"/learn/courses/bitcoin-for-product-managers/module-2"},{"title":"Module 3: Understanding UTXOs","href":"/learn/courses/bitcoin-for-product-managers/module-3"},{"title":"Module 4: Anatomy of a Bitcoin transaction","href":"/learn/courses/bitcoin-for-product-managers/module-4"},{"title":"Module 5: How Bitcoin blocks and confirmations work","href":"/learn/courses/bitcoin-for-product-managers/module-5"},{"title":"Module 6: What a Bitcoin wallet actually does","href":"/learn/courses/bitcoin-for-product-managers/module-6"},{"title":"Module 7: Security model of Bitcoin wallets","href":"/learn/courses/bitcoin-for-product-managers/module-7"},{"title":"Module 8: Wallet product architecture mapping","href":"/learn/courses/bitcoin-for-product-managers/module-8"},{"title":"Module 9: Designing a Bitcoin wallet for real users","href":"/learn/courses/bitcoin-for-product-managers/module-9"},{"title":"Module 10: Adding Bitcoin to existing custodial wallets","href":"/learn/courses/bitcoin-for-product-managers/module-10"},{"title":"Module 11: Bitcoin address types, batching and webhooks","href":"/learn/courses/bitcoin-for-product-managers/module-11"},{"title":"Module 12: Designing Bitcoin payment products for merchants","href":"/learn/courses/bitcoin-for-product-managers/module-12"},{"title":"Module 13: Bitcoin liquidity and treasury for wallets","href":"/learn/courses/bitcoin-for-product-managers/module-13"},{"title":"Module 14: Bitcoin product and UX guidelines","href":"/learn/courses/bitcoin-for-product-managers/module-14"},{"title":"Module 15: Bitcoin security operations for companies","href":"/learn/courses/bitcoin-for-product-managers/module-15"},{"title":"Module 16: Bitcoin product revenue models","href":"/learn/courses/bitcoin-for-product-managers/module-16"},{"title":"Module 17: Key performance indicators for Bitcoin products","href":"/learn/courses/bitcoin-for-product-managers/module-17"},{"title":"Module 18: Marketing Bitcoin products","href":"/learn/courses/bitcoin-for-product-managers/module-18"},{"title":"Module 19: Bitcoin products for refugees and activists","href":"/learn/courses/bitcoin-for-product-managers/module-19"},{"title":"Module 20: Adopting Bitcoin responsibly as a company","href":"/learn/courses/bitcoin-for-product-managers/module-20"},{"title":"Module 21: Final reflections and action tasks","href":"/learn/courses/bitcoin-for-product-managers/module-21"}]},{"group":"Card issuing","icon":"credit-card","pages":[{"title":"Virtual card issuing course","sidebarTitle":"Course overview","href":"/learn/courses/card-issuing"},{"title":"Module 1: What virtual cards actually are","href":"/learn/courses/card-issuing/module-1"},{"title":"Module 2: Card lifecycle from a product perspective","href":"/learn/courses/card-issuing/module-2"},{"title":"Module 3: Registering card users","href":"/learn/courses/card-issuing/module-3"},{"title":"Module 4: Issuing a card","href":"/learn/courses/card-issuing/module-4"},{"title":"Module 5: Funding virtual cards","href":"/learn/courses/card-issuing/module-5"},{"title":"Module 6: Spend transactions and monitoring","href":"/learn/courses/card-issuing/module-6"},{"title":"Module 7: Freezing, unfreezing, and terminating cards","href":"/learn/courses/card-issuing/module-7"},{"title":"Module 8: Managing card limits","href":"/learn/courses/card-issuing/module-8"},{"title":"Module 9: Fees, cross-border charges, and revenue modeling","href":"/learn/courses/card-issuing/module-9"},{"title":"Module 10: Restricted merchant categories (MCCs)","href":"/learn/courses/card-issuing/module-10"},{"title":"Module 11: Refunds, reversals, and chargebacks","href":"/learn/courses/card-issuing/module-11"},{"title":"Module 12: Designing card UX for trust and clarity","href":"/learn/courses/card-issuing/module-12"},{"title":"Module 13: Card operations and support playbook","href":"/learn/courses/card-issuing/module-13"},{"title":"Module 14: Card-based product use cases and strategy","href":"/learn/courses/card-issuing/module-14"},{"title":"Module 15: Fraud patterns and spend abuse","href":"/learn/courses/card-issuing/module-15"},{"title":"Module 16: Metrics and KPIs for card products","href":"/learn/courses/card-issuing/module-16"},{"title":"Module 17: Marketing and distributing card products","href":"/learn/courses/card-issuing/module-17"},{"title":"Module 18: The full value chain of virtual cards","href":"/learn/courses/card-issuing/module-18"},{"title":"Module 19: BINs: identification, validation and strategy","href":"/learn/courses/card-issuing/module-19"},{"title":"Module 20: Authorizations, silent transactions, pre-auths","href":"/learn/courses/card-issuing/module-20"},{"title":"Module 21: Compliance and security for virtual cards","href":"/learn/courses/card-issuing/module-21"},{"title":"Module 22: How virtual card programs are built and run","href":"/learn/courses/card-issuing/module-22"},{"title":"Module 23: Capstone project and final reflections","href":"/learn/courses/card-issuing/module-23"}]},{"group":"Card fraud","icon":"user-secret","pages":[{"title":"Virtual card fraud course","sidebarTitle":"Course overview","href":"/learn/courses/card-fraud"},{"title":"Module 1: Introduction to virtual card fraud","href":"/learn/courses/card-fraud/module-1"},{"title":"Module 2: Understanding and preventing virtual card fraud","href":"/learn/courses/card-fraud/module-2"},{"title":"Module 3: Fraud incident response and investigation","href":"/learn/courses/card-fraud/module-3"},{"title":"Module 4: MCC \u0026 BIN-Based threats and controls","href":"/learn/courses/card-fraud/module-4"},{"title":"Module 5: Refund, reversal, and chargeback abuse","href":"/learn/courses/card-fraud/module-5"},{"title":"Module 6: Transaction pattern detection","href":"/learn/courses/card-fraud/module-6"},{"title":"Module 7: Designing controls \u0026 prevention systems","href":"/learn/courses/card-fraud/module-7"},{"title":"Module 8: Logging, audit trails, and incident reporting","href":"/learn/courses/card-fraud/module-8"},{"title":"Module 9: Compliance, PCI-DSS, and scheme requirements","href":"/learn/courses/card-fraud/module-9"},{"title":"Module 10: Capstone: end-to-end fraud and risk response","href":"/learn/courses/card-fraud/module-10"}]},{"group":"Payouts for product managers","icon":"money-bill-transfer","pages":[{"title":"Payouts for product managers course","sidebarTitle":"Course overview","href":"/learn/courses/payouts-for-product-managers"},{"title":"Module 1: Why moving money is different from moving data","href":"/learn/courses/payouts-for-product-managers/module-1"},{"title":"Module 2: Bitcoin and stablecoins as settlement tools","href":"/learn/courses/payouts-for-product-managers/module-2"},{"title":"Module 3: Stored balances or per-payout funding","href":"/learn/courses/payouts-for-product-managers/module-3"},{"title":"Module 4: The payout lifecycle, stage by stage","href":"/learn/courses/payouts-for-product-managers/module-4"},{"title":"Module 5: Error handling in money movement products","href":"/learn/courses/payouts-for-product-managers/module-5"},{"title":"Module 6: Managing expectations: speed, fees, success rates","href":"/learn/courses/payouts-for-product-managers/module-6"},{"title":"Module 7: Treasury and liquidity 101 for PMs","href":"/learn/courses/payouts-for-product-managers/module-7"},{"title":"Module 8: Security for Bitcoin and stablecoin payouts","href":"/learn/courses/payouts-for-product-managers/module-8"},{"title":"Module 9: Onboarding, KYC/KYB and compliance for payouts","href":"/learn/courses/payouts-for-product-managers/module-9"},{"title":"Module 10: KPIs for measuring payout product success","href":"/learn/courses/payouts-for-product-managers/module-10"},{"title":"Module 11: Circular economies, regional differences","href":"/learn/courses/payouts-for-product-managers/module-11"},{"title":"Module 12: Operating principles for payment PMs","href":"/learn/courses/payouts-for-product-managers/module-12"},{"title":"Capstone project","href":"/learn/courses/payouts-for-product-managers/capstone-project"},{"title":"Payout use cases for Bitcoin and stablecoin settlement","href":"/learn/courses/payouts-for-product-managers/payouts-use-cases-unlocking-the-potential-of-bitcoin-and-stablecoin-settlement"}]},{"group":"Bitcoin Core from the CLI","icon":"terminal","pages":[{"title":"Bitcoin Core from the command line course","sidebarTitle":"Course overview","href":"/learn/courses/bitcoin-core-cli"},{"title":"Module 1: Installing \u0026 running Bitcoin Core","href":"/learn/courses/bitcoin-core-cli/module-1"},{"title":"Module 2: Bitcoin Core architecture","href":"/learn/courses/bitcoin-core-cli/module-2"},{"title":"Module 3: Wallets and addresses in Bitcoin Core","href":"/learn/courses/bitcoin-core-cli/module-3"},{"title":"Module 4: Using Regtest to simulate Bitcoin","href":"/learn/courses/bitcoin-core-cli/module-4"},{"title":"Module 5: Transactions and UTXO control","href":"/learn/courses/bitcoin-core-cli/module-5"},{"title":"Module 6: Blocks and blockchain state","href":"/learn/courses/bitcoin-core-cli/module-6"},{"title":"Module 7: Working with Bitcoin RPC","href":"/learn/courses/bitcoin-core-cli/module-7"},{"title":"Module 8: Developing with Bitcoin Core locally","href":"/learn/courses/bitcoin-core-cli/module-8"},{"title":"Capstone project: Bitcoin Core CLI automation","href":"/learn/courses/bitcoin-core-cli/capstone-project"}]}]},{"group":"Playbooks","icon":"book-open-reader","pages":[{"group":"Trading","icon":"arrow-right-arrow-left","pages":[{"title":"How integrators can make money","href":"/learn/playbooks/trading/how-integrators-can-make-money"},{"title":"On designing the trading experience","href":"/learn/playbooks/trading/on-designing-the-trading-experience"},{"title":"Support manual for integrator teams","href":"/learn/playbooks/trading/support-manual-for-integrator-teams"},{"title":"Trading API revenue playbook","href":"/learn/playbooks/trading/trading-api-revenue-playbook"},{"title":"Trading revenue reporting manual","href":"/learn/playbooks/trading/trading-revenue-reporting-manual"},{"title":"Trading UX implementation guidelines","description":"Concrete requirements for quote presentation, countdowns, states, and error handling in a trading UI.","href":"/learn/playbooks/trading/trading-ux-implementation-guidelines"}]},{"group":"Card issuing","icon":"credit-card","pages":[{"title":"Contactless payment","href":"/learn/playbooks/cards/contactless-cards"},{"title":"Marketing virtual cards: Best practices and playbook","description":"Messaging, campaign ideas, and legal boundaries for growth teams selling virtual cards.","href":"/learn/playbooks/cards/marketing-virtual-cards"},{"title":"Virtual card support team playbook","href":"/learn/playbooks/cards/support-team-playbook"},{"title":"Virtual card treasury \u0026 finance operations playbook","href":"/learn/playbooks/cards/treasury-and-finance-operations-playbook"},{"title":"Virtual card fraud \u0026 compliance playbook","href":"/learn/playbooks/cards/virtual-card-fraud-and-compliance-playbook"},{"title":"Zero to card business toolkit","href":"/learn/playbooks/cards/zero-to-card-business-toolkit"}]},{"group":"Stablecoins","icon":"coins","pages":[{"title":"Stablecoin operations guide","href":"/learn/playbooks/stablecoins/operations-guide"},{"title":"Stablecoins UX best practices","href":"/learn/playbooks/stablecoins/ux-best-practices"},{"title":"Blockchain explorer guide","href":"/learn/playbooks/stablecoins/blockchain-explorer-guide"}]},{"group":"Bitcoin","icon":"bitcoin","pages":[{"title":"Security and compliance for non-custodial Bitcoin wallets","href":"/learn/playbooks/bitcoin/security-and-compliance"},{"title":"Threat models and security risks","href":"/learn/playbooks/bitcoin/threat-models-and-security-risks"},{"title":"Fatal mistakes to avoid","href":"/learn/playbooks/bitcoin/fatal-mistakes-to-avoid"},{"title":"Address and privacy practices","href":"/learn/playbooks/bitcoin/address-and-privacy-best-practices"},{"title":"Sample code architecture","href":"/learn/playbooks/bitcoin/sample-code-architecture-and-folder-structure"},{"title":"Putting it all together","href":"/learn/playbooks/bitcoin/putting-it-all-together"},{"title":"Future upgrade readiness","href":"/learn/playbooks/bitcoin/future-upgrade-readiness"}]}]}]},{"tab":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Contactless payment - Bitnob","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":[],"chunks":[]}