ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

Kenya — KRA, iTax and mandatory B2B eTIMS

Kenya has made the Kenya Revenue Authority (KRA) an African pioneer of digital taxation with iTax since 2014, then eTIMS (electronic Tax Invoice Management System) launched in 2022 and made mandatory on 1 August 2023 for all VAT taxpayers.

Regulatory timeline

  • 2 August 2013 — VAT Act 2013. Major overhaul of Kenyan VAT, legal basis for modern invoicing obligations (16 % standard rate).
  • 1 January 2014 — Tax Procedures Act 2015. Unifies the Kenyan tax procedure, formalises the enforceability of electronic fiscal acts.
  • 1 October 2014 — iTax launch. KRA tele-filing and tele-payment portal, PIN access. Mandatory for VAT from 2015.
  • 10 September 2020 — Electronic Tax Invoices Regulations 2020. Legal framework for Electronic Tax Registers (ETR) and electronic invoices with Control Unit (CU).
  • 1 August 2022 — TIMS (TIMS-CU) launch. First wave: Type-A taxpayers (high B2C volumes, supermarkets) must issue via ETR with Control Unit Invoice Number (CU IN).
  • 1 February 2023 — eTIMS (online) launch. Evolution to eTIMS: alternatives "Online Portal", "Online Sales", "Trader VAT App", "OSCU / VSCU" to integrate cloud ERPs without hardware ETR.
  • 1 August 2023 — Universal mandatory eTIMS. Tax Invoice Management System Regulations 2023: all VAT taxpayers must go through eTIMS to issue a valid "tax invoice". Otherwise, VAT is not deductible on the buyer's side.
  • 1 January 2025 — eTIMS extended to non-VAT. 2024 Finance Law extends eTIMS to non-VAT taxpayers above a turnover threshold (KES 5M annual) for traceability.

Technical schema

The eTIMS format is a KRA proprietary JSON. Features:

  • PIN: format A012345678X (letter + 10 digits + checksum letter). Individuals prefixed A / B / C, legal entities P.
  • taxCategory: A (standard rate 16 %), B (exempt), C (zero-rated, export), D (non-VAT, services excluded).
  • controlUnitInvoiceNumber (CU IN): unique number assigned by the Control Unit (hardware or KRA-approved software), format NKExxxxxxxxxxxx where N = Control Unit type.
  • controlUnitSerialNumber: serial number of the CU that issued the invoice, format CU01-KRA-YYYY-NNNNNN.
  • qrCodeUrl: URL itax.kra.go.ke/qr?id=… to embed as QR Code on the printed invoice, enables buyer verification.
  • Signature: SHA-256 hash + Control Unit signature, guaranteeing integrity and non-repudiation. KRA proprietary schema, no public XAdES.

Minimal example of an eTIMS invoice:

jsonetims-invoice.json
{
  "trader": {
    "pin": "A012345678X",
    "branchId": "00",
    "businessName": "Ediverse Demo Kenya Ltd",
    "address": "Kenyatta Avenue 25, Nairobi",
    "vatNumber": "0123456789Z"
  },
  "invoice": {
    "invoiceNumber": "KE-2026-00000142",
    "invoiceDate": "2026-05-16",
    "currency": "KES",
    "buyerPin": "P051234567A",
    "buyerName": "Customer Demo Kenya Ltd",
    "items": [
      {
        "itemName": "Cloud services May 2026",
        "itemCode": "SVC-CLOUD-001",
        "quantity": 1.0,
        "unitPrice": 50000.00,
        "discountAmount": 0.00,
        "taxCategory": "A",
        "taxRate": 16.0,
        "taxAmount": 8000.00,
        "totalAmount": 58000.00
      }
    ],
    "totals": {
      "taxableAmount": 50000.00,
      "taxAmount": 8000.00,
      "totalAmount": 58000.00
    }
  },
  "etimsMetadata": {
    "controlUnitInvoiceNumber": "1KE000001234567",
    "controlUnitSerialNumber": "CU01-KRA-2023-000001",
    "qrCodeUrl": "https://itax.kra.go.ke/qr?id=1KE000001234567",
    "signature": "..."
  }
}

Submission flow

The seller transmits their invoice to eTIMS via one of 5 channels: Online Portal (web), Online Sales (point of sale), Trader VAT App (mobile), Online Sales Control Unit (OSCU — hardware appliance), or Virtual Sales Control Unit (VSCU — cloud software). All transmit in real time to eTIMS, which assigns the CU IN.

textetims-flow.txt
┌──────────────┐    ┌────────────────────┐    ┌──────────────┐
│ KE supplier  │───>│ eTIMS              │───>│ KE customer  │
│ (ERP, JSON   │    │ Trader VAT App,    │    │ (receipt +   │
│  via OSCU /  │    │ Online portal,     │    │  QR scan)    │
│  VSCU)       │    │ Online API         │    │              │
└──────────────┘    └─────────┬──────────┘    └──────────────┘


                  ┌────────────────────┐
                  │ KRA iTax           │ ← Automatic VAT
                  │ + Control Unit IN  │   return
                  │ + QR Code          │   generation
                  └────────────────────┘

The transformed invoice (with CU IN, QR Code and signature) is returned to the seller, who can print or send it digitally to the buyer. iTax automatically retrieves transactions to pre-fill the monthly VAT return (VAT3). Consistency check is real-time.

Validation

  • KRA: kra.go.ke — official site, eTIMS and iTax documentation, FAQ, tax calendars.
  • iTax: itax.kra.go.ke — tele-filing and tele-payment portal, PIN access.
  • eTIMS Online Portal: etims.kra.go.ke — eTIMS interface, CU management, transaction tracking.
  • KRA Developer Portal: etims.kra.go.ke/developer — eTIMS REST API documentation (OSCU/VSCU), Swagger, sandbox, examples.

Common pitfalls

  1. Choose between 5 eTIMS modes. KRA offers 5 different modes (Online Portal, Online Sales, Trader VAT App, OSCU, VSCU) with distinct technical constraints. For a multi-country cloud ERP, VSCU (Virtual SCU) is the most relevant: it's KRA-certified software embedded in the ERP that simulates the CU.
  2. PIN — strict checksum. The Kenyan PIN has a checksum formula; a mistyped PIN is rejected by eTIMS. Implement the checksum on the client side before submission to avoid mass rejections. Note: the buyer's PIN is mandatory for B2B "tax invoices" (>KES 100,000), optional for simplified B2C invoices.
  3. 16 % VAT vs 14 % transitional. The standard VAT moved to 16 % in 2021 after a transitional period at 14 % (Covid 2020-2021). Check labels and taxCategory codes for invoices covering the historical transitional period.
  4. Multi-branch via branchId. Companies with multiple establishments must manage a separate branchId for each branch. The head office uses 00, branches 01, 02… Confusing branchIds is a classic source of iTax reconciliation errors.
  5. English + Swahili for PDF rendering. Legislation recognises English and Swahili as official languages. eTIMS JSON is English, but the PDF rendering of the invoice can include Swahili labels (especially for B2C retail). UTF-8 mandatory.