Skip to Content
/KRA eTIMS · Odoo · Kenya

KRA eTIMS integration for Odoo. Every invoice signed, from inside Odoo.

Sahal Innovations connects Odoo to KRA's eTIMS through the OSCU and VSCU system-to-system routes. Invoices, credit notes and till receipts are signed by KRA at the moment they are confirmed in Odoo, with the control unit number and QR code on the document your customer receives. No portal, no re-keying, no unsigned invoices.

RoutesOSCU for always-online invoicing, VSCU for bulk and intermittent connectivity
DocumentsInvoices, credit notes, POS receipts, purchases and stock movements where KRA requires them
EditionsOdoo Community and Enterprise, self-hosted or on Odoo.sh
TeamNairobi-based, working with Kenyan businesses since 2021
01Why it matters in 2026

eTIMS stopped being a VAT question. It now decides what you can deduct.

Three rules, in plain terms. This is not tax advice; it is the reason the integration is no longer optional.

01

Expenses need an eTIMS invoice

Under Section 16(1)(c) of the Income Tax Act, a business expense not supported by a valid eTIMS invoice cannot be deducted. This applies whether or not you are VAT-registered, with a short list of exemptions such as salaries, imports and interest. Your suppliers' compliance is now your problem too.

Income Tax Act, s.16(1)(c)
02

KRA cross-checks returns line by line

Since January 2026, KRA validates the income and expenses declared on iTax against the eTIMS invoices actually transmitted, together with withholding tax and customs data. An expense with no matching eTIMS invoice is disallowed at filing, not argued about at audit.

iTax validation against eTIMS data
03

The penalty is twice the tax

Section 86 of the Tax Procedures Act sets the penalty for failing to issue an electronic tax invoice at twice the tax due on that transaction. For a business issuing hundreds of invoices a month from a system that does not sign them, that adds up quickly.

Tax Procedures Act, s.86
02OSCU or VSCU

Two routes into eTIMS. We pick by how your business actually invoices.

Both are KRA's system-to-system integrations for ERPs. The difference is connectivity and volume, not compliance.

OSCU

Online Sales Control Unit. Every invoice signed in real time.
  • Odoo calls KRA when an invoice is confirmed and prints the signed document seconds later
  • Simplest to run when the office is always online
  • Suits services firms, distributors, property, cargo, NGOs and most head-office invoicing
  • We still queue and retry if the connection drops, so nothing is lost
Fits businesses that invoice from an office with reliable internet.

VSCU

Virtual Sales Control Unit. Built for bulk and for places that are not always online.
  • Invoices are signed locally and synchronised to KRA in batches
  • Keeps a till or a branch selling through power cuts and dropped connections
  • Suits pharmacies, hardware stores, supermarkets, petrol stations and multi-branch retail
  • Handles high volumes without a KRA round-trip on every receipt
Fits point of sale, high volume, and anywhere outside reliable coverage.
03How the integration works in Odoo

What happens between "Confirm" and the signed invoice.

The integration lives inside Odoo's normal invoicing flow. Your accounts team does not learn a second system.

Items and tax codes mapped once

Every product carries its KRA item classification code and tax category, from 16% VAT to zero-rated and exempt. Set once at go-live, validated on every document, so mismatches are caught in Odoo rather than rejected by KRA.

Setup

Customer PIN validated

A customer's KRA PIN is checked against KRA when it is entered, not when the invoice bounces. Invoices to buyers without a PIN are still signed, correctly, as consumer sales.

Data quality

Signed on confirmation

Confirming an invoice sends it to KRA. The control unit invoice number, the KRA receipt details and the QR code come back and are printed on the PDF your customer receives, from Odoo's own invoice template.

Invoicing

Credit notes reference the original

Credit notes are signed against the original invoice's control number, as KRA requires. Partial credits, returns and discounts after the fact all keep the chain intact.

Corrections

Point of sale at the till

Odoo POS receipts are signed too, including when the till is offline, and M-Pesa STK push sits in the same checkout. One sale, one signed receipt, one ledger entry.

Retail

Queue, retry, never lose one

If KRA or your connection is down, documents wait in a queue and are signed the moment it is back. Nothing is skipped and nothing is issued twice. A dashboard shows what is pending.

Reliability

Purchases and stock

