Test payment flows in FunnelFox before going live. Use sandbox mode, test cards, and verify subscriptions in the preview environment.
Thoroughly test your billing implementation using FunnelFox’s sandbox
environment and test cards. Simulate every scenario your customers might
encounter without processing real payments.
Only test cards work in sandbox mode. Using real card
numbers will return an error. This protects you from accidental charges
during development.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"FunnelFox","colors":{"primary":"#e18535","light":"#e18535","dark":"#e18535"},"logo":{"light":"https://mintcdn.com/funnelfox/j1sUFlbSAuzPUvc1/logo2.png?fit=max\u0026auto=format\u0026n=j1sUFlbSAuzPUvc1\u0026q=85\u0026s=96e66e531e885dda9f0f968608e3d80a","dark":"https://mintcdn.com/funnelfox/j1sUFlbSAuzPUvc1/logo2.png?fit=max\u0026auto=format\u0026n=j1sUFlbSAuzPUvc1\u0026q=85\u0026s=96e66e531e885dda9f0f968608e3d80a"},"favicon":"https://mintcdn.com/funnelfox/j1sUFlbSAuzPUvc1/logo2.png?fit=max\u0026auto=format\u0026n=j1sUFlbSAuzPUvc1\u0026q=85\u0026s=96e66e531e885dda9f0f968608e3d80a","navbar":{"links":[],"primary":{"type":"button","label":"Dashboard","href":"https://app.funnelfox.com"}},"footer":{"socials":{"x":"https://x.com/Funnelfoxhq","linkedin":"https://linkedin.com/company/funnelfoxhq"}},"integrations":{"ga4":{"measurementId":"G-P77PNGGTRP"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"funnelfox","hasAudioNarration":false,"actualSubdomain":"funnelfox","customDomains":["funnelfox.com"],"gitSource":{"type":"github","owner":"adaptyteam","repo":"funnelfox-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae205b9b8d58072c02166c0","collectionId":"da6f31c1-8269-4a82-96e6-526ad1470c4c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae205b9b8d58072c02166c0"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae205b9b8d58072c02166c0","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"FunnelFox","count":127},{"language":"default","tag":"Developer Docs","count":87},{"language":"default","tag":"FunnelFox Payments","count":81},{"language":"default","tag":"API reference","count":48},{"language":"default","tag":"Release Notes","count":47},{"language":"default","tag":"Changelog","count":47},{"language":"default","tag":"Integrations","count":43},{"language":"default","tag":"Webhook reference","count":42},{"language":"default","tag":"2025","count":34},{"language":"default","tag":"Editor","count":33}],"searchSettings":{"maxResults":6}},"assistantConfig":{"enableStarterQuestions":false},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".psp-compare table td:nth-child(n+2),.psp-compare table th:nth-child(n+2){text-align:center;vertical-align:middle}.psp-compare table td:first-child,.psp-compare table th:first-child{text-align:left;white-space:nowrap}"}],"page":{"pagePath":"billing/testing","slug":"/billing/testing","pageMetadata":{"title":"Testing billing \u0026 payments","boost":1.5,"sidebarTitle":"Testing","description":"Test payment flows in FunnelFox before going live. Use sandbox mode, test cards, and verify subscriptions in the preview environment.","href":"/billing/testing"},"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: \"Test payment flows in FunnelFox before going live. Use sandbox mode, test cards, and verify subscriptions in the preview environment.\"\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`,input:`input`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Frame,Heading,OptimizedImage,Step,Steps,Tab,Tabs,Warning}=_components;if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Thoroughly test your billing implementation using FunnelFox’s sandbox\nenvironment and test cards. Simulate every scenario your customers might\nencounter without processing real payments.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Only test cards work in sandbox mode. Using real card\nnumbers will return an error. This protects you from accidental charges\nduring development.`})}),`\n`,_jsx(Heading,{level:`2`,id:`test-environment`,children:`Test environment`}),`\n`,_jsx(_components.p,{children:`FunnelFox Payments provides a complete sandbox for testing:`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Funnels preview`,children:_jsx(_components.p,{children:`Use test cards work in preview mode only.`})}),_jsx(Step,{title:`Sandbox indicators`,children:_jsxs(_components.p,{children:[`Look for `,_jsx(_components.strong,{children:`Sandbox`}),` badges in the dashboard `,_jsx(_components.strong,{children:`Subscriptions`}),` page when using test\ncredentials. This confirms your sandbox transactions.`]})})]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/funnelfox/NwpkaNmNWSvzaj7D/assets/sandbox-environment.png?fit=max\u0026auto=format\u0026n=NwpkaNmNWSvzaj7D\u0026q=85\u0026s=f2d4bf0ee0935b7b6242a0d12092e66a`,\"data-og-width\":`1920`,width:`1920`,\"data-og-height\":`879`,height:`879`,\"data-path\":`assets/sandbox-environment.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/funnelfox/NwpkaNmNWSvzaj7D/assets/sandbox-environment.png?w=280\u0026fit=max\u0026auto=format\u0026n=NwpkaNmNWSvzaj7D\u0026q=85\u0026s=c11d16aed16d90ff21ec27fb43417625 280w, https://mintcdn.com/funnelfox/NwpkaNmNWSvzaj7D/assets/sandbox-environment.png?w=560\u0026fit=max\u0026auto=format\u0026n=NwpkaNmNWSvzaj7D\u0026q=85\u0026s=6bbbd6ca8ba042e87c2edc237cb826f2 560w, https://mintcdn.com/funnelfox/NwpkaNmNWSvzaj7D/assets/sandbox-environment.png?w=840\u0026fit=max\u0026auto=format\u0026n=NwpkaNmNWSvzaj7D\u0026q=85\u0026s=2445a1e0d792d4bfaaad44bf01fed7f2 840w, https://mintcdn.com/funnelfox/NwpkaNmNWSvzaj7D/assets/sandbox-environment.png?w=1100\u0026fit=max\u0026auto=format\u0026n=NwpkaNmNWSvzaj7D\u0026q=85\u0026s=cc74e0bf037c90ff7ac6fedb3a1eccdf 1100w, https://mintcdn.com/funnelfox/NwpkaNmNWSvzaj7D/assets/sandbox-environment.png?w=1650\u0026fit=max\u0026auto=format\u0026n=NwpkaNmNWSvzaj7D\u0026q=85\u0026s=48c71def713fdbb640e77558075d9788 1650w, https://mintcdn.com/funnelfox/NwpkaNmNWSvzaj7D/assets/sandbox-environment.png?w=2500\u0026fit=max\u0026auto=format\u0026n=NwpkaNmNWSvzaj7D\u0026q=85\u0026s=80f413e51ed516cadc9a8776f9505b4d 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`test-cards`,children:`Test cards`}),`\n`,_jsx(_components.p,{children:`Test cards you use depend on the PSP processing your transactions.`}),`\n`,_jsx(Heading,{level:`3`,id:`successful-payment-cards`,children:`Successful payment cards`}),`\n`,_jsx(_components.p,{children:`Use these cards to simulate successful transactions:`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Stripe`,id:`stripe`,children:[_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Number`}),`: `,_jsx(_components.code,{children:`4242 4242 4242 4242`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Expiry date`}),`: Any valid future date (e.g., `,_jsx(_components.code,{children:`12/34`}),`)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`CVC`}),`: Any three-digit CVC`]}),`\n`]}),_jsxs(_components.p,{children:[`Find more `,_jsx(_components.a,{href:`https://docs.stripe.com/testing`,children:`Stripe test cards`}),` for successful payment.`]})]}),_jsxs(Tab,{title:`Adyen`,id:`adyen`,children:[_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Number`}),`: `,_jsx(_components.code,{children:`5454 5454 5454 5454`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Expiry date`}),`: `,_jsx(_components.code,{children:`03/2030`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`CVC`}),`: `,_jsx(_components.code,{children:`737`})]}),`\n`]}),_jsxs(_components.p,{children:[`Find more `,_jsx(_components.a,{href:`https://docs.adyen.com/development-resources/test-cards-and-credentials/test-card-numbers`,children:`Adyen test cards`}),` for successful payment.`]})]}),_jsxs(Tab,{title:`Checkout.com`,id:`checkout-com`,children:[_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Number`}),`: `,_jsx(_components.code,{children:`5436031030606378`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Expiry date`}),`: Any future date in `,_jsx(_components.code,{children:`MM/YY`}),` format`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`CVC`}),`: Any three-digit CVV`]}),`\n`]}),_jsxs(_components.p,{children:[`Find more `,_jsx(_components.a,{href:`https://www.checkout.com/docs/developer-resources/testing/test-cards`,children:`Checkout.com test cards`}),` for successful payment.`]})]}),_jsx(Tab,{title:`Other`,id:`other`,children:_jsx(_components.p,{children:`For other payment service providers, refer to their official documentation to find the appropriate test card numbers and testing requirements.`})})]}),`\n`,_jsx(Heading,{level:`3`,id:`declined-payment-cards`,children:`Declined payment cards`}),`\n`,_jsx(_components.p,{children:`Test failure scenarios with these cards:`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Stripe`,id:`stripe-2`,children:[_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Number`}),`: `,_jsx(_components.code,{children:`4000 0000 0000 0002`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Expiry date`}),`: Any valid future date (e.g., `,_jsx(_components.code,{children:`12/34`}),`)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`CVC`}),`: Any three-digit CVC`]}),`\n`]}),_jsxs(_components.p,{children:[`Find more `,_jsx(_components.a,{href:`https://docs.stripe.com/testing`,children:`Stripe test cards`}),` for declined payment.`]})]}),_jsxs(Tab,{title:`Adyen`,id:`adyen-2`,children:[_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Number`}),`: `,_jsx(_components.code,{children:`4111 1111 1111 1111`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Expiry date`}),`: `,_jsx(_components.code,{children:`03/2030`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`CVC`}),`: `,_jsx(_components.code,{children:`737`})]}),`\n`]}),_jsxs(_components.p,{children:[`Find more `,_jsx(_components.a,{href:`https://docs.adyen.com/development-resources/test-cards-and-credentials/test-card-numbers`,children:`Adyen test cards`}),` for declined payment.`]})]}),_jsxs(Tab,{title:`Checkout.com`,id:`checkout-com-2`,children:[_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Number`}),`: `,_jsx(_components.code,{children:`5437 8211 3539 9682`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Expiry date`}),`: Any future date in `,_jsx(_components.code,{children:`MM/YY`}),` format`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`CVC`}),`: Any three-digit CVV`]}),`\n`]}),_jsxs(_components.p,{children:[`Find more `,_jsx(_components.a,{href:`https://www.checkout.com/docs/developer-resources/testing/test-cards`,children:`Checkout.com test cards`}),` for declined payment.`]})]}),_jsx(Tab,{title:`Other`,id:`other-2`,children:_jsx(_components.p,{children:`For other payment service providers, refer to their official documentation to find the appropriate test card numbers and testing requirements.`})})]}),`\n`,_jsx(Heading,{level:`3`,id:`3d-secure-testing`,children:`3D Secure testing`}),`\n`,_jsx(_components.p,{children:`Test Strong Customer Authentication (SCA) flows:`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Stripe`,id:`stripe-3`,children:[_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Number`}),`: `,_jsx(_components.code,{children:`4000 0027 6000 3184`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Expiry date`}),`: Any valid future date (e.g., `,_jsx(_components.code,{children:`12/34`}),`)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`CVC`}),`: Any three-digit CVC`]}),`\n`]}),_jsxs(_components.p,{children:[`Find more `,_jsx(_components.a,{href:`https://docs.stripe.com/testing`,children:`Stripe test cards`}),` for 3D Secure.`]})]}),_jsxs(Tab,{title:`Adyen`,id:`adyen-3`,children:[_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Number`}),`: `,_jsx(_components.code,{children:`5454 5454 5454 5454`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Expiry date`}),`: `,_jsx(_components.code,{children:`03/2030`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`CVC`}),`: `,_jsx(_components.code,{children:`737`})]}),`\n`]}),_jsx(_components.p,{children:`When prompted for 3D Secure 2 text challenges:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`For web and mobile browser integrations, use password: `,_jsx(_components.code,{children:`password`})]}),`\n`,_jsxs(_components.li,{children:[`For native mobile (app-based) integrations, use password: `,_jsx(_components.code,{children:`1234`})]}),`\n`]}),_jsxs(_components.p,{children:[`Find more `,_jsx(_components.a,{href:`https://docs.adyen.com/development-resources/test-cards-and-credentials/test-card-numbers`,children:`Adyen test cards`}),` for 3D Secure.`]})]}),_jsxs(Tab,{title:`Checkout.com`,id:`checkout-com-3`,children:[_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Number`}),`: `,_jsx(_components.code,{children:`5588 6861 1642 6417`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Expiry date`}),`: Any future date in `,_jsx(_components.code,{children:`MM/YY`}),` format`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`CVC`}),`: Any three-digit CVV`]}),`\n`]}),_jsxs(_components.p,{children:[`Find more `,_jsx(_components.a,{href:`https://www.checkout.com/docs/developer-resources/testing/test-cards`,children:`Checkout.com test cards`}),` for 3D Secure.`]})]}),_jsx(Tab,{title:`Other`,id:`other-3`,children:_jsx(_components.p,{children:`For other payment service providers, refer to their official documentation to find the appropriate test card numbers and testing requirements.`})})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`3D Secure flows`}),`: These may open additional windows or iframes.\nEnsure your funnel handles these popups correctly and doesn’t block them.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`testing-scenarios`,children:`Testing scenarios`}),`\n`,_jsx(_components.p,{children:`Test the complete subscription journey:`}),`\n`,_jsxs(Tabs,{children:[_jsx(Tab,{title:`Trial to Paid`,id:`trial-to-paid`,children:_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Create product with 7-day trial.`}),`\n`,_jsx(_components.li,{children:`Purchase with test card.`}),`\n`,_jsx(_components.li,{children:`Verify trial status in dashboard.`}),`\n`,_jsx(_components.li,{children:`Simulate trial.`}),`\n`,_jsx(_components.li,{children:`Confirm conversion to paid.`}),`\n`]})}),_jsx(Tab,{title:`Renewal`,id:`renewal`,children:_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Create subscription several minutes long.`}),`\n`,_jsx(_components.li,{children:`Purchase with test card.`}),`\n`,_jsx(_components.li,{children:`Verify renewal charge.`}),`\n`,_jsx(_components.li,{children:`Check invoice generation.`}),`\n`]})}),_jsx(Tab,{title:`Failed Payment`,id:`failed-payment`,children:_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Set up subscription.`}),`\n`,_jsx(_components.li,{children:`Simulate payment failure.`}),`\n`,_jsx(_components.li,{children:`Verify retry attempts.`}),`\n`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`test-checklist`,children:`Test checklist`}),`\n`,_jsx(_components.p,{children:`Before going live, verify these scenarios:`}),`\n`,_jsx(Heading,{level:`3`,id:`payment-processing`,children:`Payment processing`}),`\n`,_jsxs(_components.ul,{className:`contains-task-list`,children:[`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`Successful payment with primary card types`]}),`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`Declined payments with various reasons`]}),`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`3D Secure authentication flow`]}),`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`International cards and currencies`]}),`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`Payment method updates`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`subscription-management`,children:`Subscription management`}),`\n`,_jsxs(_components.ul,{className:`contains-task-list`,children:[`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`Free trial creation and conversion`]}),`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`Paid trial processing`]}),`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`Subscription renewals`]}),`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`Plan upgrades and downgrades`]}),`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`Pause and resume functionality`]}),`\n`,_jsxs(_components.li,{className:`task-list-item`,children:[_jsx(_components.input,{type:`checkbox`,disabled:true}),` `,`Cancellation flow`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/billing/paymentflow`,children:`Payment Flow`}),` - Understand the complete flow`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/dashboard/products`,children:`Products Setup`}),` - Configure your catalog`]}),`\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":"Testing billing \u0026 payments","boost":1.5,"sidebarTitle":"Testing","description":"Test payment flows in FunnelFox before going live. Use sandbox mode, test cards, and verify subscriptions in the preview environment.","href":"/billing/testing"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Test environment","slug":"test-environment","depth":2,"children":[]},{"title":"Test cards","slug":"test-cards","depth":2,"children":[{"title":"Successful payment cards","slug":"successful-payment-cards","depth":3,"children":[]},{"title":"Declined payment cards","slug":"declined-payment-cards","depth":3,"children":[]},{"title":"3D Secure testing","slug":"3d-secure-testing","depth":3,"children":[]}]},{"title":"Testing scenarios","slug":"testing-scenarios","depth":2,"children":[]},{"title":"Test checklist","slug":"test-checklist","depth":2,"children":[{"title":"Payment processing","slug":"payment-processing","depth":3,"children":[]},{"title":"Subscription management","slug":"subscription-management","depth":3,"children":[]}]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"funnelfox","siteName":"FunnelFox","title":"Testing billing \u0026 payments - FunnelFox","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-11T15:57:50.674Z","originalFileLocation":"billing/testing.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=\"Test payment flows in FunnelFox before going live. Use sandbox mode, test cards, and verify subscriptions in the preview environment.\">\u003cmeta data-mint-head name=\"application-name\" content=\"FunnelFox\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/funnelfox/WR6O_i08dMvZ1LJb/_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=\"/docs/mintlify-assets/_mintlify/favicons/funnelfox/WR6O_i08dMvZ1LJb/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/funnelfox/WR6O_i08dMvZ1LJb/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/funnelfox/WR6O_i08dMvZ1LJb/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/funnelfox/WR6O_i08dMvZ1LJb/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/funnelfox/WR6O_i08dMvZ1LJb/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/funnelfox/WR6O_i08dMvZ1LJb/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/funnelfox/WR6O_i08dMvZ1LJb/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/funnelfox/WR6O_i08dMvZ1LJb/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Testing billing \u0026amp; payments - FunnelFox\">\u003cmeta data-mint-head property=\"og:description\" content=\"Test payment flows in FunnelFox before going live. Use sandbox mode, test cards, and verify subscriptions in the preview environment.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FunnelFox\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://funnelfox.com/docs/billing/testing\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://funnelfox.mintlify.app/_mintlify/api/og/v2?division=Integration\u0026amp;title=Testing+billing+%26+payments\u0026amp;description=Test+payment+flows+in+FunnelFox+before+going+live.+Use+sandbox+mode%2C+test+cards%2C+and+verify+subscriptions+in+the+preview+environment.\u0026amp;theme=255e85bca02bae65bbe41ad3\u0026amp;signature=1c78bc91d69443b6f658b23b3484ba980c385fcc3d229bf4e138c0eb4e62c6fe\">\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=\"Testing billing \u0026amp; payments - FunnelFox\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Test payment flows in FunnelFox before going live. Use sandbox mode, test cards, and verify subscriptions in the preview environment.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://funnelfox.mintlify.app/_mintlify/api/og/v2?division=Integration\u0026amp;title=Testing+billing+%26+payments\u0026amp;description=Test+payment+flows+in+FunnelFox+before+going+live.+Use+sandbox+mode%2C+test+cards%2C+and+verify+subscriptions+in+the+preview+environment.\u0026amp;theme=255e85bca02bae65bbe41ad3\u0026amp;signature=1c78bc91d69443b6f658b23b3484ba980c385fcc3d229bf4e138c0eb4e62c6fe\">\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=\"/docs/mintlify-assets/_mintlify/favicons/funnelfox/WR6O_i08dMvZ1LJb/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"FunnelFox\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#e18535\">\u003clink data-mint-head rel=\"canonical\" href=\"https://funnelfox.com/docs/billing/testing\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/billing/testing.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://funnelfox.com/#organization\",\"name\":\"FunnelFox\",\"url\":\"https://funnelfox.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/funnelfox/j1sUFlbSAuzPUvc1/logo2.png?fit=max\u0026auto=format\u0026n=j1sUFlbSAuzPUvc1\u0026q=85\u0026s=96e66e531e885dda9f0f968608e3d80a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://funnelfox.com/docs#website\",\"name\":\"FunnelFox\",\"url\":\"https://funnelfox.com/docs\",\"publisher\":{\"@id\":\"https://funnelfox.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://funnelfox.com/docs/billing/testing#webpage\",\"url\":\"https://funnelfox.com/docs/billing/testing\",\"name\":\"Testing billing \u0026 payments\",\"description\":\"Test payment flows in FunnelFox before going live. Use sandbox mode, test cards, and verify subscriptions in the preview environment.\",\"dateModified\":\"2026-09-11T15:57:50.674Z\",\"isPartOf\":{\"@id\":\"https://funnelfox.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://funnelfox.com/docs/billing/testing#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://funnelfox.com/docs/billing/testing#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Getting started\",\"item\":\"https://funnelfox.com/docs/billing/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integration\",\"item\":\"https://funnelfox.com/docs/billing/integration-billing-funnelfox\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Testing billing \u0026 payments\",\"item\":\"https://funnelfox.com/docs/billing/testing\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://funnelfox.com/docs/billing/testing#article\",\"headline\":\"Testing billing \u0026 payments\",\"name\":\"Testing billing \u0026 payments\",\"description\":\"Test payment flows in FunnelFox before going live. Use sandbox mode, test cards, and verify subscriptions in the preview environment.\",\"url\":\"https://funnelfox.com/docs/billing/testing\",\"mainEntityOfPage\":{\"@id\":\"https://funnelfox.com/docs/billing/testing#webpage\"},\"dateModified\":\"2026-09-11T15:57:50.674Z\",\"publisher\":{\"@id\":\"https://funnelfox.com/#organization\"},\"isPartOf\":{\"@id\":\"https://funnelfox.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"FunnelFox\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"FunnelFox","nav":{"global":null,"tabs":[{"tab":"FunnelFox","pages":[{"title":"FunnelFox","href":"/getting-started"}]},{"tab":"FunnelFox Payments","groups":[{"group":"Getting started","pages":[{"title":"FunnelFox Payments overview","sidebarTitle":"Overview","href":"/billing"},{"title":"Billing quickstart","sidebarTitle":"Quickstart","href":"/billing/quickstart"},{"group":"Integration","pages":[{"title":"Integrate FunnelFox Payments with FunnelFox","sidebarTitle":"Integrate with FunnelFox","href":"/billing/integration-billing-funnelfox"},{"title":"Web SDK Billing integration","sidebarTitle":"Integrate with Web SDK","description":"Integrate FunnelFox Payments with the Web SDK. Handle payments, subscription events, and checkout flows programmatically.","href":"/billing/integration-web-sdk"},{"title":"Testing billing \u0026 payments","sidebarTitle":"Testing","href":"/billing/testing"}]}]},{"group":"FunnelFox Pay","pages":[{"title":"FunnelFox Pay","sidebarTitle":"Get acquiring account","description":"Accept payments on an acquiring account FunnelFox provides and configures for you, instead of bringing your own PSP.","href":"/billing/pay"}]},{"group":"Subscription Billing","pages":[{"group":"Subscription engine","pages":[{"title":"Subscription engine","sidebarTitle":"Overview","href":"/billing/subscription-engine-overview"},{"title":"Offerings","sidebarTitle":"Offerings","href":"/billing/settings-offerings"},{"title":"Price points","sidebarTitle":"Price points","href":"/billing/settings-price-points"}]},{"title":"Manage FunnelFox Payments customers","sidebarTitle":"Manage customers","href":"/billing/customers"},{"title":"Manage payments","sidebarTitle":"Manage payments","href":"/billing/payments-management"},{"title":"Consumables","sidebarTitle":"Manage consumables","href":"/billing/consumables"},{"group":"Manage subscriptions","pages":[{"title":"Overview","href":"/billing/subscription-management-overview"},{"title":"View subscriptions","href":"/billing/view-subscriptions-billing"},{"title":"Manage subscriptions","href":"/billing/manage-subscriptions-billing"},{"title":"Subscription migration","href":"/billing/subscription-migration-billing"}]}]},{"group":"Payment orchestration","pages":[{"group":"Route your payments","pages":[{"title":"Payment orchestration","sidebarTitle":"Overview","href":"/billing/payments-orchestration"},{"title":"Merchant country","sidebarTitle":"Merchant country","href":"/billing/payments-merchant-country"}]},{"title":"Tokenization","sidebarTitle":"Tokenization","href":"/billing/payments-tokenization"},{"title":"Delayed capture","sidebarTitle":"Delayed capture","href":"/billing/payments-delayed-capture"},{"title":"Airwallex integration","sidebarTitle":"Connect Airwallex","href":"/billing/airwallex"}]},{"group":"Revenue recovery","pages":[{"title":"Revenue recovery","sidebarTitle":"Retries \u0026 fallbacks","href":"/billing/payments-retries"},{"title":"3DS authentication","sidebarTitle":"3DS","href":"/billing/payments-3ds"}]},{"group":"Chargeback prevention","pages":[{"title":"Dispute alerts","sidebarTitle":"Dispute alerts","href":"/billing/disputes"}]},{"group":"Tax management","pages":[{"title":"FunnelFox Payments Taxes","sidebarTitle":"Taxes","href":"/billing/taxes"}]},{"group":"Settings","pages":[{"title":"FunnelFox Payments settings","sidebarTitle":"Settings","href":"/billing/settings"},{"title":"Webhook settings","sidebarTitle":"Webhook settings","href":"/billing/settings-webhooks"}]}]},{"tab":"Market Radar","pages":[{"title":"Market Radar","href":"/radar/overview"}]},{"tab":"Developer Docs","pages":[{"title":"Developer Docs","href":"/develop/api"}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/release-notes/changelog"}]}]},"title":"Testing billing \u0026 payments - FunnelFox","buildId":"dpl_AUojGTPodKNPTVaxVPcxnNvkSVqo","deploymentId":"dpl_AUojGTPodKNPTVaxVPcxnNvkSVqo","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-DSDQiHav.js","DynamicMarkdown-BQC1aHST.js","zoom-image-lightbox-DdOI8a7V.js","lightbox-handle-r17bVUz3.js"]}