---
updatedAt: 2026-10-21T18:12:39.000Z
agentTools:
  projectIndex: https://developer.flutterwave.com/llms.txt
---

# Mobile Money Transfer

Learn how to transfer money directly from your available balance to a mobile money account.

> 📘 Getting Started
>
> We recommend checking out the [introductory section](/v3.0.0/docs/introduction-6) to understand the basics of making transfers first.

Mobile money transfers work similarly to [bank account transfers](/v3.0.0/docs/bank-account). The key difference is that `account_number `contains the recipient's mobile number, including the country code (for example, 233), while `account_bank` identifies the mobile money operator (for example, `MPS` for M-Pesa). You must also provide the `beneficiary_name`.

# Supported Networks

Here's a list of the currently supported countries and available networks:

| Countries/Currencies                                                             | Country Code | Mobile Money options                       |
| -------------------------------------------------------------------------------- | ------------ | ------------------------------------------ |
| <Anchor target="_blank" href="/docs/côte-divoire-1">Cote d'Ivoire</Anchor> (XOF) | CI           | `FMM`, `Moov`, `orangemoney`, `WAVE`       |
| <Anchor target="_blank" href="/docs/ghana-3">Ghana</Anchor> (GHS)                | GH           | `AIRTELTIGO`, `MTN`, `TELECEL`, `VODAFONE` |
| <Anchor target="_blank" href="/docs/kenya-2">Kenya</Anchor> (KES)                | KE           | `SAFARICOM`, `T-Kash`, `Airtel`, `MPS`     |
| <Anchor target="_blank" href="/docs/rwanda-2">Rwanda</Anchor> (RWF)              | RW           | `MPS`, `MTN`                               |
| <Anchor target="_blank" href="/docs/senegal-2">Senegal</Anchor> (XOF)            | SN           | `freemoney`, `orangemoney`, `WAVE`         |
| <Anchor target="_blank" href="/docs/uganda-3">Uganda</Anchor> (UGX)              | UG           | `Airtel`, `MPS`, `MTN`                     |
| <Anchor target="_blank" href="/docs/egypt-1">Egypt</Anchor> (EGP)                | EG           | `EGPWALLETS`                               |

The following examples show how to initiate a mobile money transfer.

```javascript Node.js
const details = {
account_bank: "MPS",
account_number: "2540782773934",
amount: 1200,
currency: "KES",
beneficiary_name: "Akinyi Kimwei"
};
await flw.Transfer.initiate(details)
```
```php
$details = array(
"account_bank" => "MPS",
"account_number" => "2540782773934",
"amount" => 1200,
"currency" => "KES",
"beneficiary_name" => "Akinyi Kimwei"
);
$response = $transferService->singleTransfer($details);
```
```ruby
details = {
account_bank: "MPS",
account_number: "2540782773934",
amount: 1200,
currency: "KES",
beneficiary_name: "Akinyi Kimwei"
}
response = transfer.initiate_transfer details
```
```python
details = {
"account_bank": "MPS",
"account_number": "2540782773934",
"amount": 1200,
"currency": "KES",
"beneficiary_name": "Akinyi Kimwei"
}
res = rave.Transfer.initate(details)
```
```go
details := rave.SinglePaymentData {
AccountBank: "MPS",
AccountNumber: "254724003076",
Amount: 1200,
Currency: "KES",
BeneficiaryName: "Akinyi Kimwei"
}
err, response := transfer.InitiateSingleTransfer(details)
```
```shell cURL
curl --request POST 'https://api.flutterwave.com/v3/transfers' \
--header 'Authorization: Bearer YOUR_SECRET_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": 1000,
"account_bank": "MPS",
"account_number": "254724003076",
"currency": "KES",
"beneficiary_name": "Akinyi Kimwei"
}'
```

Here's an example of the response you'll get:

```json 200 OK(KES Mobile Money)
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 2247055,
"account_number": "254724003076",
"bank_code": "MPS",
"full_name": "Akinyi Kimwei",
"created_at": "2026-10-19T21:51:48.000Z",
"currency": "KES",
"amount": 1000,
"fee": 45,
"status": "NEW",
"reference": "47f5707c21ec7aec",
"meta": [
{
"MobileNumber": "254724003076"
}
],
"narration": "From Dotuns Fashion Limited",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
```

<br />
You'll notice that the `data.status` for the transfer is `"NEW"`. Set up webhooks or call the [get transfer endpoint](/v3.0.0/reference/get-a-transfer) to know when the transfer is complete. See [Transfers: Overview](/v3.0.0/docs/introduction-6) for more details.

# Bulk Transfers

You can also transfer funds to multiple mobile money accounts in one request. See the [bulk transfers guide](/v3.0.0/docs/bulk-transfer) for details.