Where KRA requires it, purchase invoices and stock movements are reported from the same records Odoo already keeps. Your inventory and your eTIMS position stop drifting apart.

Inventory

Reconciled to iTax

A monthly report lists every document signed, its KRA number and its tax, so the VAT3 you file agrees with what KRA already holds. Audit questions get answered from Odoo, not from memory.

Reporting
04Getting connected

From KRA PIN to production keys.

KRA does not hand out production access on request. An integration is developed against KRA's sandbox, tested, then vetted by KRA before production credentials are issued. We take your Odoo through that process and stay on the account afterwards, because KRA updates its API and a signed invoice today has to still be a signed invoice next year.

The integration is included in our Odoo implementations. If you already run Odoo, from us or from anyone else, we scope the integration on its own after a look at your setup.

Get your Odoo connected
01

Registration

Your business is registered on eTIMS under its KRA PIN and the integration route, OSCU or VSCU, is chosen with you.

02

Mapping

Products, tax categories, branches and tills are mapped to KRA's codes. Customer PINs are cleaned and validated.

03

Sandbox testing

Invoices, credit notes, receipts and, where required, stock and purchase records are run through KRA's test environment until every case passes.

04

KRA vetting and go-live

KRA reviews the integration and issues production credentials. First live invoices are signed with us watching, then the monthly reconciliation takes over.

05Where it runs

Same integration, different tills.

Each industry signs a different kind of document. The integration is configured to the way each one sells.

06Questions we get asked

eTIMS and Odoo, answered.

Do I need eTIMS if my business is not VAT-registered?
Yes, in practice. Since January 2024 the deduction rule applies to every business, not only VAT-registered ones: an expense without an eTIMS invoice is not deductible for income tax, and your customers face the same rule on the invoices you issue them. A short list of exemptions exists, such as salaries, imports and interest. If you sell to businesses, they will ask you for eTIMS invoices.
OSCU or VSCU, which one do I need?
OSCU if you invoice from an office that is reliably online: each invoice is signed in real time. VSCU if you run tills, branches or high volumes, or your connection is unreliable: documents are signed locally and synchronised in batches. Many businesses use OSCU at head office and VSCU at the branches. We choose with you during scoping.
Does the integration work with Odoo Community?
Yes. It works on Odoo Community and Odoo Enterprise, self-hosted or on Odoo.sh. On Community it works alongside the OCA accounting modules we install; on Enterprise it works with Odoo's own accounting.
What happens when the internet drops?
Documents are queued and signed automatically when the connection returns. Nothing is skipped and nothing is issued twice. On VSCU, tills keep issuing signed receipts offline and synchronise later. A dashboard in Odoo shows anything still pending.
Does eTIMS replace filing VAT on iTax?
No. eTIMS signs and transmits your invoices; you still file the VAT3 return on iTax by the 20th of the following month. What the integration gives you is a monthly reconciliation report so the return you file agrees with the invoices KRA already holds.
Can we run several branches under one Odoo?
Yes. Each branch and till is registered with KRA and mapped in Odoo, so receipts carry the right branch details and stock movements are reported per location. Head office sees one consolidated set of accounts.
We already have Odoo. Can you add eTIMS to it?
Yes, whoever implemented it. We review your setup, map products and tax codes, take the integration through KRA's sandbox and vetting, and hand over production with the same support SLA our implementation clients have.
How much does eTIMS integration cost?
It is included in our Odoo implementations. As a standalone integration on an existing Odoo, the price depends on the route (OSCU or VSCU), the number of branches and tills, and how clean your product and customer data is. We quote a fixed price after a look at your system.
/Get in touch

Get your invoices signed.

Tell us how you invoice today and where your tills are. We come back with the route, the scope and a fixed price.

What happens next
  1. 1
    You write to us. Form, email, or WhatsApp. ~5 min
  2. 2
    We reply. Real questions, not a pitch. within 24h
  3. 3
    We meet. 45 minutes, no charge. within a week

Begin a project

Replies within 24h

By submitting, you agree to be contacted about your project. We never share enquiries with third parties.

That did not go through. Email sahalinnovation@gmail.com or WhatsApp +254 705 109 086 and we will pick it up.

Thanks. We have your note.

An Odoo consultant will reply within 24 hours, weekdays.