Skip to main content

Overview

Sandbox is designed to help you test real production behaviors in a safe environment. In particular, you can trigger a mock deposit that follows the same processing pipeline (deposit creation → FX → settlement → webhooks) using:

What it validates

  • Your deposit lifecycle UI/state machine
  • Your webhook endpoint (signature verification + idempotency + retries)
  • Your handling of edge cases like flagged deposits

Flagging behavior (important)

Sandbox follows the same rules engine as production. As a result, simulated deposits may be flagged automatically (or you can force a flagged scenario):
  • Rate expired: If the quote/rate tied to the onramp is expired, the deposit will be flagged.
  • Forced flag: Pass should_flag=true to intentionally create a flagged deposit.
  • Re-used temporary VA: If a deposit has already been created for the same temporary virtual account / onramp context, subsequent simulated deposits may be flagged.
If you want a clean “happy path” test, create a fresh rate, then a fresh onramp, then trigger the sandbox deposit immediately.

Sandbox Bank Accounts

When testing offramps with NGN_PAYOUT settlement, use the following test bank accounts:
FieldValue
Bank code044
Account numbers0690000031, 0690000032, 0690000033, …
Increment the last digit of the account number to generate additional test accounts. Resolve them with POST /v1/banks/resolve before use — just like production.

Onramp (NGN → Crypto)

  1. Call GET /v1/rates?side=BUY to get a fresh rate_id
  2. Call POST /v1/onramps to create an onramp + virtual account
  3. Call POST /v1/sandbox/deposits with the returned onramp_id
  4. Observe status progression and confirm you receive the expected webhooks (deposit.received, then deposit.settled / deposit.failed / deposit.flagged)

Offramp (Crypto → NGN)

  1. Call POST /v1/banks/resolve to verify the test bank account
  2. Call GET /v1/rates?side=SELL to get a fresh rate_id
  3. Call POST /v1/offramps to create an offramp with NGN_PAYOUT settlement
  4. Send test crypto to the returned address
  5. Observe deposit and payout webhook events (deposit.received, deposit.settled, payout.created, payout.settled)

Next Steps

Webhooks Overview

Ensure your webhook endpoint is receiving deposit events

Webhook Verification

Verify signatures correctly and handle retries safely