The verdict in three sentences
M-Pesa's Daraja API is in 2026 the most battle-tested mobile money stack in East Africa, built around STK Push and asynchronous callbacks. The technical integration takes a day, but merchant onboarding (2 to 5 days) and reconciliation of settlements require planning. The real risk is not the code: it is fulfilling an order before you have received and validated the confirmation callback.
Fees, limits and Daraja onboarding 2026
Daraja (Safaricom's developer platform) exposes STK Push, C2B, B2C and transaction status endpoints. Here are the 2026 orders of magnitude for a Kenyan till/paybill merchant.
| Item | 2026 value (estimate) |
|---|---|
| Merchant fee per transaction | ~1.5 % (tariff band) |
| Settlement to bank | Same/next day |
| Single transaction limit | KES 250,000 |
| Daily wallet limit | KES 500,000 |
| Settlement delay | Near-instant to till |
| Merchant onboarding | 2 to 5 business days |
| Currency | KES |
| Countries covered | Kenya (Tanzania via separate stack) |
A paybill or till number plus a Daraja developer account are required. You start in sandbox, then request production credentials once your callback endpoints are validated.
Technical integration checklist
The STK Push flow prompts the customer's phone for a PIN, then Safaricom posts the result to your callback URL. Never confirm an order on the browser return alone.
| Step | Action | Common pitfall |
|---|---|---|
| 1. Token | Get OAuth access token | Not caching the 1h token |
| 2. STK Push | POST STK Push with amount + phone | Wrong shortcode/passkey |
| 3. Callback | Listen on your callback URL | Endpoint not publicly reachable |
| 4. Verify | Query transaction status | Trusting callback payload only |
| 5. Idempotency | Store CheckoutRequestID | Double-counting on retries |
| 6. Timeout | STK prompt expires ~60s | Not handling user cancel |
Safaricom retries callbacks, so store each CheckoutRequestID and make your handler idempotent. Your callback URL must be HTTPS and publicly reachable — a frequent blocker in sandbox testing.
Mini case study
Grace runs a cosmetics shop in Nairobi with an average basket of KES 1,800 and 300 orders a month, roughly KES 540,000 in monthly revenue. At ~1.5 % M-Pesa fees, she pays about KES 8,100 per month. Versus an international card gateway at 2.9 % plus fixed fees, she saves meaningfully while offering the payment method her customers actually use. The integration shipped in 3 days, 2 of which were merchant validation.
Need a professional website?
Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.
FAQ
What does M-Pesa really cost a merchant in 2026?
Merchant fees fall in a tariff band around 1.5 % per transaction, with no monthly subscription for basic Daraja access. On KES 540,000 in sales that is roughly KES 8,100.
Do I have to handle callbacks?
Yes. The customer may close the app after paying. Only the Daraja callback, confirmed via a transaction status query, guarantees the payment was actually captured.
How long to activate a paybill/till?
Expect 2 to 5 business days after submitting your documents. Budget this delay so it does not block your go-live.
Does Daraja work outside Kenya?
Daraja is Kenya-focused in 2026; Tanzania and other markets use separate M-Pesa stacks with different endpoints and limits.
Can I automate refunds?
Reversals are supported via the B2C/reversal APIs; implementing a refund endpoint automates product returns without manual back-office work.
Let's talk about your project. We integrate M-Pesa Daraja into your store with tested callbacks and a clean go-live. WhatsApp +221 77 596 93 33.
Mohamed Bah
Fondateur, Kolonell
Passionate about digital and entrepreneurship in Africa, Mohamed has been helping Sénégalese businesses with their digital transformation since 2020. Founder of Kolonell, he believes every SME deserves a professional and accessible online présence.


