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.
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.
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)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 dataThe 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.86Two 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
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
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.
SetupCustomer 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 qualitySigned 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.
InvoicingCredit 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.
CorrectionsPoint 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.
RetailQueue, 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.
ReliabilityPurchases 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.
InventoryReconciled 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.
ReportingFrom 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 →Registration
Your business is registered on eTIMS under its KRA PIN and the integration route, OSCU or VSCU, is chosen with you.
Mapping
Products, tax categories, branches and tills are mapped to KRA's codes. Customer PINs are cleaned and validated.
Sandbox testing
Invoices, credit notes, receipts and, where required, stock and purchase records are run through KRA's test environment until every case passes.
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.
Same integration, different tills.
Each industry signs a different kind of document. The integration is configured to the way each one sells.
eTIMS and Odoo, answered.
Do I need eTIMS if my business is not VAT-registered?
OSCU or VSCU, which one do I need?
Does the integration work with Odoo Community?
What happens when the internet drops?
Does eTIMS replace filing VAT on iTax?
Can we run several branches under one Odoo?
We already have Odoo. Can you add eTIMS to it?
How much does eTIMS integration cost?
The rest of the Kenyan stack.
Odoo implementation in Kenya
What a full implementation includes, Community versus Enterprise, and what drives the cost.
Read the guide ServicesIntegrations: M-Pesa, banks, WhatsApp
eTIMS is one of six services. M-Pesa Daraja, bank statements and notifications sit next to it.
See services Case studiesSigned invoices in the wild
Cargo, property and pharmacy clients running eTIMS inside Odoo, with the numbers.
See case studiesGet 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.
- 1You write to us. Form, email, or WhatsApp. ~5 min
- 2We reply. Real questions, not a pitch. within 24h
- 3We meet. 45 minutes, no charge. within a week
Begin a project
Replies within 24hBy submitting, you agree to be contacted about your project. We never share enquiries with third parties.
Thanks. We have your note.
An Odoo consultant will reply within 24 hours, weekdays.
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.
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.
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)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 dataThe 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.86Two 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
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
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.
SetupCustomer 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 qualitySigned 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.
InvoicingCredit 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.
CorrectionsPoint 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.
RetailQueue, 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.
ReliabilityPurchases 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.
InventoryReconciled 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.
ReportingFrom 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 →Registration
Your business is registered on eTIMS under its KRA PIN and the integration route, OSCU or VSCU, is chosen with you.
Mapping
Products, tax categories, branches and tills are mapped to KRA's codes. Customer PINs are cleaned and validated.
Sandbox testing
Invoices, credit notes, receipts and, where required, stock and purchase records are run through KRA's test environment until every case passes.
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.
Same integration, different tills.
Each industry signs a different kind of document. The integration is configured to the way each one sells.
eTIMS and Odoo, answered.
Do I need eTIMS if my business is not VAT-registered?
OSCU or VSCU, which one do I need?
Does the integration work with Odoo Community?
What happens when the internet drops?
Does eTIMS replace filing VAT on iTax?
Can we run several branches under one Odoo?
We already have Odoo. Can you add eTIMS to it?
How much does eTIMS integration cost?
The rest of the Kenyan stack.
Odoo implementation in Kenya
What a full implementation includes, Community versus Enterprise, and what drives the cost.
Read the guide ServicesIntegrations: M-Pesa, banks, WhatsApp
eTIMS is one of six services. M-Pesa Daraja, bank statements and notifications sit next to it.
See services Case studiesSigned invoices in the wild
Cargo, property and pharmacy clients running eTIMS inside Odoo, with the numbers.
See case studiesGet 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.
- 1You write to us. Form, email, or WhatsApp. ~5 min
- 2We reply. Real questions, not a pitch. within 24h
- 3We meet. 45 minutes, no charge. within a week
Begin a project
Replies within 24hBy submitting, you agree to be contacted about your project. We never share enquiries with third parties.
Thanks. We have your note.
An Odoo consultant will reply within 24 hours, weekdays.