E-commerce11 min read

M-Pesa Express STK push: Node.js integration in Mombasa (2026)

Mohamed Bah·Fondateur, Kolonell
August 18, 2026
Share:
M-Pesa Express STK push: Node.js integration in Mombasa (2026)

M-Pesa Express STK push: Node.js integration in Mombasa (2026)

E-commerce

The verdict in three sentences

M-Pesa Express (STK push) on Daraja works by pushing a prompt to the customer's phone: your server initiates the request, the customer confirms on their handset, and a callback confirms the status. Fees sit around 1.5 %, the per-transaction cap is 250,000 KES, and you must handle a ~12 % abandonment rate when the prompt is ignored. In Node.js, keep initiation, validation and confirmation as separate handlers.

M-Pesa Express (Kenya) vs Moov Money (Togo): 2026 figures

CriterionM-Pesa Express (Kenya)Moov Money Togo
Fee~1.5 %~1.7 %
Minimum amount0 (no strict min)Low
Per-transaction cap250,000 KES~1,000,000 FCFA
Flow typeSTK push (Lipa na M-Pesa)Push + callback
Prompt window~15 s~20 s
Abandonment rate~12 %~12 %
CurrencyKES (shilling)XOF (FCFA)

Both push a notification to the customer's phone: no browser redirect, but a strong dependence on how quickly the user responds.

Node.js integration: three distinct handlers

HandlerRoleResulting status
initiateSTKPOST STK push, sends the promptpending
validationCallbackReceives the first notificationaccepted / rejected
confirmationCallbackReceives the final confirmationSUCCESS / FAILED

In Daraja, mark the order paid only on the confirmation callback, never on the initial acknowledgement. Respond 200 quickly, then run business logic in the background.

Handling the 12 % abandonment

A 15-second prompt that is ignored means the transaction never completes. Good practices:

  • Application timeout at 60-90 s server-side, then status expired.
  • A clear message: "Check the M-Pesa prompt on your phone".
  • A "Resend request" button that fires a fresh STK push.
  • A cleanup job for expired pending transactions so the dashboard stays clean.

Mini case study

Fatou, who runs a fashion store in Mombasa, fires 300 STK push requests a month for an average basket of 1,500 KES. At a 12 % abandonment rate, only 264 transactions complete, or 396,000 KES collected. At 1.5 % fees she pays about 5,940 KES monthly. Adding a "Resend request" button recovers roughly a third of abandons, about 12 transactions and 18,000 KES extra per month.

Need a professional website?

Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.

FAQ

Does M-Pesa Express need a browser redirect?

No. It is a push flow: the customer approves directly in an STK prompt on their phone, without leaving your page.

Which callback should confirm the order?

Only the final confirmation callback (SUCCESS), not the initial acknowledgement. That is the only reliable proof of payment.

What is the per-transaction cap?

The 2026 order of magnitude is 250,000 KES for M-Pesa Express, versus around 1,000,000 FCFA for Moov Togo.

How do I reduce the 12 % abandonment?

A clear waiting message, a 60-90 s timeout and a "Resend request" button recover much of the ignored prompts.

Do M-Pesa and Moov code the same way?

The principle is identical (push plus confirmation callback); only endpoints, currency and caps differ. One Node.js skeleton adapts to both.

Let's talk about your project. We integrate M-Pesa Express in Node.js with abandonment handling and retries for your Mombasa store. WhatsApp +221 77 596 93 33.

Tags:#m-pesa#stk push#daraja#node integration#mombasa#kenya
Share:

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.