MoMo Payout (Business to Client)
Overview

This API empowers your business to efficiently send money and process payouts for business operations, including employee salary disbursements, vendor payments, and other financial transactions.

  • Purpose: Disburse funds to mobile money wallets for payroll, vendor payments, and other financial operations.
  • Target Audience: Merchants, fintechs, and developers integrating mobile money payout functionality.

Quickstart: MoMo Payout
  1. Obtain your Bearer Token and generate the required signature and X-Hash.
  2. Send a POST request to the payout endpoint with the required parameters.
  3. Parse the response to get the transaction status and details.

Endpoint Reference
HTTP MethodPOST
Endpoint URL/api/v2/payment/
Base URLhttps://base-url-here.com
DescriptionInitiate a mobile money payout to a recipient's wallet.
Request Body
FieldTypeDescriptionRequired
wallet_nostringBusiness wallet account number assigned.Yes
referencestringOrder reference, unique per request.Yes
acc_namestringRecipient name.Yes
emailstringRecipient email.Yes
acc_nostringRecipient mobile money registered phone number. Format: {countryCode=254}{phone=7XXXXXXXX} e.g. 2547XXXXXXXXYes
amountnumericOrder amount to be paid (no commas as thousands separator).Yes
currencystringCurrency (e.g. KES, TZS, XOF, MWK, RWF, UGX, ZMW, BWP, XAF, CDF, EGP, GMD, GHS, GNF, LSL, MRU, MZN, NGN, SLL, ZAR).Yes
descriptionstringYour order description.Yes
channelnumericChannel unique code. e.g. 100003 for M-PESA-KENYA. See table below for channel codes.Yes
result_urlstringURL to your server for callback response.Yes
Channel Codes
Channel CodeNameCurrency
100003MOBILE MONEY - KENYAKES
300002MOBILE MONEY - TANZANIATZS
110003MOBILE MONEY - BENINXOF
120003MOBILE MONEY - MALAWIMWK
130003MOBILE MONEY - RWANDARWF
300012MOBILE MONEY - UGANDAUGX
150003MOBILE MONEY - ZAMBIAZMW
110013MOBILE MONEY - BOTSWANABWP
120013MOBILE MONEY - BURKINA FASOXOF
130013MOBILE MONEY - CAMEROONXAF
140003MOBILE MONEY - CENTRAL AFRICAN REPUBLICXAF
160003MOBILE MONEY - CHADXAF
170003MOBILE MONEY - CONGO BRAZZAVILLEXAF
180003MOBILE MONEY - DRCCDF
190003MOBILE MONEY - EGYPTEGP
200003MOBILE MONEY - EQUATORIAL GUINEAXAF
210003MOBILE MONEY - GABONXAF
220003MOBILE MONEY - GAMBIAGMD
230003MOBILE MONEY - GHANAGHS
240003MOBILE MONEY - GUINEAGNF
250003MOBILE MONEY - GUINEA BISSAUXOF
260003MOBILE MONEY - IVORY COASTXOF
270003MOBILE MONEY - LESOTHOLSL
280003MOBILE MONEY - MALIXOF
290003MOBILE MONEY - MAURITANIAMRU
310003MOBILE MONEY - MOZAMBIQUEMZN
320003MOBILE MONEY - NIGERXOF
330003MOBILE MONEY - NIGERIANGN
340003MOBILE MONEY - SENEGALXOF
350003MOBILE MONEY - SIERRA LEONESLL
360003MOBILE MONEY - SOUTH AFRICAZAR
370003MOBILE MONEY - TOGOXOF
Request Headers
HeaderTypeDescriptionRequired
AuthorizationstringBearer token used to access the APIYes
SignaturestringSHA-256 signature. Concatenate channel+reference+currency+amount, sign with your private key, and Base64 encode.Yes
x-hashstringGenerated X-Hash header for additional security.Yes

Example Request
curl --location --request POST 'https://base-url-here.com/api/v2/payment/' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <token>' \
--header 'Signature: xxx' \
--header 'x-hash: xxxxxx' # Generated X-Hash header \
--data-raw '{
    "wallet_no": "xxxxxxx",
    "reference": "TRXXXX79",
    "acc_name": "JOHN DOE",
    "acc_no": "2547XXXXXXXX",
    "currency": "KES",
    "amount": 10,
    "channel": 100003,
    "email": "johndoe@gmail.com",
    "description": "Pay for order #23243222",
    "result_url": "https://webhook.site/947e8f48-c03a-4717-a2dd-8cdb2f64e897"
}'

Success Response
FieldTypeDescription
successbooleanIndicates if the request was successful
messagestringResponse message
data.transaction_idstringTransaction ID
data.statusstringTransaction status
data.status_descriptionstringTransaction status description
data.datestringTransaction timestamp
{
    "success": true,
    "message": "Successfully initiated",
    "data": {
        "transaction_id": "056341150381",
        "status": "PENDING",
        "status_description": "Transaction Initiated successfully",
        "date": "2024-02-17 13:34:02 PM"
    }
}

Security Best Practices
  • Always use HTTPS for all API requests.
  • Keep your private key secure and never share it.
  • Verify the signature and X-Hash on the server side for every request.

Terms of Use & Legal

By using this API, you agree to our Terms of Service and Privacy Policy. Do not share sensitive data or credentials.