In this article
- Why the eTIMS Online Portal stops working at scale
- The practical choice: OSCU or VSCU
- What an Odoo eTIMS workflow must retain
- Required transaction data and audit trail
- A step-by-step implementation plan
- Step 1: map the real invoice journey
- Step 2: choose the KRA integration model
- Step 3: configure Odoo as the source of commercial truth
- Step 4: build exception queues, not just a success path
- Step 5: test in the KRA sandbox and complete certification
- Step 6: reconcile KRA outcomes every day
- Controls for buyer-initiated and reverse invoicing
- The business risk of treating eTIMS as an afterthought
- The business value of an integrated invoicing process
- Frequently Asked Questions
- Can Odoo integrate directly with KRA eTIMS?
- Should we use OSCU or VSCU for Odoo?
- Is the eTIMS Online Portal enough for an Odoo business?
- Is a buyer PIN mandatory on every invoice?
- What happens if an invoice is posted in Odoo but fails at KRA?
A finance team can clear a morning’s invoices in the eTIMS Online Portal, then spend the afternoon reconciling invoice references back into Odoo. The PDF exists, the sale is posted, but the tax record and the ERP record are still separate jobs.
An Odoo KRA eTIMS integration brings invoicing, fiscal reporting and accounting into a controlled system-to-system process. For Kenyan businesses handling recurring invoices across teams, branches or entities, this can reduce duplicate entry, improve consistency and give finance better visibility of the tax record. KRA provides Online Sales Control Unit (OSCU) and Virtual Sales Control Unit (VSCU) integration options for different operating environments.
KRA now cross-checks declared income and expenses against electronic invoicing, withholding-tax and Customs records. Where an invoice is created in Odoo but not correctly transmitted to eTIMS, the business may face mismatches, avoidable follow-up work and uncertainty during tax-return validation.
Why the eTIMS Online Portal stops working at scale
The eTIMS Online Portal has a valid place. KRA describes it as a web-based option suitable for service-only taxpayers. For an enterprise invoicing through Odoo across sales teams, branches, warehouses or legal entities, however, a separate portal workflow can create unnecessary duplication and delays.
The issue is not only invoice count. Portal processing separates the tax event from the commercial event. Staff must rekey customer details, product lines and tax information, then carry the fiscal outcome back to the ERP. That makes it harder to prove which Odoo invoice received KRA validation, whether a credit note links to the original invoice, and whether a buyer PIN was captured when input VAT is expected.
KRA permits API-based system-to-system integration between eTIMS and a taxpayer’s existing invoicing or ERP system. That is the official path for bringing invoice processing into Odoo while keeping KRA validation in the transaction flow.
All persons engaged in business, including non-VAT-registered businesses, must onboard eTIMS and issue electronic tax invoices. This has applied from 1 September 2023. Do not treat system integration as a VAT-only project, because the eTIMS obligation is broader than VAT registration.
The practical choice: OSCU or VSCU
KRA positions both OSCU and VSCU as integration paths between eTIMS and an ERP. The right choice depends mainly on connectivity and how invoices are issued.
| Operating condition | Better fit | Why it matters in Odoo | | The invoicing environment is always online | OSCU | The Odoo invoice can send to eTIMS during the normal online approval workflow. | | The business issues invoices in bulk or is not always online | VSCU | VSCU is intended for bulk invoicing and operations that cannot rely on constant connectivity. | | A service-only business with low portal dependence | eTIMS Online Portal may remain appropriate | KRA identifies the portal as web-based and suited to service-only taxpayers. It should not be presented as the enterprise scaling route. | If your team creates invoices in Odoo and then recreates them in the portal, assess whether OSCU or VSCU integration could remove duplicate work. The potential benefit is more than speed: it is a cleaner audit trail, faster exception handling and more dependable information for customers and finance.
What an Odoo eTIMS workflow must retain
Odoo invoice confirmation is not evidence of KRA compliance. It confirms an ERP document. A compliant implementation must also submit the required invoice information to eTIMS, receive the KRA result, and retain that result against the originating Odoo document.
KRA states that compliant electronic invoices are validated, uniquely numbered and transmitted in real time or near-real time. We design the Odoo workflow around that tax outcome, rather than treating the fiscal reference as text someone adds later.
Required transaction data and audit trail
A localised Odoo workflow should preserve the following records on the invoice, credit note or related fiscal log:
1. Customer PIN where required. A buyer PIN is generally optional on an invoice, but KRA says it is needed where the buyer intends to claim input VAT. Your sales workflow should make this a deliberate choice, not an unchecked free-text field.
2. Product and tax data. Tax classification and invoice lines must be carried from Odoo into the eTIMS submission. Rebuilding line detail outside the ERP creates a second source of truth.
3. Odoo invoice identifiers. The fiscal record must point back to the specific Odoo invoice. This allows finance to investigate exceptions without searching across exported reports.
4. KRA response and status. Retain success, rejection or pending outcomes. A document that failed transmission should be visible to the responsible team before it reaches month-end reconciliation.
5. QR code or fiscal reference. Store the KRA-issued fiscal outcome with the commercial invoice record. This supports an auditable trail from the invoice sent to the customer to the tax validation record.
6. Credit-note links. A credit note must retain its relationship to the original invoice. Without that link, reversals become difficult to explain during internal review or a KRA query.
Odoo provides integration interfaces for connecting external systems, with security and access controls that need to be configured for the deployment in use. Use a dedicated integration account with restricted permissions rather than an individual administrator’s credentials. This protects accountability and helps separate automated processing from staff access. Confirm compatibility with the live Odoo version during technical scoping.
A step-by-step implementation plan
KRA requires development, testing, vetting and certification for system-to-system integration. That applies whether a taxpayer self-integrates or appoints a third-party software integrator. Going live before those stages are complete is not a controlled implementation.
Step 1: map the real invoice journey
Start with the point at which an invoice becomes a tax document. For some businesses this is Odoo invoice posting. For others, delivery confirmation, counter sales or a central billing team triggers the document.
Document exceptions before development starts. Include cancelled invoices, partial deliveries, discounts, returns, credit notes, offline activity and transactions where a buyer requests a PIN for input-VAT purposes. The step teams skip most often is mapping credit notes, then discovering after go-live that the ERP reversal does not have the required fiscal linkage.
Take a distributor with branch sales and a central finance team. The branch may create the sale, while head office posts the invoice later. If the integration sends an invoice before finance has completed the commercial checks, the business can end up correcting a validated fiscal document instead of correcting a draft. The better design is to identify the approval point that is both operationally final and early enough for real-time or near-real-time transmission.
Step 2: choose the KRA integration model
Select OSCU when invoicing is always online. Select VSCU when the operation processes invoices in bulk or cannot depend on continuous connectivity.
Do not choose based on a generic ERP preference. Choose based on how invoices are actually issued at counters, branches and warehouses. A VSCU requirement discovered after an OSCU build can mean redesigning transaction handling and exception queues.
Step 3: configure Odoo as the source of commercial truth
Configure customers, products, taxes, invoice sequences and credit-note behaviour before connecting the interface. The integration should transmit approved data from Odoo, not compensate for incomplete master data.
Use a dedicated Odoo integration user with only the permissions the process needs. Restrict who can amend invoice data after fiscal submission, and log any permitted correction. This gives IT and finance a clear line between normal invoicing activity and controlled exception handling.
Step 4: build exception queues, not just a success path
Every integration needs an operational queue for rejected, pending or failed submissions. Assign ownership between finance, tax and IT before testing.
A manufacturer may issue an invoice before a buyer requests its PIN for an input-VAT claim. If the original transmission omitted necessary purchaser details, staff need a documented correction route rather than an informal request to alter a PDF. Controlled exception handling protects customer relationships, supports collections and reduces the risk of inconsistent tax records.
Step 5: test in the KRA sandbox and complete certification
KRA provides OSCU and VSCU specifications, a sandbox-registration guide, a Trader Invoicing System specification and a sandbox. Use the sandbox to test ordinary invoices and the difficult transactions that expose design gaps.
Test customer PIN handling, invoice rejection, retries, duplicate-submission prevention, credit notes and unavailable connectivity where relevant. Then complete KRA vetting and certification before production use. A demo that produces a fiscal response is not the same as certified operation.
Step 6: reconcile KRA outcomes every day
Build a daily reconciliation between posted Odoo invoices and eTIMS outcomes. Finance should see invoices awaiting transmission, rejected records, approved fiscal references and credit notes that do not yet reconcile to their originals.
The key control is completeness. If Odoo shows an invoice as final but the KRA response is missing, it must be an exception with an owner and resolution evidence.
Controls for buyer-initiated and reverse invoicing
Buyer-initiated invoicing and reverse invoicing are distinct from an ordinary Odoo sales invoice. KRA has issued guidance for these processes, and businesses should confirm the current rules and approval arrangements before enabling either workflow.
These workflows require specific approval, consent and control arrangements. Do not configure self-billing as a standard automated invoice flow unless the business has confirmed the relevant KRA requirements and seller-consent process.
KRA provides buyer-initiated invoicing arrangements for certain qualifying smaller suppliers, subject to eligibility criteria and process requirements. Because those criteria may change, confirm the applicable turnover threshold, supplier status and consent arrangements directly against current KRA guidance before configuring an automated workflow. Do not assume that every small supplier qualifies.
A procurement-led business may want suppliers to submit delivery evidence while the buyer generates the invoice. That can reduce disputes over quantities, but it changes who creates the tax document and how consent is evidenced. We would first establish whether the supplier qualifies, whether the intended process has KRA approval, and how Odoo will retain the seller-consent record. Skipping those checks turns a procurement convenience into a compliance exposure.
The business risk of treating eTIMS as an afterthought
Failure to comply with electronic-tax-invoice requirements can expose a business to regulatory notices and statutory penalties. The exposure depends on the law and the circumstances of the transaction, so tax teams should verify the current enforcement provisions. Reliable integration helps minimise preventable compliance failures, invoice disputes and resource-intensive corrections.
That is why an Odoo eTIMS project belongs to finance, tax, operations and IT. Finance owns reconciliation and close. Tax owns interpretation and exception policy. Operations owns the moment an invoice is created. IT owns integration security, access and monitoring.
A useful board question is simple: can the business show, for every final Odoo invoice, the corresponding KRA outcome and evidence of any correction? When that proof depends on manual portal checks, management has limited visibility. A well-designed integration gives decision-makers a clearer view of invoicing status, collections risks and outstanding exceptions.
The business value of an integrated invoicing process
When sales, finance and tax reporting share one controlled invoice record, teams spend less time re-entering information and more time resolving genuine exceptions. Verified fiscal references can support faster customer queries, more consistent payment follow-up and clearer month-end reconciliation. A properly scoped Odoo integration also gives managers traceable approvals and a more dependable foundation for growth across locations and entities.
Frequently Asked Questions
Can Odoo integrate directly with KRA eTIMS?
Yes. KRA permits API-based system-to-system integration between eTIMS and an existing invoicing or ERP system. The implementation must go through development, testing, vetting and certification.
Should we use OSCU or VSCU for Odoo?
Use OSCU where the invoicing system is always online. Use VSCU for bulk invoicing or operations that are not always online. The choice should follow the actual transaction environment, not the preferred technology label.
Is the eTIMS Online Portal enough for an Odoo business?
It can be suitable for a service-only taxpayer using a web-based process. For organisations processing invoice volume through Odoo, OSCU or VSCU provides the intended system-to-system route and reduces duplicate capture.
Is a buyer PIN mandatory on every invoice?
No. KRA states that the buyer PIN is generally optional, but it is necessary where the buyer intends to claim input VAT. Make the field available and controlled in the Odoo customer and invoice workflow.
What happens if an invoice is posted in Odoo but fails at KRA?
Treat it as an operational exception. Retain the KRA response, assign an owner, correct the underlying issue through an approved process and reconcile the final outcome to the Odoo document. Do not assume the Odoo PDF alone proves compliance.
SERPA Africa helps businesses review their invoice flows, master-data quality, OSCU or VSCU fit, integration readiness and audit controls. Speak with our team to discuss a tailored Odoo KRA eTIMS integration and request a quotation based on your organisation’s workflow and needs.