Payments

M-Pesa reconciliation: the three-way match that ends disputes

A payment, the invoice it settles, and the balance change must agree — here is the matching rule that keeps the ledger honest.

25 September 2026 · Payments

The three-way match

Every M-Pesa payment that lands in your paybill or till number has three faces: the mobile-money statement line, the invoice you raised, and the subscriber balance that moves. When all three agree, the payment is done. When one drifts, the dispute starts.

The rule is simple: the statement amount, the invoice amount, and the balance delta must be identical. If the customer paid 3,500 but the invoice was 3,400, the extra 100 is not a payment — it is an open item until the customer tells you what it is for.

Unverified, then posted

Import the statement, but do not post to a subscriber until the match is explicit. A payment sits in an unverified bucket until a rule or a person links it to the right invoice. That bucket is the only place mobile-money money lives before it becomes revenue.

Posting without a match is how phantom credits appear — the customer sees a balance drop, the operator sees no invoice, and the next bill run carries a ghost credit that nobody can explain.

Fixed rule, fixed schedule

Automation is a rule you wrote, not a robot you trust. Start with exact amount + phone number + reference; anything that fails stays in the bucket. Run the rule on a schedule — daily for busy paybills, every weekday for quieter ones — so no day's transactions wait more than one cycle.

The schedule is the discipline. A bucket that grows for three days is a process that has already failed, even if the money is sitting there.

Blog

The guides go deeper

Blog posts are the entry point — the resources hub has the full guides and playbooks.