Why M-Pesa and eTIMS are now non-negotiable
Two things have changed Kenyan retail for good. Most customers now pay by M-Pesa, and KRA's eTIMS system has made electronic tax invoicing the standard rather than the exception. Any retail software sold in Kenya in 2026 has to handle both convincingly.
The problem is that many systems claim to support M-Pesa and eTIMS while really offering a thin version that pushes the hard work back onto you. Knowing the difference between real integration and a cosmetic one is the whole point of this guide.
What real M-Pesa integration actually does
There is a big gap between accepting M-Pesa and integrating M-Pesa. The weak version lets a cashier type in the amount received and mark the sale as paid. That records the sale but proves nothing, and you still reconcile every payment against your statement by hand at closing.
Real integration uses Safaricom's Daraja API to confirm that the payment actually arrived and to match it against the sale automatically. That turns your evening reconciliation from a line-by-line chore into a quick check. When you evaluate a system, ask specifically whether it reconciles M-Pesa automatically or only records what the cashier typed.
What genuine eTIMS compliance looks like
eTIMS compliance is not about printing a document that looks official. It is about generating a valid tax invoice and transmitting it to KRA so your sales and your tax position stay in step automatically.
Ask whether the system covers the invoice types you actually issue, how it handles credit notes and corrections, and whether transmission to KRA is automatic or something you trigger by hand. If eTIMS is handled in a separate app that you update manually, that gap is where mismatches and stress come from. Genuine compliance means the invoice and its transmission are one seamless step at the till.
Offline invoicing is where many systems fail
Connectivity in Kenyan trading areas is good until it is not, and an outage must never stop you selling or invoicing. The correct behaviour is clear: keep issuing invoices offline, store them safely, and transmit them to eTIMS automatically once the connection returns.
This is one of the most important things to test, because it is where imported or lightly built systems break. Ask the supplier to disconnect the internet mid-demo and show you what happens to the sale and the eTIMS invoice. If the system freezes or forces you to wait, it was not built for how Kenya really trades.
The signs of fake or shallow integration
A few warning signs quickly reveal software that only claims to support M-Pesa and eTIMS. Watch for them when you evaluate.
- You still type the M-Pesa amount in manually and confirm it yourself.
- eTIMS invoices are created in a separate app, not at the till.
- Reconciliation still means comparing your statement line by line.
- The demo avoids making a real M-Pesa payment or filing a real invoice.
- The system stalls or refuses to invoice when the internet drops.
- M-Pesa or eTIMS are described as paid add-on modules rather than core features.
Why one integrated system beats stitching tools together
Some shops run a till, a separate M-Pesa process and a separate eTIMS tool and call it a solution. It works, but it is fragile: the same sale gets entered more than once, small differences creep in between the tools, and reconciliation becomes a daily puzzle.
One system that records the sale, confirms the M-Pesa payment and files the eTIMS invoice from a single action removes that whole class of problems. The data is entered once and stays consistent everywhere. For most shops the integrated route is not only calmer but genuinely cheaper once you count the time lost to double entry and error-chasing.
How to test integration before you commit
The most reliable test is a live demo on your own terms. Bring your real products and prices, and insist on making an actual M-Pesa payment and issuing a real eTIMS invoice during the session.
Watch three things: does the M-Pesa payment confirm and reconcile without extra typing, does the eTIMS invoice generate and transmit in one step, and what happens when the connection is cut. A supplier confident in their integration will happily show all three. Hesitation or a scripted demo that avoids real transactions tells you what you need to know.
How Upeosoft handles M-Pesa and eTIMS
Upeosoft builds retail management on ERPNext and Frappe with M-Pesa and eTIMS handled as part of the core, not as bolt-on modules. M-Pesa payments are confirmed and reconciled through Daraja, eTIMS invoices are generated and transmitted to KRA, and invoices created offline queue and sync automatically when the connection returns.
Because it is one system, a sale is entered once and stays consistent across your books, your stock and your tax records. If you want to see it work with your own products and a real payment, the retail page is the place to arrange a proper demo - and we would rather show you than just tell you.
