Mobile Money Payout Testing (Francophone Africa)

This guide explains how to test mobile money payouts to Francophone Africa in the sandbox environment using specific MSISDNs (phone numbers).

Overview

When testing payouts to mobile money wallets in countries like Ivory Coast, Senegal, and Benin in the sandbox environment, you can simulate various scenarios by using specific test phone numbers (MSISDNs). This allows you to verify your integration’s handling of successful transfers, failures, and specific error conditions.

Supported Currencies & Countries

The following currencies are supported for this payout method:

CurrencyCodeSupported Countries
West African CFA FrancXOFBenin (BJ), Burkina Faso (BF), Ivory Coast (CI), Senegal (SN), Togo (TG)
Central African CFA FrancXAFCameroon (CM), Gabon (GA)

Supported Providers

The following table outlines the supported providers for each country. Ensure the operator field matches one of the valid codes for the destination country.

CountrySupported Providers (Codes)
Ivory Coast (CI)mtn, orange, moov, wave
Senegal (SN)orange, free, wave
Benin (BJ)moov, celtiis, wave
Burkina Faso (BF)moov, orange*, wave
Togo (TG)moov, wave
Cameroon (CM)mtn, orange
Gabon (GA)airtel, moov

Note: Provider availability may vary. The codes listed above are the most common for each region.

Test Scenario Mapping

Use the following MSISDNs (phone numbers) to trigger specific transaction states and errors in the sandbox environment.

MSISDNResultDescription
00000001SuccessTransaction completes successfully immediately.
00000002SuccessTransaction completes successfully after a delay.
00000003PendingTransaction remains in a pending (blocked) state.
00000100FailedAuthentication with the provider failed.
00000200FailedFailed for an unknown reason.
00000202FailedBlocked due to suspicion of fraud.
00000203FailedThe provider blocked the transaction.
00000204FailedInvalid parameters provided.
00000206FailedThe amount is invalid.
00000207FailedThe transaction was canceled.
00000208FailedThe destination is not allowed.
00000209FailedThe currency is not supported.
00000210FailedBlocked due to fraud suspicion.
00000301FailedRate limit exceeded.
00000302FailedService is temporarily unavailable.
00000303FailedInternal system error.
00000305FailedDuplicate transaction detected.
00000400FailedThe destination account is invalid.

Provider Availability Matrix

Not all test numbers work with every provider in the sandbox environment. Use this matrix to select a compatible Country and Provider combination for your desired test case.

Country / Provider00000001 (Success)00000100 (Auth Fail)00000200 (Unknown)Supported Test Numbers
Ivory Coast (CI) - MTN00000001, 00000002, 00000003, 00000200, 00000202, 00000203, 00000400
Ivory Coast (CI) - Orange00000001, 00000002, 00000200, 00000202, 00000203, 00000400
Ivory Coast (CI) - Moov00000001, 00000002, 00000200, 00000202, 00000203, 00000400
Senegal (SN) - OrangeMost supported: 00000001, 00000002, 00000100, 00000200, 0000020300000210, 0000030100000305, 00000400
Senegal (SN) - Free00000001, 00000003, 00000200, 00000203, 00000302, 00000303, 00000400
Benin (BJ) - Moov00000001, 00000200, 00000203, 00000303
Benin (BJ) - Celtiis00000001, 00000201, 00000203
Burkina Faso (BF) - Moov00000001, 00000200
Togo (TG) - Moov00000001, 00000100, 00000200, 00000204, 00000208, 00000305
Wave (Any supported country)00000001, 00000002, 00000200, 00000203, 00000204, 00000208, 00000209, 0000030100000303, 00000305, 00000400

Recommendation: For the widest range of error simulations, we recommend testing with Senegal / Orange (orange) or Wave (wave).

Usage Examples

Testing Successful Transfer

Use the MSISDN 00000001 to simulate a successful payout. This example uses Ivory Coast (CI) and MTN.

1{
2 "merchantId": "your-merchant-id",
3 "merchantReference": "unique-reference-uuid",
4 "amount": 5000,
5 "currency": "XOF",
6 "paymentMethodId": "mobilemoney",
7 "paymentLocation": "CI",
8 "attributes": {},
9 "recipient": {
10 "type": "mobile_money",
11 "phoneNumber": "00000001",
12 "country": "CI",
13 "operator": "mtn"
14 },
15 "sender": {
16 "fullName": "John Doe"
17 }
18}

Expected Response:

1{
2 "status": "Pending",
3 "transactionId": "550e8400-e29b-41d4-a716-446655440000",
4 "message": "Transaction initiated",
5 "authState": {
6 "state": "Pending",
7 "transitionedAt": "2025-11-27T10:00:00.000Z",
8 "transactionId": "550e8400-e29b-41d4-a716-446655440000"
9 },
10 "merchantReference": "unique-reference-uuid",
11 "paymentMethodId": "mobilemoney"
12}

Testing Insufficient Funds / Failed Transaction

Use the MSISDN 00000206 to simulate a failure due to invalid amount. Ensure you use a provider that supports this error (e.g., Senegal / Orange).

1{
2 "merchantId": "your-merchant-id",
3 "merchantReference": "unique-reference-uuid",
4 "amount": 5000,
5 "currency": "XOF",
6 "paymentMethodId": "mobilemoney",
7 "paymentLocation": "SN",
8 "attributes": {},
9 "recipient": {
10 "type": "mobile_money",
11 "phoneNumber": "00000206",
12 "country": "SN",
13 "operator": "orange"
14 },
15 "sender": {
16 "fullName": "John Doe"
17 }
18}

Expected Response:

1{
2 "status": "Failed",
3 "transactionId": "550e8400-e29b-41d4-a716-446655440001",
4 "message": "Insufficient funds",
5 "authState": {
6 "state": "Failed",
7 "transitionedAt": "2025-11-27T10:05:00.000Z",
8 "transactionId": "550e8400-e29b-41d4-a716-446655440001",
9 "message": "Insufficient funds"
10 },
11 "merchantReference": "unique-reference-uuid",
12 "paymentMethodId": "mobilemoney"
13}

Important Notes

  1. Sandbox Only: These MSISDNs are for the sandbox environment only.
  2. Provider Codes: Ensure the provider matches the country. See the Supported Providers section for a complete list of valid country-provider combinations.
  3. Phone Number Format:
    • Sandbox: Phone number normalization is disabled in the sandbox environment to support specific test numbers. You must use the exact test MSISDNs listed above (e.g., 00000001) without any modifications or country codes.
    • Production: Phone numbers are automatically normalized to the required international format (e.g., adding the country code if missing, stripping + prefix). You can provide numbers in either local (e.g., 07...) or international (e.g., +225...) format.