What a mismatch is really telling you
When your M-Pesa total and your sales total disagree, the difference is not random. Every shilling went somewhere or was recorded wrongly somewhere. The mismatch is the sum of every small error in the day, netted into one number. Your job is to break that one number back into its parts.
There are only four common causes, and each leaves a different fingerprint. A sale recorded but not paid leaves you short on M-Pesa. A sale paid but not recorded leaves you long on M-Pesa. A payment sent to the wrong number never reaches your statement at all. And cash taken out without a note shows as a shortfall that no M-Pesa entry explains. Knowing the four lets you sort the gap fast.
How to trace an M-Pesa mismatch
Work from the biggest discrepancy down. Most gaps are one or two transactions, not a hundred tiny ones.
- 1
Step 1: Confirm the size and direction
Are you short or over, and by how much? Short means money you expected did not arrive. Over means money arrived that you did not record as a sale.
- 2
Step 2: Check for unpaid sales
Look for sales in your records with no matching payment. A credit sale or a customer who promised to send money and left is the most common shortfall.
- 3
Step 3: Check for unrecorded sales
If you are over, look for M-Pesa receipts with no matching sale. Someone paid and the sale was never rung up. This understates your income.
- 4
Step 4: Check for wrong-number payments
Ask whether any customer paid a personal number or an old till by mistake. That money is real but never hits your business statement, so it reads as a permanent shortfall until traced.
- 5
Step 5: Check withdrawals and float moves
Cash taken out for change, M-Pesa float, or an errand must be recorded. An unrecorded withdrawal looks exactly like a shortfall.
- 6
Step 6: Look for a pattern over the week
If the mismatch repeats at the same till, shift or time, you have found a systematic cause: a workflow step that always leaks, or a pattern worth watching for theft.
Mistakes that cause or hide mismatches
Accepting the gap as "shrinkage"
Writing off a mismatch as unavoidable loss means you never find the cause, so it repeats every month.
Reconciling too late
A month-old mismatch cannot be traced. Daily reconciliation keeps each gap small and recent enough to solve.
One shared login for all staff
If everyone uses the same till login, a mismatch cannot be tied to a person or shift, so you lose half the trail.
No record of credit sales
If credit sales are not recorded as sales-awaiting-payment, they look identical to theft when the money does not arrive.
Manual re-typing of M-Pesa amounts
Typing the M-Pesa figure by hand introduces its own errors. Pulling it from the statement removes a whole class of mismatch.
Tracing a stubborn KES 6,000 gap
A minimart in Eldoret is short KES 6,000 across a week and the owner suspects theft. Reconciling each day separately, she finds the gap is not spread out: it is two transactions. A KES 3,500 sale on Tuesday has no payment, and a KES 2,500 sale on Friday has no payment.
The Tuesday sale was a regular customer buying on credit, correctly given goods but never recorded as a credit sale, so it looked like a loss. The Friday gap was a customer who paid an old till number the shop had stopped using. Neither was theft. One was a recording habit to fix, the other a dead till to deactivate.
The lesson is that a mismatch breaks down into named transactions once you stop treating it as one big number. The owner kept the staff she had nearly accused, fixed the credit-sale habit, and closed the old till.
When M-Pesa payments are not matched to sales, a missing payment, a staff shortfall or a double charge can slip past you until the money is already gone.
Veira reconciles M-Pesa Till and Paybill against every sale, so a mismatch surfaces the same day instead of at month end.
How Veira automates this
Veira links every sale to its payment in real time, so a mismatch never builds up unnoticed. A sale without a matching M-Pesa or cash payment is flagged the moment it happens, and a payment with no sale is flagged too. The gap is named at the transaction level, not left as a lump sum at month end.
Because each sale is tied to the staff login and time that made it, a repeating mismatch points straight to its source: a particular shift, till or product. You spend your time fixing the cause instead of suspecting everyone.
Frequently asked questions
Why does my M-Pesa total not match my sales?
I am short on M-Pesa. Where do I look first?
I am over on M-Pesa. What does that mean?
How do I know if a mismatch is theft or just an error?
Can a customer paying the wrong till cause a mismatch?
Why is daily reconciliation the key to solving mismatches?
How do I stop the same mismatch recurring?
An M-Pesa reconciliation mismatch is a trail, not a mystery. Confirm the size and direction, check the four usual causes, trace from the largest transaction, and read the weekly pattern. Veira names the gap for you at the transaction level so you fix the cause, not the symptom. See how Veira works and book a free demo.