POST /v1/merchant/sandbox/reset— wipe and optionally reseedPOST /v1/merchant/sandbox/seed-beneficiaries— generate sample beneficiaries across multiple countries and methodsPOST /v1/merchant/sandbox/seed-payouts— generate sample payouts in mixed states for UI and webhook testing
403 sandbox_only. They’re scoped to your merchant — you can’t affect another merchant’s data.
Reset
Four reset scopes:?scope= | What it does |
|---|---|
balances (default) | Wipe merchant_accounts + sandbox transactions, re-seed fresh balances. Beneficiaries, instruments, and payouts stay. |
all | Wipe payouts, instruments, beneficiaries, and sandbox transactions. Re-seed currency balances only. |
delete-all | Wipe everything. No reseed. You land at zero state. |
full-reset | Wipe everything. Re-seed balances + sample beneficiaries + sample payouts. Equivalent to a fresh merchant with demo data. |
status varies by scope:
balances→"status": "reset"all→"status": "cleaned"delete-all→"status": "deleted"full-reset→"status": "reset"with extra counts for the sample data that was re-seeded
full-reset adds beneficiaries, instruments, and payouts counts so the
dashboard can render a confirmation toast without a second call:
Seed sample beneficiaries
Creates a curated set of realistic beneficiaries across multiple countries and payment methods — useful for populating your UI or testing country-specific edge cases:beneficiaries is the number of beneficiary records created; instruments
is the number of payment instruments attached across those beneficiaries
(usually one per beneficiary, but kept separate so the response shape stays
honest if the seeder later creates multi-instrument beneficiaries).
The beneficiaries created include a mix of individual and business types, spanning several corridors — enough variety to exercise most payout flows without you having to construct PII by hand.
Seed sample payouts
Creates payouts in a mix of states —completed, failed, cancelled, manual_review, and in-flight — so you can validate your UI and webhook handling against every outcome:
created is the number of sample payouts created — one per seeded
beneficiary, cycling through the four outcome triggers (happy path, slow,
return, failure).
Requires seeded beneficiaries first. Running seed-payouts with no beneficiaries returns 422 no_beneficiaries. Call seed-beneficiaries first, or use ?scope=full-reset on the reset endpoint which seeds both.
Using these in CI
A recommended CI pattern:Before each test run, reset
POST /v1/merchant/sandbox/reset?scope=delete-all to guarantee a clean slate.Seed any baseline data your tests assume
If your tests need a starting population (e.g., dashboard snapshot tests), call
seed-beneficiaries and seed-payouts.Triggering specific scenarios (future)
Sandbox seeders produce a curated distribution — payouts in mixed states, beneficiaries across corridors. For deterministic triggering of specific engine verdicts, screening hits, or rail failures, that’s forthcoming functionality — when it lands it’ll use the?simulate= query parameter on POST /v1/payouts (sandbox-only). Watch the changelog for when it ships.
What’s different from production
See Sandbox Overview for the full list. Key points:- Rail submission is mocked — no real banks are contacted
- Timing is compressed — sandbox payouts transition to
completedin seconds - Real OFAC screening runs, but you can trigger deterministic outcomes using specific test beneficiaries
- All authentication, authorization, webhook signing, and state-machine behavior is identical to production
Next steps
Sandbox overview
What sandbox is, and how it differs from production.
Going live
Checklist for promoting from sandbox to production.