# Testing Overview

Banxa provides a full sandbox environment for integration testing. The sandbox mirrors production behaviour — you can create orders, go through the complete checkout flow, and receive webhook notifications — without processing real money or crypto.

## Sandbox environment

|  | Sandbox | Production |
|  --- | --- | --- |
| Base URL | `https://api.banxa-sandbox.com/{partner}/` | `https://api.banxa.com/{partner}/` |
| Checkout URL | `https://checkout.banxa-sandbox.com` | `https://checkout.banxa.com` |
| Real transactions | No | Yes |
| Test credentials | Yes | Real payment details only |


Replace `{partner}` with your partner name (also called your merchant name or environment name), provided during onboarding — for example, `https://api.banxa-sandbox.com/acmewallet/`.

Your sandbox credentials (API key, partner reference) are separate from production and are provided during onboarding.

## What you can test in sandbox

- The full customer checkout flow (KYC, payment, order completion)
- Webhook delivery and order status transitions
- Quote pricing and order creation via the API
- Referral URL construction and parameter pre-population
- iFrame and WebView embedding
- KYC sharing and Sumsub token integration


## Sandbox limitations

The sandbox differs from production in ways that matter for test planning:

- **No on-chain transactions.** Wallet addresses must be valid mainnet format, but no crypto moves. Testnet addresses are rejected. The `transaction_hash` field is never populated with a real hash.
- **No Sumsub connection.** The KYC sharing API accepts requests, but test user profiles are verified manually by Banxa. Ask your integration manager to verify each test user profile.
- **Manual order fulfilment.** Some orders will not progress to `complete` without Banxa manually fulfilling them. If an order appears stuck, contact your integration manager.
- **No failure simulation.** Declined and failed payment scenarios cannot currently be self-triggered; ask your integration manager to cancel or fail a specific order if you need to test those paths.
- **Stale pricing.** Sandbox rates are not refreshed at production frequency. Validate pricing accuracy in production.
- **No emails.** Sandbox does not send customer emails. Verification prompts use the fixed test PIN documented in [Sandbox Test Data](/products/hosted-checkout/docs/testing/sandbox-test-data).
- **Apple Pay and Google Pay are not testable in sandbox.**


## Testing checklist

Before requesting production access, complete the following:

- [ ] Create at least one buy order via your chosen integration method (API or Referral)
- [ ] Complete a full checkout using sandbox test credentials
- [ ] Confirm order status reaches `complete`
- [ ] Receive and handle at least one webhook notification
- [ ] Verify your `redirectUrl` is called correctly on checkout completion
- [ ] (If applicable) Test KYC sharing by calling the identity endpoint before checkout
- [ ] (If applicable) Test the off-ramp flow end-to-end (custodial: verify webhook receipt and deposit address retrieval)


## Next steps

→ [Sandbox Test Data](/products/hosted-checkout/docs/testing/sandbox-test-data) — test credentials and payment details
→ [End-to-End Testing](/products/hosted-checkout/docs/testing/end-to-end-testing) — step-by-step test flow