Stop matching Till messages by hand: M-Pesa reconciliation done right.
Till and Paybill messages arrive by the dozen while you're mid-meeting. Here's how to turn that message stream into a reconciled ledger that ties out at month-end — without turning into a full-time data entry job.
Reconciliation breaks when payments carry no reference and invoices are matched from memory.
Use Paybill account numbers (or invoice references) so each payment names its invoice.
Match on the day, not the week after — the message stream is only reliable while it's fresh.
A reconciled month-end is a short list of outstanding invoices and a ledger that ties out.
Why manual matching always breaks.
Here's the routine most Kenyan SMEs run: the phone buzzes all day with "K Sh 4,500 received from ...", you glance at it, maybe you scribble a note, and at month-end you sit down with a spreadsheet and try to remember which payment belonged to which invoice. Somewhere around the fortieth row you give up and "adjust" the difference.
The problem isn't discipline — it's that a raw M-Pesa message doesn't name the invoice it's paying. It has an amount, a sender, a Till or Paybill number, and a time. None of those tell you it settled INV-2026-0148. So every payment needs to be matched by guesswork, and guesswork doesn't survive an audit.
The four numbers that actually matter.
Detail
Why it matters
Amount
The first thing that should match your invoice total.
Sender
Tells you who paid — but not what.
Till / Paybill
Which channel the money came through — your data vs. personal.
Reference
The missing piece: what the payment was for.
Get the reference right and reconciliation stops being detective work.
Close the loop: invoice → payment → records.
The loop that works is boring and it works every month:
Raise the invoice with a reference. A sequential number is enough — but it must be on the invoice your client sees, because that's what they'll quote when they pay.
Take payment against that reference. On a Paybill, the account number is the reference. On a Till, the customer quotes it in the payment message.
Match on the day. The moment the message lands, attach it to its invoice. It takes seconds when it's fresh and an afternoon when it's a month old.
Close the month. The open list is exactly the invoices nobody has paid. No mystery balances.
When it's working, your month-end looks like this — every payment reconciled to an invoice before you've finished your tea:
Till 400200 · Sabby Traders+ KES 52,200
RECONCILED→ INV-2026-0148
Paybill 522533 · W. Fashions+ KES 12,000
RECONCILED→ INV-2026-0152
Card via Pesapal · Diaspora client+ USD 210
RECONCILED→ INV-2026-0155
Till or Paybill?
Both are valid business channels; they just suit different jobs. A Till is what retail customers expect — quick, no account number to remember. A Paybill with an account number is the better fit for invoiced sales, because the account number is the reference. If a customer pays an invoice through the wrong channel, that's fine — the reference in the message still tells you what they paid for.
What a reconciled month actually buys you.
An answer to "who hasn't paid?" in ten seconds, not two days.
Cash flow you can see. You know what's committed, what's outstanding, what's overdue.
An audit trail that tells one story. Invoice → payment → ledger, with nothing reconstructed from memory.
Less month-end panic. The "adjustment" column disappears.
The automation short-cut
Tieghtsuite does the matching for you — payments land against the right client and invoice the moment they arrive, whether they come through a Till, a Paybill, or card via Pesapal. The loop above is what your accountant wishes every client ran. Try it free.
Approved for your business
Let the payments sort themselves.
Every M-Pesa payment reconciled to its invoice automatically — Till, Paybill, or Pesapal card. Set up in about five minutes.