The Manual Payment Dance: real M-Pesa checkout on WhatsApp in Kenya
The screenshot-to-Paybill-to-confirm loop costs Kenyan shops thousands of shillings a month. Break it with STK Push, clear totalling, and honest follow-up.
26 August 2026 · 7 min read · Timi Labs
There is a ritual playing out in thousands of Kenyan WhatsApp transactions every day. A buyer asks about a service, gets the details, decides to pay — and then:
- The business sends its Paybill number
- The customer leaves WhatsApp, opens the M-Pesa menu
- They navigate to Pay Bill or Buy Goods, type the number, type the reference, type the amount
- They confirm, screenshot the confirmation, and come back to WhatsApp
- The business reads the screenshot, matches it to the enquiry, and replies "received"
Five hops, one purchase, all by hand. In Kenyan digital commerce circles it has a name: the Manual Payment Dance.
It has a cost most shops never calculate. Every hop is a chance for a "let me back in a bit" that never returns. Research on Kenyan e-commerce checkout finds frictionless payment — where the prompt appears on the customer's phone inside the conversation instead of sending them off to type numbers — produces materially lower abandonment than redirect flows. Eliminating the dance is no longer an early-adopter thing. In 2026 it is the baseline for any Kenyan shop handling more than a few dozen transactions a month.
This guide shows you how to shorten — and eventually end — the dance without turning your shop into a fintech.
Why the dance hurts more than it looks
Three separate costs stack up:
- Abandonment. Every screen the buyer leaves your chat to navigate is an exit. A delayed STK prompt or a "we'll confirm the amount" reply invites a "tutaongea baadaye" that often never comes back.
- Your time matching. Reading screenshots, matching a random M-Pesa code to the right order, and re-confirming eats real hours. A shop handling 500 WhatsApp payment interactions a month can spend hours a day just confirming and reconciling.
- Customer trust. A buyer who has to re-type your number three times and then waits to hear "received" is a buyer who questions whether the order is even real. The trust layer is why WhatsApp works in the first place — the dance erodes it.
The fix is not a new bank. It is the way the total is framed and the way the payment prompt is delivered.
Start with a crystal-clear total
You cannot smooth checkout if the buyer is still unsure what they owe. Shops that close in chat say the full number once:
Sawa — shoes 8,500 + rider 300 = 8,800. Same day if you pay by 4pm.
That line does three jobs: price, delivery, and when it arrives. It also means when you send the payment prompt, there is only one number to confirm. See how to quote delivery and collect M-Pesa for building your delivery card.
The two ways to take payment in chat
1. Share the Till or Paybill you already have. The lowest-effort change. Instead of "pay via 123456" and waiting for a screenshot, send the total, the Till, and confirm when you see the M-Pesa message — not when the buyer sends a screenshot. This alone removes the screenshot hop; you rely on your own Till alerts instead of the buyer forwarding proof.
2. STK Push (Lipa na M-Pesa) inside the conversation. The proper fix. Your app asks Safaricom's Daraja API to send a PIN prompt straight to the customer's phone. They type their PIN, Safaricom confirms to your callback, and the sale closes without the buyer typing a till, a reference, or an amount — or screenshotting anything. STK Push inside a WhatsApp conversation yields the biggest conversion uplift of any payment method in the Kenyan market, and it is the standard for any business doing more than ~50 transactions a month.
STK Push is a Safaricom Daraja integration. You can build it, buy it from a payment aggregator, or use a WhatsApp platform that already wires M-Pesa in.
What Timi does and does not do with money
Be clear on this so your customers trust the process:
- Timi does not collect buyer money. It never takes payment into a Timi account, and it does not send a Paystack checkout link. Money stays on your Till, Paybill, or M-Pesa phone.
- Timi shares your payment details at the right moment. Put your till/paybill/number in shop context. When the item and zone are clear, Timi can send the grand total plus those details.
- Timi does not do STK Push or hosted checkout. For now, in-chat collection stays on the Till/Paybill you already use. If you later adopt an STK Push provider, you can route it alongside Timi — see WhatsApp API in Kenya for the plumbing.
A weekly habit that kills most of the dance
- Write your delivery card from real rider costs — zones, flat KES, same-day or next-day. See the delivery quote guide.
- Put your till/paybill/number where the assistant can share it — Settings → Shop context → Delivery and payout.
- Quote item + rider + ETA only when the area is clear. Guessing a fee makes a later rider upcharge a trust problem.
- Confirm from your own M-Pesa alerts, not screenshots. When the M-Pesa confirmation arrives on your Till, mark the sale and pack.
- Review once a week: which corridors and items get stuck? Fix the total line, not the buyer.
Shops that do this spend less time saying "pay via this number and send me the screenshot" and more time packing.
FAQ
Do I need the M-Pesa Daraja API to sell on WhatsApp?
No. Most Kenyan WhatsApp shops start by sharing a Till or Paybill. STK Push (on Daraja) is the upgrade when volume and abandonment hurt — not a day-one requirement.
Does Timi hold my money?
No. Timi never collects buyer money and does not send checkout links. Payment stays on your Till, Paybill, or M-Pesa phone number.
Why do buyers ghost after I send the till number?
Usually because the total was fuzzy, or the payment step was too many hops. Nail the total, then send one clear payment prompt.
How big does my shop need to be before STK Push is worth it?
If you handle more than a few dozen M-Pesa transactions a month and see real abandonment or reconciliation time, the conversion you recover usually pays for the integration.
Can I use M-Pesa with a chatbot?
Yes. Link your chatbot to an M-Pesa / payment provider. Timi handles the convo speed; the payment provider you connect handles collection, or you keep collection on your Till.
What if a buyer pays but I haven't confirmed?
Rely on your own M-Pesa / Till alerts, not screenshots. If you manage many orders, reconcile against the alert feed (some shops use CRM segments to keep orders organised).
Share this guide