Overview
Sandbox is designed to help you test real production behaviors in a safe environment. In particular, you can trigger a mock deposit for an NGN or crypto funding account:What it validates
- Your deposit lifecycle UI/state machine
- Your webhook endpoint (signature verification + idempotency + retries)
- Your handling of edge cases like deposits that require review
Flagging behavior (important)
Sandbox follows the same rules engine as production. As a result, simulated deposits may require review automatically:- Rate expired: If the quote/rate tied to the funding account is expired, the deposit will be flagged.
- Re-used temporary NGN account: If a deposit has already been created for the same temporary receive instruction, subsequent simulated deposits may be flagged.
If you want a clean happy path test, create a fresh funding account, then trigger the sandbox deposit immediately. For crypto funding accounts, you can either use this helper with
funding_account_id or send testnet USDC/USDT to the returned address.Sandbox Bank Accounts
When testing crypto funding accounts withNGN_PAYOUT settlement, use the following test bank accounts:
| Field | Value |
|---|---|
| Bank code | 044 |
| Account numbers | 0690000031, 0690000032, 0690000033, … |
POST /v1/banks/resolve before use — just like production.
Recommended end-to-end flow
NGN receive instruction
- Call
GET /v1/rates?side=BUYto get a freshrate_id - Create a sandbox NGN funding account with
rail: NGN_VIRTUAL_ACCOUNT - Call
POST /v1/sandbox/depositswith the returned funding accountidasfunding_account_id - Observe status progression and confirm you receive the expected webhooks (
deposit.received, thendeposit.completed/deposit.failed/deposit.requires_review)
Crypto funding account
- Call
POST /v1/banks/resolveto verify the test bank account - Call
GET /v1/rates?side=SELLto get a freshrate_id - Call
POST /v1/funding-accountswithrail: CRYPTO_ADDRESS,asset,chain, andNGN_PAYOUTsettlement - Call
POST /v1/sandbox/depositswith the returned funding accountidasfunding_account_id, or send test crypto to the returnedaddress - Observe deposit webhook events (
deposit.received, thendeposit.completed/deposit.failed/deposit.requires_review)
Getting Testnet USDC
To test crypto deposits in sandbox, you need testnet USDC. Use the Circle faucet to get free testnet USDC:Circle USDC Faucet
Get free testnet USDC to send to your sandbox crypto funding account addresses
Next Steps
Webhooks Overview
Ensure your webhook endpoint is receiving deposit events
Webhook Verification
Verify signatures correctly and handle retries safely