Reference

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 NumberOTPScenarioWhat happens
251900000000000111TestGeneric sandbox account. Use this for general integration smoke-tests. The payment completes successfully with no special behaviour.
251900000001123456SuccessPayment completes immediately and a payment.success webhook event is dispatched to your configured endpoint.
251900000002654321Invalid OTPThe OTP verification step returns an INVALID_OTP error, simulating a customer who enters the wrong code.
251900000003111111Expired OTPThe OTP is rejected with an OTP_EXPIRED error, simulating a customer who waits too long before submitting the code.
251900000004Payment FailedThe 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 callbackUrl at 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.

On this page