Sandbox is selected by the key you use. A sk_sandbox_... key hits the same base URL and
the same endpoints as live, and never moves real money.
Payouts have their own test gateway in sandbox, with three method codes — one per instrument
type:
Outcome matrix
The outcome is chosen by the last two digits of the destination. Which field that is
depends on the instrument type:
That account number ends in 02, so the payout fails — the case most integrations forget to
handle.
The processing path
A destination ending in 01 returns processing. It settles when the pending window
expires and Orchestrate next checks the payout — either on its own schedule, or immediately
if you call GET /payouts/{id}/sync.
Shorten the window so your asynchronous tests do not crawl:
Accepted range is 0 to 600 seconds.
What to rehearse before going live
- A payout that fails, and how you surface it to whoever was expecting the money.
- A payout that settles asynchronously, so you prove your
webhook handler works rather than relying on the create response.
- A duplicate
reference, which returns 409 — the guard that stops you paying twice.
- The same webhook delivered twice.
Going live
That is the whole change.
The test gateway does not exist in the live environment. test_momo,
test_bank_transfer and test_crypto are rejected outside sandbox.