> ## Documentation Index
> Fetch the complete documentation index at: https://flutterwaveinc.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Mobile Money Transfer

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

<Info>
  We recommend checking out the [introductory section](/fund-transfer/introduction) to
  understand the basics of making transfers first.
</Info>

Mobile money transfers work the same as [regular bank account transfers](/fund-transfer/bank-account). 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.

<Info>
  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](/api-reference/transfers/initiate-a-transfer) for specification
</Info>

### Supported Mobile Money Operators

Here's a list of the current supported countries/currencies and options for mobile money:

| Countries/Currencies                                         | Mobile 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:

<CodeGroup>
  ```javascript Node.js theme={null}
  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)
  ```

  ```php PHP  theme={null}
  $details = array(
    "account_bank" => "MPS",
    "account_number" => "2540782773934",
    "amount" => 1200,
    "currency" => "KES",
    "beneficiary_name" => "Akinyi Kimwei",
    "meta" => array(
      "sender": "Flutterwave Developers",
      "sender_country": "ZA",
      "mobile_number": "23457558595"
    )
  );
  $response = $transferService->singleTransfer($details);
  ```

  ```ruby Ruby theme={null}
  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"
    }
  }
  response = transfer.initiate_transfer details
  ```

  ```python Python theme={null}
  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"
    }
  }
  res = rave.Transfer.initate(details)
  ```

  ```go Go theme={null}
  details := rave.SinglePaymentData {
      AccountBank:     "flutterwave",
      AccountNumber:   "00118468",
      Amount:          1200,
      Currency:        "KES",
      BeneficiaryName: "Akinyi Kimwei"
  }
  err, response := transfer.InitiateSingleTransfer(details)
  ```

  ```json cURL theme={null}
  curl --request POST 'https://api.flutterwave.com/v3/transfers' \
    --header 'Authorization: Bearer YOUR_SECRET_KEY' \
    --header 'Content-Type: application/json' \
    --data-raw '{
      account_bank: "MPS",
      account_number: "2540782773934",
      amount: 1200,
      currency: "KES",
      beneficiary_name: "Akinyi Kimwei",
      meta: {
        "sender": "Flutterwave Developers",
        "sender_country": "ZA",
        "mobile_number": "23457558595"
      }
  }'
  ```
</CodeGroup>

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

<CodeGroup>
  ```json 200 OK(KES Mobile Money) theme={null}
  {
      "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"
      }
  }
  ```

  ```json 200 OK (XAF/XOF Mobile Money[ex-Senegal]) theme={null}
  {
      "status": "success",
      "message": "Transfer Queued Successfully",
      "data": {
          "id": 127890,
          "account_number": "250780411008",
          "bank_code": "FMM",
          "full_name": "Flutterwave Developers",
          "created_at": "2020-06-25T14:11:45.000Z",
          "currency": "XAF",
          "amount": 50,
          "fee": 500,
          "status": "NEW",
          "reference": "new-franco-momo-test-transfer",
          "meta": null,
          "narration": "New franco transfer",
          "complete_message": "",
          "requires_approval": 0,
          "is_approved": 1,
          "bank_name": "FA-BANK"
      }
  }
  ```

  ```json 200 OK(Senegal XOF Mobile Money) theme={null}
  {
      "status": "success",
      "message": "Transfer Queued Successfully",
      "data": {
          "id": 217647,
          "account_number": "2217857532",
          "bank_code": "FREEMONEY",
          "full_name": "Taju Afobaje",
          "created_at": "2023-06-23T12:32:32.000Z",
          "currency": "XOF",
          "debit_currency": "XOF",
          "amount": 100,
          "fee": 2,
          "status": "NEW",
          "reference": "TRF-21928319023-231202",
          "meta": [
              {
                  "Sender": "Agba Tester",
                  "SenderCountry": "NG",
                  "SenderAddress": "Lagos",
                  "SenderMobileNumber": "+2348100001201"
              }
          ],
          "narration": "MoMo Transfer to Senegal",
          "complete_message": "",
          "requires_approval": 0,
          "is_approved": 1,
          "bank_name": "FA-BANK"
      }
  }
  ```

  ```json 200 OK(RWF Mobile Money) theme={null}
  {
      "status": "success",
      "message": "Transfer Queued Successfully",
      "data": {
          "id": 127889,
          "account_number": "233542773934",
          "bank_code": "MTN",
          "full_name": "Flutterwave Developers",
          "created_at": "2020-06-25T14:09:42.000Z",
          "currency": "RWF",
          "amount": 50,
          "fee": 45,
          "status": "NEW",
          "reference": "new-rwf-momo-transfer",
          "meta": null,
          "narration": "New RWF momo transfer",
          "complete_message": "",
          "requires_approval": 0,
          "is_approved": 1,
          "bank_name": "FA-BANK"
      }
  }
  ```

  ```json 200 OK(UGX Mobile Money) theme={null}
  {
      "status": "success",
      "message": "Transfer Queued Successfully",
      "data": {
          "id": 127894,
          "account_number": "233542773934",
          "bank_code": "MPS",
          "full_name": "Flutterwave Developers",
          "created_at": "2020-06-25T14:39:16.000Z",
          "currency": "UGX",
          "amount": 50,
          "fee": 500,
          "status": "NEW",
          "reference": "ugx-momo-transfer",
          "meta": null,
          "narration": "UGX momo transfer",
          "complete_message": "",
          "requires_approval": 0,
          "is_approved": 1,
          "bank_name": "FA-BANK"
      }
  }
  ```

  ```json 200 OK(MWK Mobile Money) theme={null}
  {
      "status": "success",
      "message": "Transfer Queued Successfully",
      "data": {
          "id": 222401,
          "account_number": "26586644477755",
          "bank_code": "AIRTELMW",
          "full_name": "Dora Explorer",
          "created_at": "2024-02-06T16:27:14.000Z",
          "currency": "MWK",
          "debit_currency": "NGN",
          "amount": 100000,
          "fee": 350003.5,
          "status": "NEW",
          "reference": "9dc2de49014ad188",
          "meta": null,
          "narration": "ecobank mw test",
          "complete_message": "",
          "requires_approval": 0,
          "is_approved": 1,
          "bank_name": "Airtel Malawi"
      }
  }
  ```

  ```json 200 OK (ZMW Mobile Money) theme={null}
  {
      "status": "success",
      "message": "Transfer Queued Successfully",
      "data": {
          "id": 8773850,
          "account_number": "250780411008",
          "bank_code": "MPS",
          "full_name": "Flutterwave Developers",
          "created_at": "2021-05-14T16:01:31.000Z",
          "currency": "ZMW",
          "amount": 50,
          "fee": 1.5,
          "status": "NEW",
          "reference": "new-ZMW-momo-test-transfer",
          "meta": null,
          "narration": "New ZMW transfer",
          "complete_message": "",
          "requires_approval": 0,
          "is_approved": 1,
          "bank_name": "Mobile Money"
      }
  }
  ```

  ```json 400 Bad Request theme={null}
  {}
  ```
</CodeGroup>

<Warning>
  **Supported Formats**

  To 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`.
</Warning>

You'll notice that the `data.status` for the transfer is `"NEW"`. Remember to set up a webhook or call the [get transfer endpoint](/api-reference/transfers/fetch-a-transfer) to find out when the transfer is completed. See [Transfers: Overview](/fund-transfer/transfers) for more details.

### Bulk Transfers

You can also transfer to multiple mobile money accounts at once. See the [bulk transfers guide](/fund-transfer/bulk-transfer) for details.
