- No wallet impact — sandbox payins do not move real funds
- Nothing is stored, and no deposit address is ever reserved
- Callbacks are not sent for sandbox payments
Trigger codes
Payouts read the trailing cents ofsource_amount. A payin cannot — its status is looked up by
merchant_reference — so the trigger is the last two digits of your reference:
Any other ending falls back to the
-00 path, so your real order ids work unchanged —
ORDER-01-1042 is an ordinary reference because only the very end counts.
Example
The sandbox checkout page
create returns a real checkout_url. Open it and you get the page your customer would see — your
amount, your reference, a choice of networks, a scannable QR code and a deposit address in the
correct format for the chain.
The address is simulated and belongs to nobody. Sending real funds to it will lose them, which is
why sandbox links are visibly
pay_sbx_.Sandbox payin IDs
Sandboxids are prefixed sbx_ and checkout tokens pay_sbx_, so they are easy to recognise and
impossible to confuse with live ones — the same convention as sb_ transaction ids on the payout
side:
create and getPayinStatus report the same id for a given reference, so you can correlate them
exactly as you would live.
Three differences from live
Sandbox stores nothing, and all three follow from that. None change the code you write — but a test asserting on them will behave differently here.
The first is because a status lookup has only your reference to work from, and a reference carries
no amount. The figures are stable across calls, so polling loops still settle.
The third is deliberate: validating a redirect host needs your merchant profile, and this path reads
nothing. Rather than skip the check, sandbox renders no redirect at all.