Tech Deciphers — Software Development & M-Pesa Integration in Kenya

KRA eTIMS Integration

Compliance & Integration · Retail Chain · 2024

Real-time KRA eTIMS compliant tax invoice generation integrated into an existing multi-branch POS system.

Overview

A KRA eTIMS compliance integration built into an existing multi-branch POS system for a retail chain with 8 outlets. Every sale triggers an automated tax invoice submission to KRA's eTIMS portal in real time, with fallback queuing for offline scenarios.

The challenge

The Kenya Revenue Authority made eTIMS compliance mandatory for VAT-registered businesses. The client had an existing POS system that needed eTIMS integration without disrupting daily operations across 8 branches. KRA's API documentation was incomplete and the production environment had strict SSL certificate pinning requirements.

The solution

We built a Laravel microservice that sits between the POS and KRA's eTIMS API. Each sale creates a queue job that signs the invoice payload, submits to eTIMS, and stores the acknowledgement number. For branch internet outages, jobs are held in Redis and retried automatically. Compliance reports are generated daily and emailed to the finance team.

Results

  • Full KRA eTIMS compliance achieved across all 8 branches
  • 100% of invoices submitted within 30 seconds of sale completion
  • Zero compliance penalties incurred since go-live
  • Finance team saved 20+ hours per week previously spent on manual invoice filing
  • System handled KRA API downtime gracefully with zero missed submissions

Technologies used

Laravel 10KRA eTIMS APIMySQLReact POS FrontendPDF GenerationQueue WorkerscURL/SSL Pinning

Screens

  • eTIMS compliant invoice — Automatically generated KRA-compliant invoice with QR code
  • Compliance reporting dashboard — Compliance dashboard showing submission status across all branches
  • POS system integration — eTIMS submission triggered automatically on each POS sale
  • Submission audit trail — Full audit trail of every eTIMS submission with KRA acknowledgement numbers

Build something similar →

More projects