Why M-Pesa needs its own reconciliation
For many Kenyan businesses, M-Pesa carries most of the customer payments, so the M-Pesa statement is as important as the bank statement. Receipts arrive instantly but carry only a transaction code, a payer name or number and an optional reference, so identifying what each one pays for needs a process.
Without reconciliation, unpaid invoices look paid, paid invoices look overdue, and the cash position is wrong. Customers are then chased for money they already sent, which damages relationships, or the reverse happens and genuinely overdue accounts are forgotten.
There is also a tax angle. Revenue received through M-Pesa belongs in your sales records and, where you are VAT-registered, must be backed by tax invoices. A pile of payments with no invoices is exactly what KRA questions during a review.
Staff turnover makes this worse. When the person who knows which customer uses which phone number leaves, undocumented knowledge disappears with them. A shared customer list with the numbers each customer pays from lets anyone identify payers when the statement shows only a name.
Till, Paybill and what each statement shows
A Buy Goods Till records the payer's number and name, the amount and the transaction code. It suits quick retail payments, but it carries no invoice reference unless the customer tells you separately. Matching therefore relies on amount and time, which becomes ambiguous when two customers pay the same price.
A Paybill adds an account number field, which the customer types when paying. If you ask customers to enter the invoice number as the account number, the statement itself shows which invoice each payment belongs to. This is the single most useful change a growing business can make.
Authorised users can download statements from the M-Pesa business portal. Settle the question of who holds portal access and what role each user has, because a departing employee with live access is a control weakness that auditors will point out.
A practical matching routine
Download the statement for the period and sort receipts by date. For each line, find the open invoice with the same reference or amount, and record the M-Pesa transaction code against the invoice in your records. The code is the proof of payment you will quote in any dispute.
Treat three situations explicitly. Part-payments reduce the invoice balance but leave it open. Over-payments become a credit to refund or apply later. One payment covering several invoices needs a written allocation. Handling these on the spot prevents a growing list of mystery balances.
Place anything you cannot match on a suspense list with the date, amount and payer details, and follow up within days. Call the payer or ask the sales team who they were dealing with. Unmatched receipts older than a month are hard to resolve and risk being booked as revenue twice.
Time stamps help when references are missing. A payment arriving two minutes after a sales rep sent an invoice message is almost certainly for that invoice. Keep the delivery or invoice message log, since it can break ties between two similar amounts when the customer cannot be reached.
Receipts, refunds and disputes
Customers expect confirmation after paying. The M-Pesa confirmation message gives them proof of payment, but a business should still send its own acknowledgement or receipt that references the invoice number. That closes the loop and prevents repeat payments.
Refunds should go back the way the money came, with a note linking the refund to the original transaction code and the reason. Keep the approval of who authorised it, because refunds are a common route for fraud when no one checks them.
In disputes, the statement, transaction code, invoice and delivery proof together make the case. Keep them filed by month. Safaricom and the customer may both ask for the transaction code, and being able to quote it immediately resolves most disagreements.
Reversals deserve a clear rule. If a customer pays the wrong amount or the wrong Paybill, document the request, check the funds actually arrived, and follow Safaricom's reversal channel where the money did not belong to you, instead of improvising a refund from another account.
Linking receipts to tax records
For VAT-registered businesses, each sale needs a valid eTIMS tax invoice, whatever the payment method. Reconcile the M-Pesa statement to the eTIMS sales list at month end, and investigate any receipt without a corresponding invoice. Either an invoice is missing or the money is unrelated to sales.
Record M-Pesa charges as bank-type expenses and keep the statement as support. Transaction fees affect profit and, in some cases, VAT treatment, so ask your accountant how to book them.
Do not mix personal and business wallets. Using a personal number to collect business payments makes it impossible to prove which receipts are revenue, and it invites tax questions that a Till or Paybill in the company name would avoid.
When a customer asks for a tax invoice after paying on the Till, issue it from your eTIMS route and reference the M-Pesa code, so the payment, sale and tax record link up. Doing it at the time of sale is far easier than reconstructing hundreds of till payments for a VAT return.
What 4b2b can and cannot do
4b2b does not connect to M-Pesa Daraja and has no webhook integration, so payments are not matched automatically. The matching is a manual step, with the 4invoices.net archive acting as your list of open invoices.
You can send a receipt message yourself by SMS or e-mail from 4notify.net, quoting the invoice number and the M-Pesa code. Messages go out only when you send them, and there is no automatic receipt generation.
If your volume grows to the point where manual matching consumes days, speak to a provider that offers a Daraja integration and confirm what it covers. Evaluate it against your own reconciliation checklist, not just a demo.