How to integrate your software with URA's EFRIS e-invoicing system in Uganda — the offline enabler, fiscal documents, credit notes, QR codes, and the mistakes that get invoices rejected.
If you sell to VAT-registered customers in Uganda, your invoices increasingly need to carry a URA fiscal number and QR code. That is EFRIS — the Electronic Fiscal Receipting and Invoicing Solution — and bolting it onto an existing POS, ERP, or billing system is one of the most common integration requests we get at Desishub.
This guide explains how EFRIS integration actually works, what trips teams up, and how to add it to your system without breaking the way you already invoice.
EFRIS is URA's system for fiscalising every tax invoice in real time. When you issue an invoice, a copy of it is sent to URA, which stamps it with a fiscal document number, a verification code, and a QR code that anyone can scan to confirm the invoice is genuine. For VAT-registered taxpayers this is not optional — an invoice without a valid fiscal stamp is not a valid tax invoice.
The practical consequence for software: your system can no longer be the sole source of truth for an invoice. URA has to see it and sign it before you hand it to the customer.
Most integrations do not talk to URA's cloud directly. Instead URA provides an offline enabler — a local component you install that exposes an HTTP endpoint (commonly on a port such as 9880). Your application posts a signed JSON payload to that local base URL, the enabler handles encryption, keys and transmission to URA, and returns the fiscal result.
That means three moving parts:
A clean integration treats the enabler as an external service behind an adapter, so your core invoicing logic never hard-codes URA's payload shape.
A typical fiscalised sale runs like this:
The golden rule: store what URA returns. Those three fields are your proof of fiscalisation and you will need them for reconciliation, reprints and audits.
A real EFRIS integration is more than the happy-path invoice:
The failures we see most often:
At Desishub we add EFRIS to systems the way we add any payment rail — behind a verified adapter. The invoice engine computes money server-side in integer units, an adapter translates to the enabler's payload, and a background job retries fiscalisation so a network blip never costs a sale. The fiscal number, verification code and QR are stored on the invoice and reprinted from there. If you already run a POS or ERP, we integrate EFRIS into it rather than asking you to switch systems.
We build exactly this kind of local-rail integration — URA, MTN MoMo, Airtel Money and regional SMS — into custom software and billing products for Ugandan businesses.
Is EFRIS mandatory? For VAT-registered taxpayers, yes — their tax invoices must be fiscalised. Talk to a tax advisor about your specific obligation.
Can EFRIS be added to my existing system? Almost always. EFRIS is an integration, not a new product — we wire it into your current POS, ERP or billing app behind an adapter.
What happens when the internet is down? A well-built integration lets the sale complete and queues fiscalisation to run when connectivity returns, so the till never waits.
How long does an EFRIS integration take? A focused integration into an existing system is typically a few weeks, most of it spent on dictionary mapping, credit notes and the offline queue rather than the happy-path invoice.
Need EFRIS wired into your POS or billing system? Request a quote and we'll scope it against your current stack.