VeTims
Integration

What eTIMS actually asks of your software.

Written for whoever has been handed the ticket. This is the honest inventory — the same list we worked through — so you can decide whether to build it or hand it over.

The mandate

Where the requirement comes from

Under the VAT (Electronic Tax Invoice) Regulations, 2020, tightened by the Finance Act, 2023, a tax invoice in Kenya must be generated through eTIMS and signed by a control unit before it is a valid receipt. The technical detail lives in KRA's Trader Invoicing System specification for OSCU and VSCU, and it is more specific than most teams expect.

The commercial pressure usually arrives before the legal one. A business customer cannot claim input VAT against a non-compliant receipt, so they stop accepting yours long before anyone audits you.

The inventory

Nine things your system must get right

01

A registered control unit, per branch

A control unit belongs to one taxpayer PIN and one branch. Registration returns a key, once, which every later call is signed with. Lose it and the device is dead; leak it and someone else can sign as you.

02

An uninterrupted invoice sequence

Invoice numbers per device must ascend without gaps. Not "mostly" — a missing number is a question you will be asked to answer. Getting this right under concurrent sales is a locking problem, not a counter.

03

Nothing prints before the signature

A receipt is only a tax invoice once a control unit has signed it. Your checkout flow has to survive the round trip, which means it must have an answer for what the cashier does while it is in flight.

04

Five tax categories, computed correctly

A exempt, B 16%, C zero-rated, D non-VAT, E 8%. Shelf prices are VAT-inclusive; KRA wants the exclusive taxable amount and the tax, per line and per category, rounded the way the spec rounds.

05

Everything the receipt must carry

Date and time, the control unit ID, the CU invoice number, internal data, and the receipt signature grouped in fours. Then the QR, whose payload is a defined concatenation, not a link you invent.

06

Receipt types, and their labels

Normal, copy, training and proforma, each crossed with sale, credit note and debit note, produce the labels NS, NC, CS, CC, TS, TC and PS. Copies, training and proforma receipts must say, in print, that they are not official receipts.

07

Credit notes that follow the rules

A refund references the original control-unit receipt number, carries negative amounts only, and an original transaction may be cancelled exactly once. Enforcing "once" is your job, not KRA's.

08

Reports and stock

X and Z daily reports, PLU reports, an item counter and stock control — including refusing to release goods you do not have. Services are exempt from the stock rule; goods are not.

09

Certification

Bio data, an architecture document, named technical staff, then a demo and vetting before you get an approval certificate. This is a process with a queue, not a form you submit.

Build or buy

The parts that are always underestimated

Key custody

The registration key is issued once and cannot be reissued on demand. It has to live somewhere encrypted, out of your repository and out of your logs, per device, for years.

Sequence integrity

Two sales at the same instant must not take the same invoice number, and a crash between allocating and signing must not eat one. This is the bug that surfaces on your busiest day.

Failure semantics

A KRA rejection is permanent and must not be retried. A timeout is not a rejection and must be. Confusing the two either loses invoices or signs them twice.

Certification time

Not development effort — calendar time, in a queue, before you can invoice a single customer in production.

That is a whole product. It is ours, so it does not have to be yours.

The alternative

What is left after you hand it over

One POST when a sale completes, and one handler for the signature that comes back. The control unit, the key, the sequence, the tax split, the QR payload and the certification are on our side of the line.

The payloads → Every field → OSCU or VSCU? →

Hand the fiscal half over.

Tell us what your system does. We reply with a sandbox token, a registered device and a working example against KRA.

Start a pilot +254 764 444 408