Skip to content

Test scenarios

The numbers, cards and accounts that force each outcome.

In sandbox the outcome is not random, it is addressed. You pick it by choosing the phone number, the card, the bank account or the wallet you pay with. Everything on this page is read straight from the platform's sandbox table.

Mobile money

A test number is an operator prefix followed by a six digit suffix that names the outcome.

The formula
number = operator_prefix + outcome_suffix

+23767      +  000002   =  +237670000002
MTN Cameroon   failure      a payment that always fails

The six suffixes

SuffixOutcomeWhat your integration sees
000000Successpayment.succeeded after about 3 seconds
000001Insufficient fundspayment.failed, the payer had no balance
000002Failurepayment.failed, refused by the operator
000003Timeoutpayment.failed, the operator never answered
000004Cancelledpayment.cancelled, the payer refused
000009Success, then a refund that failspayment.succeeded, then refund.failed

Leading zeros are tolerated

The subscriber part may carry extra leading zeros before the suffix, so +2376700000000 matches 000000 too. Anything else between the prefix and the suffix does not match, and the number is rejected as not being a test number.

Prefixes

Sixteen countries, forty four operators.

CountryOperatorPrefix
CameroonCameroonMTN MoMoMTN MoMo+23767
CameroonCameroonOrange MoneyOrange Money+23769
CameroonCameroonExpress UnionExpress Union+23768
CameroonCameroonYoomeeYoomee+23766
Ivory CoastIvory CoastMTN MoMoMTN MoMo+22505
Ivory CoastIvory CoastOrange MoneyOrange Money+22507
Ivory CoastIvory CoastMoovMoov+22501
Ivory CoastIvory CoastWaveWave+22503
Ivory CoastIvory CoastGreen+22509
NigeriaNigeriaMTNMTN+2348
NigeriaNigeriaOrangeOrange+2347
SenegalSenegalOrange MoneyOrange Money+22177
SenegalSenegalFree+22176
GhanaGhanaMTN MoMoMTN MoMo+23324
GhanaGhanaVodafone+23320
GhanaGhanaAirtelAirtel+23326
GhanaGhanaAirtelTigo+23327
KenyaKenyaM-PesaM-Pesa+25470
KenyaKenyaM-Pesa TillM-Pesa Till+25471
KenyaKenyaAirtel TillAirtel Till+25473
KenyaKenyaEquitel+25476
KenyaKenyaT-Kash+25477
TanzaniaTanzaniaAirtelAirtel+25567
TanzaniaTanzaniaTigo+25565
TanzaniaTanzaniaVodafone+25574
TanzaniaTanzaniaHaloPesa+25562
UgandaUgandaMTNMTN+25677
UgandaUgandaAirtelAirtel+25675
RwandaRwandaMTNMTN+25078
RwandaRwandaAirtelAirtel+25073
DRCDRCAirtelAirtel+24399
DRCDRCOrangeOrange+24389
DRCDRCVodacom+24381
DRCDRCExpress UnionExpress Union+24382
BeninBeninMTNMTN+22990
BeninBeninMoovMoov+22991
BeninBeninGlo+22997
Burkina FasoBurkina FasoOrangeOrange+22670
Burkina FasoBurkina FasoMoovMoov+22671
GabonGabonAirtelAirtel+2410
GabonGabonExpress UnionExpress Union+2411
CongoCongoExpress UnionExpress Union+24205
ChadChadExpress UnionExpress Union+23566
Central African RepublicCentral African RepublicExpress UnionExpress Union+23670

Worked examples

ScenarioMTN CameroonOrange Ivory CoastM-Pesa Kenya
Success+237670000000+225070000000+254700000000
Insufficient funds+237670000001+225070000001+254700000001
Failure+237670000002+225070000002+254700000002
Timeout+237670000003+225070000003+254700000003
Cancelled+237670000004+225070000004+254700000004

Cards

Any future expiry date and any CVV. Neither is validated: the card number alone decides the outcome.

Succeeds without 3D Secure

CardNetworkOutcome
4242 4242 4242 4242VisaSucceeds
5555 5555 5555 4444MastercardSucceeds
4000 0000 0000 5423VisaSucceeds, and every refund on it fails

Requires 3D Secure

Hosted checkout shows a simulated challenge. These return 202 first, and the final status arrives once the challenge is resolved.

CardOutcome of the challenge
4000 0566 5566 5556Passes, payment succeeds
4000 0025 0000 3155Passes, payment succeeds
4000 0027 6000 3184Passes, payment succeeds
4000 0025 0000 3063Authentication fails
4000 0025 0000 3089Authentication fails
4000 0025 0000 3018Authenticates, then the issuer declines
4000 0025 0000 3026Authenticates, then the issuer declines
4000 0025 0000 3034The payer abandons the challenge
4000 0025 0000 3042The payer abandons the challenge
4000 0025 0000 3050The challenge times out
4000 0025 0000 3097The challenge times out

Fails without 3D Secure

CardOutcome
4000 0000 0000 9995Insufficient funds
4000 0000 0000 0002Declined
4000 0000 0000 9987Declined
4000 0000 0000 9979Declined
4000 0000 0000 0069Declined
4000 0000 0000 0127Declined
4000 0000 0000 0119Declined
4000 0000 0000 0341Declined
4000 0000 0000 6975Declined
4242 4242 4242 4241Declined

One decline, not ten reasons

Only …9995 carries a distinct reason. The other nine produce the same generic decline, so use whichever you like when testing a failure path. A card that is not on this page is refused for not being a test card.

Bank accounts

Any account number or IBAN of at least four characters is accepted. The last two digits choose the outcome.

Ends withOutcome
00Success
01Insufficient funds
02Failure
03Timeout
04Cancelled

Anything else succeeds, so an account ending in 47 simply works.

Crypto

The crypto channel is off in sandbox unless it has been enabled for your account. When it is on, the wallet address suffix chooses the outcome.

Address ends withOutcome
_successSucceeds
_insufficientInsufficient funds
_failureFails
_timeoutTimes out
_canceledCancelled

The deposit address the API returns is derived deterministically from the payment, the channel and the scenario, so the same test twice gives the same address. It expires after 30 minutes.

Refunds

A refund's outcome comes from the original payment, not from the refund call.

The payment was made withThe refund
4000 0000 0000 5423Always fails
A number ending 000009Always fails
A number ending 000001, 000002, 000003 or 000004Fails
A number ending 000000Succeeds
Any other card, a bank account, a crypto walletSucceeds

Transfers

A payout uses the beneficiary's details, and the same suffixes apply. A mobile money beneficiary must carry a recognised test number.

The 422 when it does not
{
"message": "The given data was invalid.",
"errors": {
"beneficiary": [
"Invalid sandbox test number. Use a recognised Mobile Money test number, e.g. +237670000000 (success), +237670000001 (insufficient funds), +237670000002 (failure), +237670000003 (timeout), +237670000004 (canceled)."
]
}
}

A transfer debits your sandbox balance, so run a successful payment first, or the payout fails for lack of funds exactly as it would in live.

What did you think of this content?