Date: Oct 03, 2026

Subject: Automating VAT Returns Against eTIMS Data

Automating VAT Returns Against eTIMS Data

$ whoami
a tired finance manager at 11:47pm, three days before the VAT filing window closes
$ status --check
eTIMS invoices: reconciled manually, again
sales ledger vs eTIMS: off by a figure nobody can explain
coffee: finished
$ echo "there has to be a better way"
there has to be a better way
$ _

Person working on laptop with financial documents and calculator

If you run finance for a business in Kenya — whether it's a retail shop in Nairobi's CBD, a SACCO processing member transactions, a clinic billing patients, or an agency invoicing clients in three different currencies — you've probably felt the particular dread of VAT season colliding with eTIMS reconciliation. The two systems exist for related reasons but don't always speak to each other cleanly, and the gap between "what eTIMS says we invoiced" and "what we're about to declare on our VAT return" is where errors, late nights, and occasionally penalties live.

This post is about closing that gap through automation — not as a magic fix, but as a disciplined, well-built system that takes repetitive reconciliation work off your team's plate and reduces the chance of filing something that doesn't match your actual trading records. We'll go through why this problem exists, what a sensible automated pipeline looks like, and the practical pitfalls that trip up businesses building or buying these systems in the Kenyan context.

Why eTIMS and VAT Returns Don't Automatically Agree

eTIMS (the electronic Tax Invoice Management System administered by KRA) exists to capture invoice-level data at the point of transaction, giving KRA real-time visibility into sales as they happen. Your VAT return, on the other hand, is a periodic summary submission that aggregates your output tax (VAT you charged) against your input tax (VAT you paid on business expenses) to arrive at what you owe or are owed.

In theory, if every invoice you issue goes through eTIMS correctly, and every return you file reflects exactly those invoices, the two should match perfectly. In practice, several things get in the way. Invoices get issued outside eTIMS and backfilled later. Credit notes and reversals don't always sync back cleanly. Businesses with multiple sales channels — a physical till, an online store, a field sales team using mobile money — end up with transaction records scattered across systems that were never designed to talk to each other. Add in Kenya's very real connectivity issues — a branch in a low-signal area submits its eTIMS invoices hours or days late — and you get a dataset that's technically compliant but practically messy by the time someone sits down to prepare a return.

The Manual Reconciliation Trap

Most SMEs we talk to handle this the same way: someone exports data from eTIMS (or pulls it from whatever accounting software is wired to it), exports data from the general ledger or POS system, and then manually lines up the two in a spreadsheet. This works, until the business grows past a certain transaction volume, at which point it becomes a monthly fire drill. The person doing it is usually not a tax specialist — they're an accountant, office manager, or owner wearing many hats, trying to spot discrepancies in rows of numbers while also running the actual business.

The real cost here isn't just time. It's the risk that a mismatched figure gets filed anyway because nobody had the bandwidth to chase it down, or that a legitimate input VAT claim gets missed because the supporting invoice wasn't matched correctly. Automation doesn't remove the need for human judgment on genuinely ambiguous transactions — it removes the tedious, error-prone matching work so a human can focus on the exceptions that actually need a decision.

What an Automated Reconciliation Pipeline Looks Like

Before reaching for any particular tool or vendor, it helps to understand the shape of the problem you're automating. At its core, you're trying to answer one question reliably, every filing period: does our internal transaction record match what's been reported through eTIMS, and if not, where exactly is the difference?

Step One: Get Clean, Structured Data Out of Every Source

Your first job is not reconciliation — it's extraction. You need a dependable way to pull structured invoice-level data out of eTIMS (via whatever export or integration KRA currently supports — confirm the exact mechanism and any API access with KRA or your eTIMS-compliant software provider, as this has evolved over time) and out of your own sales records, whether that's a POS system, an accounting package, or a custom-built ledger.

What to watch for here

Data from different systems rarely arrives in the same shape. Dates may be formatted differently, invoice numbers may have prefixes in one system and not the other, and currency handling can get messy if any portion of your business invoices in US dollars or another foreign currency alongside KES. Before you write a single line of matching logic, normalize everything into a common internal format — same date format, same currency convention, same identifier structure — or your automation will spend most of its effort fighting formatting inconsistencies instead of catching real discrepancies.

Step Two: Build the Matching Logic

Once your data is clean, the matching itself is usually done on a combination of invoice number, date, counterparty, and amount. Exact matches are easy. The harder cases are the ones where an invoice was issued with a small correction, split into two, or voided and reissued. A good automated system flags these as exceptions for human review rather than trying to silently guess which record is "correct" — silent auto-resolution is how small discrepancies turn into return filings nobody can explain later if KRA ever asks.

Tolerance thresholds and why they matter

