Skip to main content
Kenya eTIMS / KRA Compliance — Real-time eTIMS transmission to KRA plus withholding VAT and income tax on one bill — built, i — 1/1Illustrative preview

Real-time eTIMS transmission to KRA plus withholding VAT and income tax on one bill

— built, installed and supported by ECOSIRE.

What is Kenya eTIMS / KRA Compliance?

Real-time eTIMS transmission to KRA plus withholding VAT and income tax on one bill — built, installed and supported by ECOSIRE. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Direct integration with the KRA eTIMS OSCU/VSCU device API, including sandbox onboarding and production key exchange, so every invoice is authenticated against your KRA PIN and branch registration.
Real-time invoice transmission on posting: when an account.move is validated, the module submits it to eTIMS and writes back the control unit invoice number, receipt signature and tax-point timestamp.
Control unit invoice number plus scannable QR code rendered on the customer tax invoice via a KRA-compliant QWeb report, so printed and PDF invoices carry the mandated fields.
Automatic withholding VAT (2%) deduction computed with an @api.depends field on qualifying supplier bills, posting the WHT-VAT to a dedicated control account for the monthly return.
Withholding income tax by service type (3%–30%) driven by a configurable rate table mapped to your service/product categories, so consultancy, management fees, royalties and rent each deduct at the correct statutory rate.
WHT certificate data captured against each bill and available for QWeb certificate printing and supplier reconciliation.
Idempotent, queued transmission layer with automatic retry and exponential back-off, so a slow or unavailable KRA endpoint never blocks or duplicates an invoice submission.
Item classification code (KRA UNSPSC-style) and unit-of-measure mapping on product records, validated before submission to prevent rejected payloads.
Automated actions and a compliance dashboard that flag any invoice which failed to reach KRA, expose the raw eTIMS error, and offer a one-click authorised re-transmit.
Credit note / voiding flow that submits the correct eTIMS reversal referencing the original control unit number, keeping your KRA ledger consistent with Odoo.
Multi-company and multi-branch aware — separate KRA PINs, branch IDs and device credentials per company, stored securely and never exposed to non-finance users.
XML-RPC / JSON-RPC endpoints to trigger and query eTIMS submission status from external systems (POS, e-commerce, third-party billing).
Role-based security via ir.model.access.csv and record rules — only the eTIMS Officer group can re-transmit, void or edit tax metadata; audit trail via chatter on every submission.
Configurable per Odoo 17, 18 and 19 on Community or Enterprise, with the localisation layered on top of the standard l10n_ke Kenyan chart of accounts.

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

Kenya's eTIMS (electronic Tax Invoice Management System) mandate means every invoice your business issues must be transmitted to the Kenya Revenue Authority (KRA) in real time, stamped with a control unit invoice number and a scannable QR code — and any withholding VAT or withholding income tax you deduct has to reconcile cleanly against the same bill. Doing that by hand, or bolting a spreadsheet onto Odoo, is exactly how businesses fall out of compliance and lose input-VAT claims.

This is a BUILD-TO-ORDER module. It is not an existing apps.odoo.com download and there is no instant-download link. ECOSIRE designs, builds, installs and supports a Kenya eTIMS / KRA compliance module tailored to your chart of accounts, service catalogue and OSCU/VSCU setup, then hands it over running on your instance. Typical lead time is one working week from signed scope to go-live, depending on KRA sandbox onboarding and the number of company/branch tax registrations involved.

Under the hood it is a proper Odoo application. A dedicated __manifest__.py declares dependencies on account, l10n_ke and base; new models.Model classes extend account.move and account.move.line with the fields KRA requires (control unit invoice number, receipt signature, item classification code, tax-point date). Withholding amounts are derived with @api.depends computed fields so a 2% WHT-VAT deduction or a 3–30% withholding income tax rate is calculated the moment the service line is priced — never keyed twice. Transmission to the eTIMS OSCU/VSCU device API runs through a queued service layer with retry and idempotency, so a slow KRA endpoint never blocks your invoicing. Every access path is locked down with ir.model.access.csv plus record rules so only authorised finance users can re-transmit or void; QWeb reports render a KRA-compliant tax invoice with the returned control number and QR; and automated actions flag any invoice that failed to reach KRA for follow-up. The module exposes its transmission status over Odoo's XML-RPC/JSON-RPC API so your POS, e-commerce or external billing tools can trigger and confirm eTIMS submission programmatically. It targets Odoo 17, 18 and 19 on both Community and Enterprise.

The result: you invoice inside Odoo exactly as you do today, the KRA submission happens in the background, and your withholding taxes land on the correct control accounts ready for the monthly return — with ECOSIRE on the hook to keep it aligned as KRA revises the eTIMS specification.

What you get

  • The complete, installable Odoo module source (addon directory with __manifest__.py, Python models, views, security CSV/record rules, QWeb reports and data files) delivered to your repository or instance.
  • Installation and configuration on your Odoo 17/18/19 environment, including connection to the KRA eTIMS sandbox, test transmissions, and cut-over to production credentials.
  • KRA-compliant tax invoice and WHT certificate QWeb report templates matched to your branding.
  • A configured withholding-tax rate table (2% WHT-VAT and 3–30% income-tax bands) mapped to your service and product categories, plus the control accounts posted to your chart of accounts.
  • Written handover documentation: configuration guide, transmission/retry runbook, error-code reference and a monthly-return reconciliation checklist.
  • A live training session for your finance team covering invoicing, re-transmission, WHT reconciliation and reading the compliance dashboard, with a recording.
  • A defined post-go-live support and updates window (bug fixes plus alignment with KRA eTIMS specification changes) under an SLA agreed in scope.
  • Source-controlled release tags for each supported Odoo version so upgrades are clean and traceable.

