Back to Blog

October 21, 2026

Odoo Streamlines Kenya’s eTIMS Tax Pipeline With a Same-Day Token Workflow and Duplicate Invoice Guards

Odoo overhauls its Kenya eTIMS integration with a same-day token provisioning workflow, a relocated settings path under the Accounting module, duplicate invoice number safeguards via developer mode sequence editing, mandatory per-branch OSCU device initialization, and stricter product registration requirements before stock moves reach the KRA.

Diagram showing the Odoo Kenya eTIMS integration workflow from company registration through token provisioning to device initialization

Kenya’s tax landscape has been in a state of rapid digitization since the Kenya Revenue Authority made the electronic Tax Invoice Management System mandatory for VAT-registered businesses. The system requires every invoice, credit note, and stock movement to pass through the KRA’s servers in real time — a tall order for any ERP that wants to stay compliant without slowing down daily operations. Odoo has just shipped a set of targeted improvements to its Kenya localization that address the most common pain points businesses hit during setup and ongoing use.

The Settings Path Moves Where It Belongs

The first change is navigational but meaningful. The Kenya eTIMS integration settings have moved from the general system settings into the Accounting module, specifically under Accounting, then Configuration, then Settings. It sounds minor, but anyone who has watched a bookkeeper hunt through general settings for a tax-specific toggle knows that placement matters. Grouping the eTIMS configuration alongside other accounting controls means the people who actually manage tax compliance — not system administrators — can find and manage the integration without detours.

Same-Day Token Provisioning by Email

The token provisioning process has been completely restructured. Rather than navigating a multi-step registration portal, businesses now email their KRA PIN, eTIMS portal password, and Odoo database name to a dedicated address. The response comes back the same day with an integration token that goes directly into the Integration Token field in Odoo’s settings. One email, one token, one field — and the eTIMS service request is complete.

The previous workflow involved more manual steps and left room for confusion about which credentials went where. The new approach reduces the provisioning process to a single point of contact and eliminates the back-and-forth that used to stretch device activation across multiple days.

A Safety Net for Duplicate Invoice Numbers

One of the more frustrating errors Kenyan Odoo users encounter is the “Invoice number already exists” rejection from the eTIMS system. This typically happens when the local invoice sequence falls out of sync with what the KRA portal has recorded — a scenario that can arise after data migrations, database restores, or manual invoice corrections.

Odoo now documents a clear recovery path. Users check the last recorded invoice number on the eTIMS portal, switch to developer mode, navigate to the “eTIMS Customer Invoice Number” sequence, and update the Next Number field to the next available value. It’s not automatic, but it’s explicit and repeatable — a significant improvement over the previous situation where the error message offered no guidance on resolution.

Every Branch Gets Its Own Device

Multi-company and multi-branch setups now carry a clear requirement: each branch must initialize its own OSCU device independently. The OSCU — Odoo’s Online Sales Control Unit — generates a unique serial number composed of the ODOO prefix, the company’s VAT number, and a branch-specific sequence. Sharing a device registration across branches is not supported, and attempting it will produce registration failures that can be difficult to diagnose without knowing this constraint exists.

For businesses operating multiple locations under a single Odoo instance, this means the initialization process runs once per branch. The branch ID fetching step is part of each individual setup, and the serial numbers are unique per location.

Product Registration Before Stock Moves

The product registration requirement has been tightened. Every product involved in a transaction must be registered with the eTIMS system before any stock movement referencing that product can be submitted to the KRA. Previously, the documentation suggested registering “the product(s)” involved in a specific transaction. The updated language makes clear that all products need to be registered upfront, not just the ones in an immediate shipment.

This is a practical distinction for businesses with large product catalogs. Registering products reactively — only when a stock move triggers the need — creates bottlenecks at the warehouse level. Proactive bulk registration during initial setup avoids those delays entirely.

What This Means for Kenyan Businesses on Odoo

Taken together, these changes reflect a maturing integration. The early versions of Odoo’s eTIMS support got the basics right but left operational gaps that businesses discovered the hard way — confusing settings locations, multi-day provisioning timelines, cryptic duplicate errors, and ambiguous product registration rules. The latest update closes those gaps without adding complexity.

For companies already running the Kenya localization, the upgrade path is straightforward: note the new settings location, use the email-based token flow for any pending device registrations, and audit your product catalog to ensure everything is registered before your next stock movement batch. For new deployments, the streamlined setup means getting from a fresh Odoo instance to a fully compliant eTIMS integration is now a same-day operation rather than a week-long project.

Ready to experience Odoo AI?

Join hundreds of teams using DearERP to customize Odoo in minutes, not weeks. Plans start at $29/month.