Kenya
Transfer money to KES Mobile Money Wallets.
Prerequisites
- Complete your KYC and ensure that your account is approved for transactions.
- Request this feature on your account via email or our support form.
- Whitelist your server IP address to prevent security errors.
- Fund your KES balance. You can do this by:
- Directly funding via collections, this funding method is limited to a max value equivalent to $1,000.
- Indirect funding via FX conversion from a different currency balance (i.e. wallet-to-wallet transfers).
 
Basic terminology
- Sender: This is the merchant or individual initiating the transfer. Some of their details are required to complete the payouts.
- Beneficiary: This is the individual receiving the transfer.
Payout Flow
Follow these steps to initiate a KES Mobile Money transfer:
- Collect the sender and beneficiary's information. Some important information to collect includes the account information, the sender's name, and the address.
| Parameter | Description | Format | Example | isRequired | 
|---|---|---|---|---|
| account_bank | The mobile money operator. | string | MPS | Yes | 
| account_number | The recipient's mobile number. | string | 2332128829 | Yes | 
| amount | Amount to be transferred. | string | 100 | Yes | 
| currency | The currency of the transfer. This must be KES. | string | KES | Yes | 
| beneficiary_name | The transfer recipient's name. | string | King James | Yes | 
| meta.beneficiary_address | The recipient's address. | string | 221B Baker Street | No | 
| meta.beneficiary_mobile_number | The recipient's mobile number. | string | 020828661 | No | 
| meta.email | The recipient's email address. | string | [email protected] | No | 
| sender_id_type | The sender's ID document type | string | 04 | No | 
| sender_id_number | This is the number found on the sender's identification document. | string | 928929832 | No | 
- Send your payment request with all the needed transfer information to the transfers endpoint to create the payout.
{
  "account_bank": "MPS",
  "account_number": "2540782773934",
  "amount": 400,
  "narration": "Example KE MoMo Transfer",
  "currency": "KES",
  "reference": "EX002",
  "beneficiary_name": "Flutterwave Developers",
  "meta":[{
    "beneficiary_address": "221B Baker Street",
    "beneficiary_mobile_number":"020828661",
    "email":"[email protected]",
    "sender_id_number":"928929832",
    "sender_id_type":"04"
  }]
}
A key parameter to note is sender_id_type, which specifies the type of identification required to verify the sender. Below are the supported identification types and their corresponding codes:
| Identification Type | Code | 
|---|---|
| International Passport | 01 | 
| Driving License | 02 | 
| ID Card | 03 | 
| Voter Carc | 04 | 
| Labour Card | 05 | 
| Bar Association Card | 06 | 
| Defence Personnel Identity | 07 | 
| Govt. Id | 08 | 
| Other | 09 | 
| Pan Card | 10 | 
| Ration Card (with photo) | 11 | 
| IBL Customer | 12 | 
| Iqama | 13 | 
| Citizenship card | 14 | 
| Federal ID | 15 | 
| Military identification card | 16 | 
| Commercial Registration | 17 | 
| CNIC | 18 | 
| Work Permit | 19 | 
| Birth Certificate | 20 | 
| Business registration/license | 21 | 
| Social security | 22 | 
| Student ID | 23 | 
| Border Paper | 24 | 
| Royal decree | 25 | 
| License Permit | 26 | 
| GCC identity document | 27 | 
| Saudi Family Book | 28 | 
| Entry permit | 29 | 
| National ID | 30 | 
You'll get a response like this:
{
    "status": "success",
    "message": "Transfer Queued Successfully",
    "data": {
        "id": 1231828,
        "account_number": "2540782773934",
        "bank_code": "MPS",
        "full_name": "King James",
        "created_at": "2025-02-12T11:46:17.000Z",
        "currency": "KES",
        "debit_currency": "NGN",
        "amount": 400,
        "fee": 45,
        "status": "NEW",
        "reference": "EX002",
        "meta": [
            {
                "BeneficiaryAddress": "221B Baker Street",
                "BeneficiaryMobileNumber": "2540782773934",
                "EmailAddress": "[email protected]",
                "SenderIdNumber": "928929832",
                "SenderIdType": "04",
                "MobileNumber": "020828661"
            }
        ],
        "narration": "Example KE MoMo Transfer",
        "complete_message": "",
        "requires_approval": 0,
        "is_approved": 1,
        "bank_name": "FA-BANK"
    }
}
- Verify your transfer status; there are many ways to do this:
- You can get the transfer status using the transfer status endpoint.
- If you have webhooksenabled on your dashboard, check the transfer webhooks to confirm it's status.
- For transfers with callback_id, we'll send the transfer details with their status using the specified URL.
{
   "event": "transfer.completed",
   "event.type": "Transfer",
   "data": {
    "id": 1231828,
    "account_number": "2540782773934",
    "bank_name": "FA-BANK",
    "bank_code": "MPS",
    "fullname": "King James",
    "created_at": "2024-07-29T11:36:14.000Z",
    "currency": "KES",
    "debit_currency": "NGN",
    "amount": 400,
    "fee": 45,
    "status": "SUCCESSFUL",
    "reference": "EX002",
    "meta": [
      {
        "Sender": "Flutterwave Developers",
        "SenderCountry": "NG",
        "SenderAddress": "Gotham III"
      }
    ],
    "narration": "Example KE MoMo Transfer",
    "approver": null,
    "complete_message": "Successful",
    "requires_approval": 0,
    "is_approved": 1
   }
 }
{
	"status": "success",
	"message": "Transfer fetched",
	"data": {
		"id": 1231828,
		"account_number": "2540782773934",
		"bank_code": "MPS",
		"full_name": "King James",
		"created_at": "2024-07-29T11:36:14.000Z",
		"currency": "KES",
		"debit_currency": "NGN",
		"amount": 400,
		"fee": 45,
		"status": "SUCCESSFUL",
		"reference": "EX002",
		"meta": [
			{
				"sender": "Flutterwave Developers"
			}
		],
		"narration": "Example KE MoMo Transfer",
		"approver": null,
		"complete_message": "Successful",
		"requires_approval": 0,
		"is_approved": 1,
		"bank_name": "FA-BANK"
	}
}
Be sure to visit our helper's documentation on testing for information on how to test your transfers.
Updated 27 days ago
