Accept mobile money in Kenya
In Kenya, most mobile money payments are M-Pesa. You can integrate Safaricom's Daraja API directly, or take M-Pesa and Airtel Money through Paystack.
Your options
Safaricom Daraja (M-Pesa Express / STK push)
- Reaches
- M-Pesa
- Sign-up
- Free sandbox on the Daraja portal; go-live needs your own PayBill or Till number
- Best for
- The most direct M-Pesa integration, and B2C payouts
- Guides
- Node.js · Laravel · Django · Callbacks & 1037 · B2C payouts
Paystack (Charge API)
Airtel Money Open API
- Reaches
- Airtel Money
- Sign-up
- Application on developers.airtel.africa for Kenya
- Best for
- Reaching Airtel customers directly
- Guides
- Node.js (set 254) · Laravel (set 254)
Currency: KES. Fees are set per contract and aren't published, so ask each provider for a quote. Checked November 2026.
Which should you choose?
- Already have a PayBill or Till? Integrate Daraja directly: it is the most direct route to M-Pesa, and it also gives you B2C payouts.
- No PayBill yet, or you want cards too? Paystack takes M-Pesa, Airtel Money and cards through one account.
- Whichever you choose, handle ResultCode 1037 as "not known yet", not "failed".
For a side-by-side look at the payment flow, webhook security and payouts, see MTN MoMo API vs Flutterwave vs Paystack.
Not available here
- MTN MoMo: MTN does not operate in Kenya.
Which numbers are on which network
Mobile numbers in Kenya start with these prefixes, by wallet. Customers can move numbers between networks, so let them confirm.
| Wallet | Number starts with |
|---|---|
| Airtel Money | 010, 0135, 0136, 0137, 0138, 0139, 073, 075, 076, 078 |
| M-Pesa | 011, 014, 018, 070, 071, 072, 074, 0757, 0758, 0759, 0768, 0769, 079 |
From Google libphonenumber's carrier data (2026-10-28). Longest prefix wins. Convert any number with the Phone Number Formatter.
Free tools
- M-Pesa STK Push Builder: request code and the Password generator and decoder
- M-Pesa error code reference: every ResultCode explained
- African Phone Number Formatter: the right format and network for any number
- Payment Error Code Lookup: what an error means and whether the customer paid
Skip the plumbing
The starter kits include M-Pesa STK push (Daraja), Airtel Money and Paystack (M-Pesa and Airtel through one account; set it to KES). The starter kits (Laravel, Django, Next.js) are tested and ready to configure. Or have the integration built for you.
Frequently asked questions
Do I need a PayBill to accept M-Pesa online?
To go live on Daraja, yes: STK push runs against your own PayBill or Till number. Paystack is an alternative: a Paystack business in Kenya can take M-Pesa through Paystack's account.
What does M-Pesa ResultCode 1037 mean?
Safaricom could not reach the customer's phone in time. It is not a confirmed failure: query the payment before telling the customer to pay again.
What phone format does M-Pesa use?
Daraja takes 2547XXXXXXXX or 2541XXXXXXXX: the country code without a plus. Paystack's Kenyan test number is written +254 710 000 000; its Ghana example uses the local format with a leading 0.