Real-time eTIMS transmission to KRA plus withholding VAT and income tax on one bill — built, installed and supported by ECOSIRE. One-time license from $499.00 USD for Odoo 17, 18, 19 — includes 12 months of updates and support.

Real-time eTIMS transmission to KRA plus withholding VAT and income tax on one bill — built, installed and supported by ECOSIRE.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
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.
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.
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 2–4 weeks 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.
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.
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.
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.
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.
Buy the license on ecosire.com and download the Kenya eTIMS / KRA Compliance module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for Kenya eTIMS / KRA Compliance, and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Real-time eTIMS transmission to KRA with control unit number & QR | ||||
| Withholding VAT (2%) auto-deduction to a control account | ||||
| Withholding income tax by service type (3–30%) | ||||
| Idempotent queued transmission with retry & failure dashboard | ||||
| Tailored to your chart of accounts, service catalogue & branches | ||||
| Ongoing alignment with KRA eTIMS spec changes under SLA | ||||
| XML-RPC/JSON-RPC hooks for POS / e-commerce submission | ||||
| Role-based access & audit trail on tax re-transmission | ||||
| Supported across Odoo 17, 18 & 19 (Community & Enterprise) |
This is a build-to-order module, not an instant download. Typical lead time is 2–4 weeks 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.
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.
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.
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.
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.
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.
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.
Real-time eTIMS transmission to KRA plus withholding VAT and income tax on one bill — built, installed and supported by ECOSIRE.