Test Accounts
Simulate every payment outcome in the sandbox using magic phone numbers, each with its own test OTP.
Test Accounts
When using a sk_test_… key, the ePay sandbox recognises a set of magic phone numbers that trigger specific outcomes — no real money moves, no real OTPs are sent. Use them to exercise every branch of your integration before going live.
These numbers only work in test mode. Swap in your sk_live_… key and
they behave like ordinary customer phones.
Magic Phone Numbers
Each test number has its own fixed OTP. Enter the corresponding code when the checkout prompts for verification.
| Phone Number | OTP | Scenario | What happens |
|---|---|---|---|
251900000000 | 000111 | Test | Generic sandbox account. Use this for general integration smoke-tests. The payment completes successfully with no special behaviour. |
251900000001 | 123456 | Success | Payment completes immediately and a payment.success webhook event is dispatched to your configured endpoint. |
251900000002 | 654321 | Invalid OTP | The OTP verification step returns an INVALID_OTP error, simulating a customer who enters the wrong code. |
251900000003 | 111111 | Expired OTP | The OTP is rejected with an OTP_EXPIRED error, simulating a customer who waits too long before submitting the code. |
251900000004 | — | Payment Failed | The provider declines the charge and a payment.failed webhook event is dispatched. Use this to verify your failure-handling and retry logic. |
Scenario guide
Happy path
Use 251900000001 → OTP 000111 → transaction completes, webhook fires payment.success.
OTP errors
Use 251900000002 or 251900000003 to verify your checkout UI shows the right error message to the customer.
Payment failure
Use 251900000004 to confirm your system handles payment.failed gracefully — refunds, retries, or customer notifications.
General smoke-test
Use 251900000000 as a neutral account when the specific outcome doesn't matter.
Tips
- Idempotency keys still apply in test mode. If you reuse a key you'll get the cached response, not a new scenario trigger — generate a fresh key per test run.
- Webhooks fire in test mode. Point
callbackUrlat a tool like Webhook.site to inspect payloads without deploying a receiver. - Amounts are irrelevant — magic numbers trigger the same outcome regardless of the amount you send.