Skip to content
M-PESA for Business

M-PESA Reconciliation Mismatch (2026): the diagnostic ladder

A working diagnostic ladder for M-PESA till reconciliation mismatches. Isolate typos, duplicates, wrong-till payments, staff reversals, timing lag and pilferage in order.

JN
by Reviewed by Michael Mwangi
10 min read Updated 1 September 2026Verified 01 Sept 2026

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.

RungCauseSignalCheck
1Customer typo (wrong till)Customer insists they paid; SMS shows a different till numberRead till number on SMS aloud to customer
2Duplicate or overpaymentStatement over vs POSFilter statement for two receipts with same customer number within 5 minutes
3Unlogged reversalPOS sale line present, no matching statement credit, but reversal shows on statementCross-check reversal log slips against Business Portal reversal report
4Midnight timing lagMissing amount is a late-evening transactionPull the next-day statement; the missing credit is on it
5POS tender mis-tagCash short matches M-PESA over, or reverseCompare cash count vs cash-tagged POS lines by shift
6PilferageDirectional shorts clustering by staff and shift over 14+ daysThree-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.

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.