An M-PESA till mismatch is a diagnostic problem, not a mystery. There are six causes in this order of frequency: customer typos to a wrong shortcode, duplicate or overpayments, staff reversals that were not logged, statement generation timing lag around midnight, POS mis-tagging (cash sale rung as M-PESA or vice versa), and, last and rarest, staff pilferage. Walk the ladder in that order and 95 percent of gaps resolve inside 20 minutes.
The diagnostic ladder
Do not shortcut the ladder. Jumping straight to "staff stole it" costs you a good cashier when the cause was a customer typo. Jumping to "the system is broken" wastes a Safaricom escalation on what turns out to be a mid-shift reversal your junior did not tell you about.
| Rung | Cause | Signal | Check |
|---|---|---|---|
| 1 | Customer typo (wrong till) | Customer insists they paid; SMS shows a different till number | Read till number on SMS aloud to customer |
| 2 | Duplicate or overpayment | Statement over vs POS | Filter statement for two receipts with same customer number within 5 minutes |
| 3 | Unlogged reversal | POS sale line present, no matching statement credit, but reversal shows on statement | Cross-check reversal log slips against Business Portal reversal report |
| 4 | Midnight timing lag | Missing amount is a late-evening transaction | Pull the next-day statement; the missing credit is on it |
| 5 | POS tender mis-tag | Cash short matches M-PESA over, or reverse | Compare cash count vs cash-tagged POS lines by shift |
| 6 | Pilferage | Directional shorts clustering by staff and shift over 14+ days | Three-column log by staff, date, shift; pattern emerges |
Rung 1: customer typo to wrong till
The most common cause of "the customer says they paid but nothing arrived" is the customer paying a wrong till. A Buy Goods shortcode is 5 to 7 digits. One transposed digit routes their payment to a stranger. This is not fraud, it is a UX failure of the M-PESA menu.
Verification takes 30 seconds: ask the customer to open the M-PESA confirmation SMS or the M-PESA App transaction history. Read the till number aloud back to them. If it does not match yours, they have a genuine claim against the other merchant (or a Safaricom reversal case). Route them to the M-PESA reversal guide and explain that your till has no record because the money never arrived at yours.
Rung 2: duplicate or overpayment
A customer taps confirm twice on STK Push, or manually enters a payment then also uses the STK prompt. Result: two till credits for one sale, statement over by one payment amount. Filter the statement (or CSV) by customer MSISDN, look for two credits within 5 minutes for the same or similar amount. If found, initiate a reversal for the duplicate via the Business Portal and inform the customer.
Rung 3: unlogged staff reversal
Buy Goods operators can initiate reversals within seven days from the Business Portal or by dialling 456. Every reversal must be paired to a written slip: date, transaction reference, amount, customer, reason, operator, checker signature. Unlogged reversals are the number one insider-fraud vector because they look like a normal customer refund on the statement.
Rung 4: midnight timing lag
Statement generation on the M-PESA platform runs on Safaricom infrastructure and closes the day for reporting purposes at approximately midnight EAT. Transactions confirmed to the customer between 23:45 and 00:15 can land on either calendar day report. Before treating a late-evening gap as loss, run the next-day statement and verify the missing amount is not on it.
Rung 5: POS tender mis-tag
This is the "cash short matches M-PESA over" pattern. A cash sale rung on the POS as an M-PESA sale (the cashier forgot to change the tender selector) creates a phantom M-PESA line that does not exist on the statement. The cash is in the drawer, so cash count is over; the M-PESA statement is under by the same amount. Look for pairs of offsetting cash-over and M-PESA-under lines before escalating either.
Rung 6: pilferage
Only after 1 to 5 are cleared, and only after a pattern is visible in the log, treat the gap as pilferage. The pattern is: directional (almost always shorts), clustered by staff (drops when that staff is on leave), and clustered by shift (particular time of day). Do not accuse without 14 days of log. Do install CCTV over the drawer and rotate cash-count responsibility.
When to escalate to Safaricom
Safaricom Business Support is 0722 002 100 or business@safaricom.co.ke. Escalate when the statement itself looks wrong (a credit missing that the customer SMS confirms arrived at your till, a duplicated debit, a mis-posted amount). Do not escalate customer typos, POS mis-tags or internal reversal control gaps; Safaricom cannot fix those.
Related business guides
- M-PESA for Business hub
- M-PESA daily till reconciliation
- Customer disputes and chargebacks
- Float management for shops and agents
- M-PESA B2C for supplier payments and refunds
- How to accept M-PESA payments in your shop
- How to reverse an M-PESA transaction
- How to download an M-PESA statement
- M-PESA charges 2026
FAQ
The statement is short by KES 200, my POS says the customer paid. What now?
Ask the customer for the M-PESA confirmation SMS or the M-PESA App transaction record. Read the paybill or till number aloud. If they paid a different till (a common typo or a competitor next door with a similar number), you have a customer-error case; guide them to reverse via 456 and repay. If the confirmation shows your correct till, escalate to Safaricom Business Support on 0722 002 100 with the M-PESA reference.
Do M-PESA transactions ever silently fail after the customer sees success?
Very rarely, and never silently for the merchant. Every completed customer send generates a matching Business Portal credit line. What does happen: delayed statement generation. A payment at 23:55 may not appear on today's report but is on tomorrow's. Also: STK Push (Lipa na M-PESA online) can time out on the customer app while the server has actually completed the transaction; in this case the credit is on your till and the customer should also have received the SMS.
Statement is over by KES 500, POS shows no matching sale.
Common causes: a customer overpaid (paid KES 500 for a KES 300 item), a staff member cash-refunded a customer but did not void the M-PESA line (the customer got both), or a cash-only sale was rung as an M-PESA sale on the POS. Cross-check by comparing cash drawer count against cash-only POS lines: a matching cash short usually explains a matching M-PESA over.
Can staff reverse M-PESA transactions on the till?
Buy Goods reversals require the operator to initiate through the M-PESA Business Portal (or dial 456) and enter the transaction reference within seven days. The reversal is logged with the operator ID. Every reversal should be paired to a written slip: date, amount, customer, reason, operator, checker signature. Unreconciled reversals are the number one insider-fraud signal.
What is the timing-lag window?
M-PESA end-of-day statement generation runs on Safaricom infrastructure and can vary by a few minutes. Transactions confirmed to the customer between roughly 23:45 and 00:15 may land on either calendar day's report. Run tomorrow's statement before treating a late-night gap as loss.
How do I tell the difference between staff error and staff theft?
Staff error is random in direction (some overs, some shorts) and drops when the staff member is on leave. Staff theft is directional (usually shorts) and clusters by staff member and shift. A three-column pilferage log by staff, date and shift, kept for 14 days, exposes it.
Does Safaricom fix reconciliation errors?
Safaricom fixes errors on their side (a duplicated debit, a delayed credit, a mis-posted amount). They will not fix a customer typo (customer paid a different till) or an internal control gap (missing operator log). Business Support 0722 002 100 is the escalation line; keep the till shortcode, transaction reference and date range to hand.
Verified 1 September 2026. Reversal window and Business Portal flows verified on m-pesaforbusiness.co.ke on 1 September 2026. Escalation numbers from Safaricom Business Support.
Related reading
Curated external sources we cite. Open in a new tab.
M-Pesa Buy Goods (Till) Calculator
Till number transaction calculator from a merchant perspective.
mpesa.or.ke · calculator
Fuliza for Business Calculator
B2B Fuliza fees for merchants who use Fuliza for Business.
mpesa.or.ke · calculator
M-Pesa Bulk Payments Calculator
B2C bulk-disbursement fees for businesses paying many recipients.
mpesa.or.ke · calculator