Odoo KRA eTIMS Integration: A Practical Guide for Kenyan Businesses
How KRA eTIMS works, what compliance requires, and how to wire fiscal invoicing into Odoo so every sale is submitted to KRA automatically.
What is KRA eTIMS?
eTIMS (the electronic Tax Invoice Management System) is the Kenya Revenue Authority’s platform for issuing and transmitting tax invoices electronically. It succeeds the earlier TIMS regime and moves invoice validation from dedicated hardware devices to software and system-to-system connections. In practice, it means that a compliant invoice is registered with KRA at the moment it is issued, and the buyer receives an invoice carrying a control number and a QR code that can be verified.
For most VAT-registered businesses, issuing tax invoices through eTIMS is a compliance requirement — and expenses that are not supported by valid eTIMS-generated invoices can be disallowed for tax purposes. Because the exact scope and deadlines have changed over time, always confirm your current obligations against the latest KRA guidance for your business category.
The onboarding options — and why integration matters
KRA offers several ways to comply, and the right one depends on how many invoices you issue and where they originate:
- eTIMS portal / lite: manual entry through a web or mobile interface. Fine for very low volumes, painful at scale.
- eTIMS client software: a KRA-provided application on a dedicated machine.
- System-to-system (OSCU / VSCU): your business software talks directly to KRA. The Online Sales Control Unit (OSCU) suits systems that are consistently online; the Virtual Sales Control Unit (VSCU) suits higher-volume or intermittently connected setups.
If you run an ERP like Odoo, the system-to-system route is what removes the double entry. Instead of raising an invoice in Odoo and then re-keying it into an eTIMS portal, the invoice is fiscalized straight from Odoo and the KRA control details flow back onto the document automatically.
How Odoo + eTIMS integration works
When Odoo is connected to eTIMS through a control unit, a customer invoice follows a clean path:
- You confirm the invoice in Odoo as normal.
- The invoice payload — line items, tax rates, buyer PIN where applicable — is transmitted to KRA.
- KRA returns a control unit invoice number, a signature, and a QR code.
- Those details are stored on the Odoo invoice and printed on the customer’s copy.
Getting this right involves more than a connection string. Your Odoo tax configuration has to map cleanly to KRA’s tax categories, your products need correct tax treatment, and credit notes and exempt or zero-rated items must be handled the way KRA expects. This is where a careful implementation pays for itself — a mis-mapped tax code produces invoices that either fail to transmit or transmit incorrectly.
Common pitfalls we see
- Tax codes in Odoo that don’t correspond to KRA categories, causing rejected submissions.
- Missing buyer PINs on B2B invoices where they are required.
- Credit notes not linked to their original invoice, breaking the audit trail.
- Treating eTIMS as a one-off switch rather than testing across your real invoice types.
A sensible rollout plan
We recommend a phased approach: confirm your KRA onboarding and obtain credentials, map your Odoo taxes and products to eTIMS requirements, run a test batch across every invoice type you actually issue (standard, exempt, zero-rated, credit notes), then go live and monitor the first days closely. Done this way, fiscalization becomes invisible to your sales team — they raise invoices, and compliance happens underneath.
Need eTIMS working inside your Odoo?
We localize Odoo for KRA eTIMS, M-Pesa, and Kenyan payroll — as an Odoo Learning Partner based in Nairobi.
Talk to our Odoo team →This article is general information, not tax advice. Confirm your specific eTIMS obligations with KRA or a qualified tax advisor.