AWRA OpsHub Search

For Kenya · the home market

Everyone here says "eTIMS integrated". The question is whose code runs when the rate changes.

An integration is a connector to somebody else's engine, and in the week of a Finance Act it means waiting in somebody else's queue. Kenya is the one market where there is no seam: it is the only country key in our statutory rule engine, its PAYE, NSSF, SHIF and housing levy were checked to the cent against a real employer payslip, eTIMS speaks to KRA on your own PIN and device, and M-Pesa runs on your own Daraja credentials into your own till. The full derivation is below, and so is the one thing on this list we get wrong.

The subject
Not what the rules are — whose code runs them. An integration and an engine look identical in a demo and behave differently in the week a Finance Act moves a rate, because one of them puts you in somebody else’s queue.
The claim
Kenya is the only country in our statutory rule engine. Not first and not best-supported — the only one. Every other market page on this site says local payroll is not ours and points you elsewhere.
The evidence
PAYE, NSSF, SHIF and the housing levy checked line by line against a real employer payslip and matching to the cent. The full derivation is below so you can hold it against your own.
The limit
A credit note does not reach eTIMS. The receipt type we transmit is fixed to a sale. An earlier version of this page said credit notes were included; it was wrong, and the correction is on the page rather than in a release note.

The join, as a specification

Twelve things Kenya requires. The middle column is the whole page.

Every vendor shortlist in Nairobi ends with four products that all say "eTIMS integrated" and "statutory compliant". Both phrases are true of a connector and true of an engine, and nothing in a demo tells the two apart. This is the column that does. Read it and ignore the rest.

PAYE, five bands and personal relief

This repository

Bands at 10, 25, 30, 32.5 and 35 per cent with the 2,400 monthly relief, computed by our own engine and versioned so a published rate is frozen once real payslips have used it.

NSSF Tier I and Tier II

This repository

Six per cent employee and six per cent employer against the Tier I ceiling, then the balance at Tier II. Both tiers reduce the PAYE base.

SHIF

This repository

2.75 per cent of gross with a 300 floor, and — the part that is quietly wrong in a lot of spreadsheets — it reduces the PAYE base.

Affordable Housing Levy

This repository

1.5 per cent employee and 1.5 per cent employer, also PAYE-deductible.

The order the four are applied in

This repository

Taxable pay is gross less housing levy, SHIF and NSSF, and the sequence is a versioned property of each rule rather than an assumption in a formula. This is the part that is wrong most often and visible least often.

The P9A annual certificate

This repository

Rebuilt from frozen payslip snapshots and the exact rule versions each payslip referenced — so a certificate reproduced in three years is identical to the one issued today, whatever happened to the rates in between.

eTIMS on a customer invoice

This repository

Straight to KRA's OSCU API on your own PIN, branch and device serial, returning the receipt signature and QR. Sandbox and production are a per-organization toggle, so you validate before you go live.

eTIMS on a POS sale

This repository

The same path from the till rather than a second product bolted to the counter.

M-Pesa in and M-Pesa out

This repository

STK push, dynamic QR and C2B paybill or till for collection; B2C to a phone and B2B to a paybill or till for payment. On your own Daraja credentials, into and out of your own shortcode — never the platform's.

A credit note reaching eTIMS

Nobody — and we said otherwise

The receipt type we transmit is fixed to a sale. A credit note is a record in our ledger and nothing goes to KRA. An earlier version of this page said credit notes were included; that was false, and the correction is below rather than buried.

The VAT and PAYE returns themselves

You, on iTax

We compute, we transmit invoices and we produce the P9. We do not file, and we will not — see the boundaries column further down for why that is a position rather than a backlog item.

Reconciling a bank statement

Not built

M-Pesa matching is real and works on the reference. Matching a bank statement does not exist here at all, in any wording. If your collections are mostly bank, know that before the demo rather than after it.

9

rows carried by code in this repository, maintained by the team that maintains everything else you would be buying.

3

rows that are not — one of them a gap we would rather you heard about here, and two that are yours by design.

Nine rows, one answer. That is the claim, and it is worth exactly as much as the three rows that say something else — which is why they are in the same table at the same size rather than in a footnote. A vendor whose compliance table has no amber in it has not written the table honestly.

The evidence, in full

One real payslip, reproduced to the cent

On 13 July 2026 the Kenyan rule set was cross-checked line by line against an actual employer payslip. Not a worked example and not a spreadsheet — one real pay run, with the engine reproducing every figure exactly. It is printed here in full so that you can hold it against your own payslip and see whether we are telling the truth, which is a test you can finish before you finish this page.

Gross pay for the month