Who this is for

Kenyan SME finance manager

Runs invoicing and the monthly VAT return inside Odoo and needs every invoice to reach KRA in real time without adding manual steps, so input-VAT claims and WHT deductions stay defensible at audit.

East-Africa Odoo implementation partner

Delivers Odoo to multiple Kenyan clients and wants a maintained eTIMS/KRA compliance layer they can resell and deploy per client rather than rebuilding OSCU integration and withholding logic on every project.

CFO or group controller of a multi-branch business

Oversees several KRA-registered branches or companies and needs per-branch device credentials, consolidated WHT control accounts and a dashboard that surfaces any failed transmission before it becomes a compliance gap.

Professional-services firm billing withholding-taxable fees

Issues consultancy, management-fee, rent or royalty invoices that attract 3–30% withholding income tax and 2% WHT-VAT, and needs the correct rate applied per service type and a printable WHT certificate for each client.

How Kenya eTIMS / KRA Compliance Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Real-time eTIMS transmission to KRA with control unit number & QRIncludedPartial supportPartial supportNot included
Withholding VAT (2%) auto-deduction to a control accountIncludedPartial supportPartial supportNot included
Withholding income tax by service type (3–30%)IncludedPartial supportNot includedNot included
Idempotent queued transmission with retry & failure dashboardIncludedNot includedPartial supportNot included
Tailored to your chart of accounts, service catalogue & branchesIncludedIncludedNot includedNot included
Ongoing alignment with KRA eTIMS spec changes under SLAIncludedNot includedPartial supportNot included
XML-RPC/JSON-RPC hooks for POS / e-commerce submissionIncludedPartial supportNot includedNot included
Role-based access & audit trail on tax re-transmissionIncludedPartial supportPartial supportPartial support
Supported across Odoo 17, 18 & 19 (Community & Enterprise)IncludedPartial supportPartial supportIncluded

Frequently Asked Questions about Kenya eTIMS / KRA Compliance

How long does delivery take and what is the lead time?

This is a build-to-order module, not an instant download. Typical lead time is one working week from a signed scope to go-live on your instance. The main variables are KRA eTIMS sandbox onboarding, the number of KRA PINs/branches to register, and how much your chart of accounts and service catalogue need mapping. We agree the exact timeline in writing before we start and keep you updated through sandbox testing and production cut-over.

What support and updates do I get after go-live?

Every engagement includes a defined post-go-live support and updates window under an SLA set in your scope. That covers bug fixes, help with re-transmissions and reconciliation questions, and — critically — alignment with KRA eTIMS specification changes, since KRA revises the API and payload requirements over time. We ship updates as tagged releases per Odoo version so upgrades stay clean. Extended or ongoing support can be arranged as an annual agreement.

Which Odoo versions and editions does this work with?

We build and test against Odoo 17, 18 and 19, on both Community and Enterprise. The module layers on top of the standard Kenyan localisation (l10n_ke) and extends account.move, so it fits your existing accounting flow. We target the specific version and edition you run in production.

How does it handle both withholding VAT and withholding income tax on the same bill?

Withholding amounts are computed with @api.depends fields on the bill lines. WHT-VAT is deducted at 2% on qualifying supplies, and withholding income tax is applied at the correct statutory band (3–30%) based on the service type mapped to each product/service category. Both post to dedicated control accounts and generate the data for a printable WHT certificate, so a single bill can carry both deductions and still reconcile against your monthly return.

What happens if the KRA eTIMS endpoint is slow or unavailable when I post an invoice?

Transmission runs through an idempotent, queued service layer with automatic retry and back-off, so a slow or down KRA endpoint never blocks your invoicing or creates duplicate submissions. Any invoice that fails to reach KRA is flagged on the compliance dashboard with the raw eTIMS error, and an authorised user can re-transmit with one click once the endpoint recovers.

Can external systems like our POS or e-commerce store trigger eTIMS submission?

Yes. The module exposes transmission and status over Odoo's XML-RPC/JSON-RPC API, so a connected POS, e-commerce checkout or third-party billing system can trigger an eTIMS submission and confirm the returned control unit number programmatically. We scope those integration points with you during the build.

Is my access to tax data and re-transmission controlled?

Yes. Security is enforced with ir.model.access.csv plus record rules. Only members of the eTIMS Officer group can re-transmit, void or edit KRA tax metadata; everyone else invoices normally without touching the compliance layer. Every submission and re-transmission is logged in the record's chatter for a full audit trail.

Request a quote

Kenya eTIMS / KRA Compliance

Real-time eTIMS transmission to KRA plus withholding VAT and income tax on one bill — built, installed and supported by ECOSIRE.

  • Direct integration with the KRA eTIMS OSCU/VSCU device API, including sandbox onboarding and production key exchange, so every invoice is authenticated against your KRA PIN and branch registration.
  • Real-time invoice transmission on posting: when an account.move is validated, the module submits it to eTIMS and writes back the control unit invoice number, receipt signature and tax-point timestamp.
  • Control unit invoice number plus scannable QR code rendered on the customer tax invoice via a KRA-compliant QWeb report, so printed and PDF invoices carry the mandated fields.
  • Automatic withholding VAT (2%) deduction computed with an @api.depends field on qualifying supplier bills, posting the WHT-VAT to a dedicated control account for the monthly return.

Request a Quotation

Tell us about your Kenya eTIMS / KRA Compliance requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.