Sandbox
sandbox.kori.ml to get sandbox API keys. They are not interchangeable with
production keys, and neither environment can see the other’s data.
It is not a mock
A sandbox payment travels the same path as a real one. The mobile-money operator is simulated; everything after it is the production code. The status endpoint, settlement, your balance, thepayment_received webhook with a genuine signature, the reconciler and
the 24-hour expiry all behave exactly as they will in production.
That includes the timing: a payment does not settle instantly. It stays pending for
a few seconds first, so code that assumes an immediate answer fails here rather than in
production.
Choosing an outcome
The outcome is decided by the customer’s phone number. Your request body is byte-identical to the one you will send in production — there is no test-only field to remember to remove.202 with status: "pending", exactly like production. A few seconds later
the payment resolves as failed, and if you registered a webhook you receive the event.
What to test with each
Reach for the special numbers when you want to prove your integration survives the paths that are hard to reproduce in production:...0002(never confirms) — does your order sit unresolved rather than being marked failed? This is the most common integration bug....0003(timeout) — do you retry rather than treating it as a decline? A timeout means the answer is unknown, and the payment may still complete....0001(fails) — do you let the customer try again, and do you avoid double-charging when they do?
Wave’s hosted checkout
Wave payments return apayment_url in production, where the customer approves on Wave’s
own page. In the sandbox that URL points at a stand-in page that plays back the same
redirect, so the round trip back to your return_url (with ?ref=) is testable. The
outcome is still decided by the phone number — approving on the page changes nothing.
Payouts
Sandbox merchants are funded with a test balance, so you can create payouts immediately. The same numbers apply: pay out to+22370000001 to see a failure refund the balance.
Minimums are enforced in the sandbox exactly as in production: 100 XOF to collect,
1 000 XOF to send. See Introduction.