You'll need to decide how strict your matching is. A system that only accepts perfect matches will flag everything as an exception the moment there's a rounding difference of a few cents, which quickly trains your team to ignore the exception report altogether. A system that's too lenient might wave through genuine errors. The right tolerance is a business decision, not a purely technical one — involve whoever signs off on your returns in setting it.

Step Three: Generate the Reconciliation Report, Not Just the Return

It's tempting to build straight toward "generate the VAT return automatically," but the more valuable output, especially early on, is a clear reconciliation report: here's what matched, here's what didn't, here's the monetary impact of each unmatched item. This gives your finance team (or your external accountant) something they can actually review and sign off on, rather than a black box that spits out a number they're expected to trust blindly. Once you've run this process for a few filing periods and built confidence in it, you can start automating more of the downstream return preparation itself.

Building vs Buying

For a growing business, the decision between building this in-house and buying an existing solution usually comes down to transaction volume, in-house technical capacity, and how specific your invoicing workflows are. A straightforward retail business with a single sales channel and a mainstream accounting package may find that an existing eTIMS-integrated accounting solution already does most of this reconciliation for them — worth checking with your software provider before building anything custom.

A business with more complex or fragmented sales channels — think a SACCO with branch-level transactions, an agency invoicing in multiple currencies, or a school handling fee payments through several channels including M-Pesa paybills — may genuinely need a custom pipeline that pulls from several sources. If you're building this yourself or with a developer, keep the scope realistic: a small, well-tested script that reliably flags discrepancies every month is worth far more than an ambitious system that's half-finished when filing deadlines arrive.

Cost Considerations for Kenyan Businesses

If you're evaluating third-party tools, pay close attention to how they're priced. Many compliance and accounting tools, especially those built abroad, are priced in US dollars, which means your costs move with the exchange rate even when your revenue doesn't. For a small business running on tight margins, this forex exposure can quietly erode the value of a tool that seemed affordable when you signed up. Where possible, favor tools priced in KES, or build in a buffer for exchange rate movement when budgeting for dollar-denominated subscriptions.

Connectivity and Reliability

Any automation you build or buy needs to assume that connectivity will occasionally fail — a branch office loses signal, Safaricom data is slow during peak hours, or power goes out mid-sync. Design (or choose) systems that queue and retry failed syncs rather than silently dropping data, and make sure someone is notified when a sync has failed rather than discovering it three weeks later during reconciliation. A system that fails loudly is far better than one that fails quietly.

Data Protection and Access Considerations

Automating VAT reconciliation means centralizing sensitive financial and customer data — invoice details, counterparty information, transaction histories — often across systems that weren't originally designed to share it. This raises real data protection considerations under Kenya's data protection framework, overseen by the Office of the Data Protection Commissioner. If your automation involves third-party tools processing this data, particularly cloud services hosted outside Kenya, check what their data handling practices are and whether they align with your obligations as a data controller. This is worth a direct conversation with whoever advises you on compliance, rather than an assumption either way.

Equally, think about internal access control. A reconciliation system that pulls together your full sales and tax data is a high-value target for internal misuse, not just external breach. Limit who can view and export the consolidated data, log access, and separate the people who can run reconciliations from the people who approve and file the final return.

Getting Started Without Overbuilding

If this all sounds like a lot of infrastructure for a business that just wants its VAT filing to stop being a monthly emergency, start small. Begin by automating the extraction and normalization of data from your two or three main sources. Run matching as a semi-manual process for a couple of filing cycles, using a spreadsheet or simple script, before investing in a fully automated pipeline. This lets you learn where your actual discrepancies come from — is it timing, is it a specific sales channel, is it a particular type of credit note — before you build automation to solve a problem you haven't fully diagnosed.

Whatever you build, keep a human in the loop for sign-off before filing. Automation here should reduce the volume of manual work and catch problems early, not remove accountability from the process. And because VAT rules, rates, and the technical requirements around eTIMS do change over time, make it a habit to check current requirements directly with KRA or a qualified tax advisor before each filing period, rather than relying on what was true when you first built your system. The goal isn't a system that never needs human attention — it's one that only needs human attention where it actually matters.

Want this handled for you?

We build AI agents and automation for Kenyan businesses — and the infrastructure underneath them. Run the automation scan and find out what's worth building first.

Run the Automation Scan < Back to Blog
SYSTEM INITIALIZATION...

We Engineer Certainty.

GeekforGigs isn't just a consultancy. We are a specialized unit of Cloud Architects and DevOps Engineers based in Nairobi.

We don't believe in "patching" problems. We believe in building self-healing infrastructure that scales automatically.

The Partnership Protocol

We work best with forward-thinking companies tired of manual deployments and surprise AWS bills.

We embed ourselves into your team to automate the boring stuff so you can focus on innovation.

Identify Target Objective

Current System Status?

Where's the manual work happening?

What are you using to manage it today?

> SCAN COMPLETE
AUTOMATION OPPORTUNITY: —

Establish Uplink

Mission parameters received. Enter your details to initialize the request.