Sandbox & test values

The sandbox is a fully isolated environment (separate database) running the Simulator rail. Use it to build and test without moving real money.

  • Base URL: https://api-sandbox.starpay.example
  • Keys: sk_test_… only (live keys are rejected here)

Magic values

The instrument you send drives a deterministic outcome:

Mobile money (msisdn)

Number Outcome
0240000000 Success
0240000001 Insufficient funds
0240000002 Times out on the first attempt, then succeeds (exercises provider failover)

Card

Card number Outcome
4084 0840 8408 4081 Success
4084 0840 8408 4082 Declined

Name enquiry

Any instrument ending 0001 returns "no match" (404 not_found) — use it to exercise the recipient-verification failure path on payouts. Everything else resolves to a fixed holder name.

Rates & trades

The sandbox uses the venue simulator: the USD leg is ≈ 1.0000 and the USD/GHS FX rate is a fixed 12.50, so USDT/GHS benchmarks around 12.50. Quotes carry the standard 45s TTL — let one lapse to see rate_expired on execution.

To trade you must be approved on the ladder for sandbox (see Authentication → Service access); a sk_test_ key on a not-yet-approved merchant returns 403 compliance_block.

Stablecoin deposits (sells)

A sell creates an order awaiting an on-chain deposit to the address it returns. Custody runs on the offline custody simulator (no chain), so the deposit is simulated by delivering a Cobo-shaped, signed deposit event to the custody webhook receiver — the same path a real Cobo callback takes. Confirmation thresholds come from the asset registry (1 confirmation on TRON, 12 on Ethereum). Under/over-payments and post-expiry deposits are handled explicitly (parked for re-quote or excess-hold); watch for the deposit.confirmed and trade.settled webhooks.

These let you assert success, failure, and failover paths end-to-end before going live. Webhooks fire in the sandbox exactly as they do in production.