71,789.00

Affordable Housing Levy

1,076.84

1.5% of gross

SHIF

1,974.20

2.75% of gross

NSSF Tier I

540.00

6% of the 9,000 ceiling

NSSF Tier II

3,767.34

6% of the balance above it

Taxable pay

64,430.62

Gross less all three — the order matters and it is versioned

PAYE before relief

14,112.54

2,400.00 + 2,083.25 + 9,629.29 across the first three bands

Less personal relief

2,400.00

Fixed monthly

PAYE payable

11,712.54

Verified 13 July 2026 against a real employer payslip

All figures in KES. The engine produced 14,112.54 and the payslip said 14,112.54. The check also corrected two of our own numbers on the day it was run — the NSSF Tier I ceiling had been seeded at 8,000 and is 9,000, and SHIF had been seeded as not reducing the PAYE base when it does. Both were caught before any real payroll used them, both are recorded as superseded versions rather than edited away, and the reason you are reading about them is that a rate engine nobody has ever checked against a real payslip is a spreadsheet with better marketing.

The correction, before the sales pitch rather than after it

A credit note raised in AWRA does not reach eTIMS. This page used to say that it did.

The receipt type on everything we transmit is fixed to a sale. Customer invoices go, POS sales go, subscription invoices go — a credit note stays in our ledger and KRA never hears about it. Until today the eTIMS answer in the questions below read "credit notes included". That was wrong, we found it while rewriting this page, and we corrected it here rather than in a release note nobody reads — which is the same standard this page asks you to hold every vendor on your list to.

So the fair version of the question to put to us, and to every other vendor on your list: raise a credit note against a filed invoice and show me the transmission record for the reversal. We will show you the invoice going and the credit note not going. Ask the others to do the same before you believe their table.

Operations in Kenya

The compliance engine is the reason to trust the product. It is not the product.

Everything above is the tax half, and it is the half that earns a shortlist. It is not the half you use on a Tuesday. The system is an operations platform — stock, buying, assets, people, field work — and the eTIMS call is one step inside the sales flow rather than a module sitting on top of it. Kenya is also where all of this was built first, against Kenyan connectivity and Kenyan branch structures, which is why the offline card below is a design centre rather than a concession.

Inventory

Stock per branch, with transfers that are confirmed on arrival

Each branch, store and van holds its own position; a transfer is confirmed on receipt rather than on despatch, so goods in motion are a state instead of a discrepancy somebody explains at month end. Counts are blind and variance is valued.

Procurement

Approvals that refuse rather than warn

Requisition, threshold approval, RFQ comparison, purchase order and three-way matching before anything is paid. The threshold blocks the transaction instead of logging a caution nobody reads, and the trail says who authorised what against which budget.

Supplier prequalification

The annual prequalification round, as a pipeline instead of a folder

Suppliers apply through your own public form, the submissions are reviewed and approved in the system, and an approved applicant becomes a vendor record without anybody retyping a PIN certificate. For anyone running a tender calendar, this is the part that usually lives in a shared drive.

Assets

A register with a custodian on every line

Named custodian, location, condition at each hand-off, movement history and documents attached. The question an auditor actually asks is not what you own, it is who had it in March — and that is a lookup rather than an investigation.

Offline operations

Built for the connectivity here, and then exported everywhere else

Stock transfers, inventory check-out and check-in, and asset movements captured on mobile with no signal and synced on return. Every other market page in this corpus describes this as a capability borrowed from East Africa. This is East Africa.

HR records

Attendance and leave feeding the pay run that is actually ours

Shifts, hours and leave against the employee record, flowing into the one payroll engine on this site with maintained statutory rates behind it. On every other market page the attendance card ends with "your payroll system takes over from here". This one does not.

One qualification that belongs here rather than in the questions: an employee is not a user. Staff exist as employee records without consuming a login, which is what makes payroll for a 200-person operation on a plan sized for its 12 office users honest rather than a loophole.

Recognisable, we hope

Four failures, and none of them announce themselves

The compliance claim that is really a phone number

A rate moves in a Finance Act and the answer is "our partner is working on it". The seam is invisible in a demo and decisive in the week you need it, because the queue you are in belongs to somebody whose priorities are not yours.

Statutory maths nobody has ever checked

Four levies, three of which reduce the PAYE base, applied in an order that is a convention rather than a setting. A wrong order is a small error every month, in the same direction, on every employee — and it surfaces as an assessment rather than as a bug report.

The invoice goes, the reversal does not

A system that transmits sales and quietly cannot transmit a credit note leaves your filed position and your ledger position diverging by exactly the returns. Nothing looks broken. The two numbers just stop agreeing.

