Africa / Mobile Money

Mobile Money is a mobile-linked wallet run by local telecom operators, available to both prepaid and postpaid customers. Users store, send, and receive funds through their mobile number — paying in shops, online, and in bills, withdrawing cash at agent outlets, and topping up airtime.

A user's account holds two separate balances: an airtime balance for calls, SMS, and data, and a wallet balance for financial transactions. dLocal interacts with the wallet balance.

Availability

Mobile Money payments are available in Cameroon, Ghana, Ivory Coast, Kenya, Rwanda, Senegal, Tanzania, and Uganda.

Mobile Money request

Most providers use DIRECT flow: a push notification is sent to the customer's mobile phone and they authorize with a PIN.

Some providers use REDIRECT flow: the customer is sent to the provider's page to complete the payment. For a full list of country and currency codes, visit the Country Reference page.

There's a specific parameter that is particularly mandatory for Ghana. Find and example request/response after the first example.

❗️

Mandatory information

Sending phone is mandatory so that the user can receive the push notification.

Direct flow

For DIRECT-flow providers, submit a payment with payment_method_flow: "DIRECT". The customer receives a push notification on their registered phone and enters their PIN to authorize.

  1. Submit payment → status: PENDING
  2. Customer authorizes via PIN push notification
  3. Status updates to PAID (webhook sent to notification_url)
1080

Example of Mobile Money push notification in Ghana.

Redirect Flow

For REDIRECT-flow providers (Wave and Orange in Senegal; OPay and Paga in Nigeria), submit with payment_method_flow: "REDIRECT". The response contains a redirect_url.

  1. Submit payment → status: PENDING, response contains redirect_url
  2. Redirect customer to redirect_url
  3. Customer completes payment on provider's page
  4. Customer returns to merchant via callback_url
  5. Status updates to PAID (webhook sent to notification_url)

callback_url is required for REDIRECT flow. The customer will not return to your site without it.

Example request

{
    "amount": 10000,
    "currency": "KES",
    "country": "KE",
    "payment_method_flow": "DIRECT",
    "payment_method_id": "MW",
    "payer": {
        "name": "David Otieno",
        "email": "[email protected]",
        "phone": "+2544832695335",
        "document": "27183121",
        "address": {
            "country": "KE",
            "state": "Nairobi",
            "city": "Nairobi",
            "zip_code": "2341",
            "street": "Lusaka Rd",
            "number": "5940"
        }
    },
    "order_id": "34545sk3483kqw0",
    "notification_url": "http://merchantsite.com/notification/new"
}
{
    "id": "D-4-a81b9060-3cde-452c-81b1-e82f2739fb47",
    "amount": 10000,
    "currency": "KES",
    "payment_method_id": "MW",
    "payment_method_type": "BANK_TRANSFER",
    "payment_method_flow": "DIRECT",
    "country": "KE",
    "bank_transfer": {},
    "ticket": {},
    "created_date": "2020-11-03T14:09:24.000+0000",
    "status": "PENDING",
    "status_detail": "The payment is pending.",
    "status_code": "100",
    "order_id": "34545sk3483kqw0",
    "notification_url": "http://google.com"
}
{
  "id": "D-4-a81b9060-3cde-452c-81b1-e82f2739fb47",
  "amount": 10000,
  "currency": "KES",
  "payment_method_id": "MW",
  "payment_method_type": "BANK_TRANSFER",
  "payment_method_flow": "DIRECT",
  "country": "KE",
  "created_date": "2020-11-03T15:11:23.000+0000",
  "status": "PAID",
  "status_detail": "The payment was paid.",
  "status_code": "200",
  "order_id": "34545sk3483kqw0",
  "notification_url": "http://merchantsite.com/notification/new"
}
{
  "amount": 1000,
  "currency": "XOF",
  "country": "SN",
  "payment_method_id": "WV",
  "payment_method_flow": "REDIRECT",
  "order_id": "ord-0002",
  "description": "Order payment",
  "notification_url": "https://merchant.com/notifications",
  "callback_url": "https://merchant.com/return",
  "payer": {
    "name": "Aminata Diallo",
    "email": "[email protected]",
    "phone": "+221771234567",
    "document": "1234567890123"
  }

Flow types by country and provider

CountryProviderCodeFlow
CameroonOrange MoneyORDIRECT
CameroonMTNMTDIRECT
GhanaMTNMTDIRECT
GhanaVodafoneVFDIRECT
GhanaAirtelTigoATDIRECT
Ivory CoastWaveWVREDIRECT
Ivory CoastOrange MoneyORDIRECT
Ivory CoastMTNMTDIRECT
KenyaSafaricom (M-Pesa)SFDIRECT
KenyaAirtelANDIRECT
RwandaMTNMTDIRECT
RwandaAirtelANDIRECT
SenegalWaveWVREDIRECT
SenegalOrange MoneyORREDIRECT
SenegalMixx by YasFMDIRECT
TanzaniaVodacomVCDIRECT
TanzaniaAirtelANDIRECT
UgandaMTNMTDIRECT
UgandaAirtelANDIRECT