Test data

The numbers, cards and accounts that determine the outcome of your trials — one table per payment method.

Valid with a test key only

This data exists in the test environment only. In production it is rejected like any other invalid input.

Mobile Money

The phone number determines the transaction outcome. Each country has its own numbers, for both collecting and paying out.

  • COMPLETED — the transaction succeeds.
  • FAILED — the transaction fails, with a specific reason.
  • SUBMITTED — the transaction stays in progress, to test how you handle waiting.

Providers : MTN_MOMO_CMR, ORANGE_CMR

docs.sandboxNumbers.dialCodeHint +237

Payments (deposits)

docs.sandboxNumbers.numberNationalResultfailureCode
653456019FAILEDPAYER_LIMIT_REACHED
653456029FAILEDPAYER_NOT_FOUND
653456039FAILEDPAYMENT_NOT_APPROVED
653456069FAILEDUNSPECIFIED_FAILURE
653456129SUBMITTED
653456789COMPLETED

Withdrawals (payouts)

docs.sandboxNumbers.numberNationalResultfailureCode
653456089FAILEDRECIPIENT_NOT_FOUND
653456119FAILEDUNSPECIFIED_FAILURE
653456129SUBMITTED
653456789COMPLETED

Cards

On the test payment page, the number entered determines the outcome. Expiry date: any future date. CVC: any three digits.

NumberNetworkResult
Visa3-D Secure required — authentication step, then payment accepted
VisaPayment accepted
VisaInsufficient funds
VisaCard declined by the bank
Visa3-D Secure required, then declined after authentication
MastercardPayment accepted

Expiry date: any future date. CVC: any three digits. These are Stripe's test cards: they only work with a kpay_test_ key.

Customer abandons

A customer may close the tab without paying. The transaction then stays pending and no webhook is sent. Test data lets you reproduce this case.

The most commonly missed case

An abandoned transaction is neither a success nor a failure. Make sure your integration does not treat it as paid, and set an order expiry.

Related resources

Was this page helpful?

K-PAY — Mobile Money and card payments across Central Africa.