Four apps and the reconciliation between them

The invoicing tool, the stock tool, the payroll bureau and the workbook that joins them. The leakage is never inside a tool; it is in the space between two of them, which is the one place no vendor is accountable for.

Scope in Kenya, the build list, and the two things we point elsewhere

Running in the product today

  • The only country in the statutory rule engine. PAYE, NSSF, SHIF and the Affordable Housing Levy as versioned rule sets, cross-checked to the cent against a real employer payslip on 13 July 2026.
  • The P9A rebuilt from frozen snapshots and the exact rule versions each payslip used, so a certificate reproduced years later is identical to the original.
  • eTIMS transmission on invoices, POS sales and subscription invoices, direct to KRA's OSCU API on your own PIN, branch and device serial, with a sandbox toggle.
  • M-Pesa collection and payment on your own Daraja credentials — STK push, dynamic QR, C2B paybill and till, B2C to a phone, B2B to a paybill or till.
  • Referenced invoicing with automatic M-Pesa matching, receivables aged by bucket, and an unmatched-receipt queue for payments that arrive without a usable reference.
  • Multi-branch stock, procurement with refusing thresholds and three-way matching, an asset register with custody, and offline field capture — the operations half, which is what the compliance half sits inside.

More we can add — on the roadmap, and commissionable now

  • Credit notes transmitted to eTIMS. The transmitted receipt type is fixed to a sale. This is the single largest item on the page and the reason the correction sits above the capability grid rather than below it.
  • Bank statement reconciliation. M-Pesa matching works on the reference; matching a bank statement does not exist in any form. If most of your collections arrive by bank, this is the sentence on the page that matters most to you.
  • The unmatched-receipt queue is capped at 300 open invoices. A large operation will exceed that and will be attaching receipts against a truncated list, which is a real limit rather than a theoretical one.
  • NSSF Tier II's upper ceiling of 72,000 is unconfirmed. The verifying payslip's gross fell below it, so that one number is carried on the published schedule rather than on evidence. It is the only figure in the derivation above that we have yet to see a payslip prove.

What we would decline, and would rather say now

  • We will not file your returns. We compute the deductions, we transmit the invoices and we produce the P9; the VAT return, the PAYE return and every iTax submission stay with you and your accountant. A vendor who files on your behalf has taken on a duty they cannot discharge and you carry the assessment either way — the separation is protection, not laziness.
  • We will not tell you whether a charge is allowable, or how to treat a transaction. That is an adviser's judgement with an adviser's liability attached, and a vendor willing to make it in a sales meeting is selling you a risk with the software. We will hold the evidence, compute what the rules say, and show our working.

The four items in the middle column are work rather than positions, and each is commissionable now on the same terms as everything else here: a written specification, a timeline and a price, agreed before any money moves. The evidence that this is a real offer and not a sales line is the left-hand column — the eTIMS transmission and the statutory engine were both built exactly that way, by clients asking for them. We will not name a date on this page. We will name one in a quote.

Read the three columns as three different statements, because they are. The left is what runs. The middle is what we would build next. The right is what we will not build at any price, and it is the column that should make the other two easier to believe — a vendor with nothing in the right-hand column has simply not been asked a hard enough question yet.

How this starts

Three moves, and the first one does not involve us

01

Test the two claims before you talk to us

Hold the derivation above against one of your own payslips, and ask any vendor on your list to raise a credit note and show you the eTIMS transmission record for the reversal. Both tests cost you a morning and neither one needs us in the room.

02

Start where the leakage is, not where the compliance is

Stores for anyone holding stock, procurement for anyone with a tender calendar, payroll for anyone currently paying a bureau. One module, one cycle, migrated with opening balances verified before go-live rather than after.

03

Close the gaps between the tools

Add the next module once the first is boring. Each replacement removes a reconciliation seam, and the seams are where the money was going — which is the same argument this whole page makes about compliance, applied to your app list.

Read before you shortlist

Guides for this market

Kenya Business Guides 8 min

ERP Pricing in Kenya: What to Expect (KES Breakdown)

License models, the implementation costs nobody quotes upfront, honest three-year totals in KES, and the questions that expose hidden pricing.

Read
Kenya Business Guides 8 min

eTIMS, PAYE, NSSF & SHIF: Compliance Features Your ERP Must Have

What each Kenyan compliance regime actually requires from your system — eTIMS invoicing, statutory payroll, withholding, records — plus vendor test questions.

Read
Kenya Business Guides 7 min

How Kenyan Businesses Are Digitizing Operations in 2026

