---
updatedAt: 2026-07-29T10:40:56.000Z
agentTools:
  projectIndex: https://docs.dlocal.com/llms.txt
---

# Africa / Mobile Money payments

Learn how to start receiving Mobile Money payments.

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.&#x20;

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](https://docs.dlocal.com/reference/country-reference).

> 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&#x20;

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`)

<Image src="https://files.readme.io/c455d070120ac0532d648c29d6867f3c8ef409572323837ba42bbc1425e68e69-psuh_notification_mobile.png" alt="1080" align="center" width="80%" caption="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

```json Example request body
{
    "amount": 10000,
    "currency": "KES",
    "country": "KE",
    "payment_method_flow": "DIRECT",
    "payment_method_id": "MW",
    "payer": {
        "name": "David Otieno",
        "email": "dotieno@example.com",
        "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"
}
```
```json Synchronous response example
{
    "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"
}
```
```json Asynchronous response example
{
  "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"
}
```
```text Redirect request example
{
  "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": "aminata@example.com",
    "phone": "+221771234567",
    "document": "1234567890123"
  }
```

## Flow types by country and provider

| Country     | Provider           | Code | Flow       |
| ----------- | ------------------ | ---- | ---------- |
| Cameroon    | Orange Money       | `OR` | `DIRECT`   |
| Cameroon    | MTN                | `MT` | `DIRECT`   |
| Ghana       | MTN                | `MT` | `DIRECT`   |
| Ghana       | Vodafone           | `VF` | `DIRECT`   |
| Ghana       | AirtelTigo         | `AT` | `DIRECT`   |
| Ivory Coast | Wave               | `WV` | `REDIRECT` |
| Ivory Coast | Orange Money       | `OR` | `DIRECT`   |
| Ivory Coast | MTN                | `MT` | `DIRECT`   |
| Kenya       | Safaricom (M-Pesa) | `SF` | `DIRECT`   |
| Kenya       | Airtel             | `AN` | `DIRECT`   |
| Rwanda      | MTN                | `MT` | `DIRECT`   |
| Rwanda      | Airtel             | `AN` | `DIRECT`   |
| Senegal     | Wave               | `WV` | `REDIRECT` |
| Senegal     | Orange Money       | `OR` | `REDIRECT` |
| Senegal     | Mixx by Yas        | `FM` | `DIRECT`   |
| Tanzania    | Vodacom            | `VC` | `DIRECT`   |
| Tanzania    | Airtel             | `AN` | `DIRECT`   |
| Uganda      | MTN                | `MT` | `DIRECT`   |
| Uganda      | Airtel             | `AN` | `DIRECT`   |

<br />