Skip to main content
We recommend checking out the introductory section to understand the basics of making transfers first.
Mobile money transfers work the same as regular bank account transfers. The key difference is that the account_number is the mobile number on the account (including the country code, like “233”), while the account_bank is a code representing the mobile money operator (for example, "MPS" for M-Pesa). A beneficiary_name is also required so we can identify this account in your list of beneficiaries.
Mobile Money Kenya (M-Pesa) requires you to include the sender’s full name as sender, the sender’s country as sender_country and the sender’s mobile number as mobile_number in the meta object. See Initiate a Transfer for specification

Supported Mobile Money Operators

Here’s a list of the current supported countries/currencies and options for mobile money:
Countries/CurrenciesMobile Money options
Cameroon (XAF)FMM
Cote d’Ivoire (XOF)FMM WAVE
Ethiopia (ETB)AMOLEMONEY
Ghana (GHS)AIRTEL MTN TIGO VODAFONE
Kenya (KES)Airtel Kenya (MPX), M-Pesa (MPS)
Malawi (MWK)AIRTELMW
Senegal (XOF)EMONEY FREEMONEY ORANGEMONEY WAVE
Rwanda (RWF), Tanzania (TZS), Uganda (UGX), and Zambia (ZMW)MPS
Here’s an example of a mobile money transfer:
const details = {
  account_bank: "MPS",
  account_number: "2540782773934",
  amount: 1200,
  currency: "KES",
  beneficiary_name: "Akinyi Kimwei",
  meta: {
    "sender": "Flutterwave Developers",
    "sender_country": "ZA",
    "mobile_number": "23457558595"
  }
};
await flw.Transfer.initiate(details)
Here’s an example of the response you’ll get:
{
    "status": "success",
    "message": "Transfer Queued Successfully",
    "data": {
        "id": 127886,
        "account_number": "2540782773934",
        "bank_code": "MPS",
        "full_name": "Flutterwave Developers",
        "created_at": "2020-06-25T14:03:51.000Z",
        "currency": "KES",
        "amount": 50,
        "fee": 45,
        "status": "NEW",
        "reference": "mk-902837-jk",
        "meta": null,
        "narration": "New transfer",
        "complete_message": "",
        "requires_approval": 0,
        "is_approved": 1,
        "bank_name": "FA-BANK"
    }
}
Supported FormatsTo make a successful M-Pesa(KES), XAF, or XOF transfer request, Pass amount and account_number in the following formats:
  • We only support integers for amount.
  • account_number is expected to take these forms: 254700000000 or 0700000000.
You’ll notice that the data.status for the transfer is "NEW". Remember to set up a webhook or call the get transfer endpoint to find out when the transfer is completed. See Transfers: Overview for more details.

Bulk Transfers

You can also transfer to multiple mobile money accounts at once. See the bulk transfers guide for details.