eTIMS mandates, M-Pesa-native operations, multi-branch growth — the forces pulling Kenyan SMEs off spreadsheets, and how the successful ones sequence the move.

Read
Procurement Insights 11 min

Three Quotes and No Way to Score Them

We have requests for quotation with real line items and recorded responses. We have no request for proposal, no scoring model, no panel and no sealed bids. Those are not degrees of the same thing, and one of the four cannot be substituted procedurally.

Read
Procurement Insights 11 min

What Reaches the Job and What Does Not

A purchase can name the job it is for, and so can a stock issue — costed at the price stamped when it left the store, so a finished job cannot change price later. Two things never reach the job at all, and one of them will surprise you.

Read
Point of Sale 11 min

The Session That Only Counts the Cash

A till session opens with a float, records every drop, and closes with a counted figure and a variance against the person who counted it. All of it is about cash — so on a counter where most customers pay by phone, the strongest control in the shop is watching the smallest pile of money.

Read

Questions we are asked in Nairobi

Straight answers, on the one market where the whole chain is ours

Is eTIMS included, or an add-on?

Included, and it runs inside the normal sales flow rather than as a separate step: customer invoices, POS sales and subscription invoices transmit to KRA's OSCU API on your own PIN, branch and device serial, and the receipt signature and QR come back onto the document. Sandbox and production are a toggle so you validate end to end before going live. Credit notes do not transmit — the receipt type is fixed to a sale, a credit note stays in our ledger, and an earlier version of this page wrongly said otherwise. It is commissionable on a written spec, timeline and price, and we will not put a date on it here.

What does "the only country in the statutory engine" actually mean?

Literally that our statutory rule configuration contains one country key, and it is Kenya. Every other market page in this corpus says local payroll is not ours and points you at a local provider, because it is not and we do not want the customer discovering that in month two. For Kenya it means the PAYE bands, the NSSF tiers, SHIF, the housing levy and the order they apply in are maintained by the team that maintains the rest of the product, versioned with effective dates, and re-checked against real payslips. It is a statement about coverage, not a claim that it is the best payroll engine you can buy.

Do you file our VAT and PAYE returns?

No, and we will not. We compute the deductions, transmit invoices to eTIMS and produce the P9A; the returns themselves are filed by you on iTax. The separation is deliberate — a filing obligation cannot actually be transferred to a software vendor, so a vendor who accepts it has sold you comfort rather than protection, and you carry the assessment either way. What we do instead is make the filing position reconstructable: the numbers, the evidence and the working are all in one place when your accountant asks. This one is a boundary rather than a backlog, and it does not change with a commissioned build. It protects you specifically: the assessment lands on you whichever way this is arranged, so the arrangement that helps is the one where the evidence is yours, complete, and in your hands the day somebody asks — not one where a vendor has accepted a duty they cannot discharge and you find that out during an audit.

Can parents, tenants or customers pay by M-Pesa and have it match automatically?

To the right invoice, yes — a payment quoting the invoice reference attaches to it and updates the balance. Collection runs on STK push, a dynamic QR and C2B paybill or till, all on your own Daraja credentials into your own shortcode. Three honest limits. The QR has no callback, so confirmation is out of band. Unreferenced receipts land in a queue you attach by hand, and that queue is capped at 300 open invoices. And bank statement reconciliation does not exist at all — only M-Pesa. If most of your money arrives by bank transfer, weigh that heavily.

How is AWRA priced?

In KES, published on the plans page, by plan tier rather than per-seat arithmetic that punishes you for hiring. The three-year total — licence, implementation, training, support — is something you can compute before speaking to anybody. One thing worth knowing for payroll specifically: an employee is not a user, so a 200-person workforce does not need 200 logins.

We are already running four systems. What does replacing them actually look like?

Module by module, on your cycle, starting with whichever one is leaking. Opening balances are verified before go-live rather than reconciled after it, and each module you move removes a reconciliation seam between two tools — which is the same argument this page makes about compliance. What we avoid is the mid-year big-bang migration, because the parallel run is where the discipline is actually established.

Why put the limits on the sales page rather than in the contract?

Because scope you discover before signing is a scoping decision, and the same scope discovered in month three is a relationship problem — and we would rather have the first conversation. Every market page on this site carries a ledger like the one above, and several of them name things our own code gets wrong; the Tunisia page publishes an arithmetic error with the figure attached. It is a standard we set rather than a confession, and the useful part is that you can apply it to everybody: ask each vendor on your list what their product does not do, and see who has the answer ready.

Bring one payslip and one credit note

The payslip tests the statutory engine to the cent. The credit note finds the gap we have already told you about. Both take an hour, and you will learn more than a demo would tell you.