A single REST API between the system your business already runs — QuickBooks, Tally, Sage, Odoo, Zoho Books, or one built in-house — and the Uganda Revenue Authority's EFRIS service. Send an invoice or receipt to URA as ordinary JSON and receive the fiscal document number, verification code and QR code URA issues, in the response.
Most businesses want the first. Software companies and larger IT teams usually want the second.
UGX 1,200,000 per taxpayer for the first year, setup included
then UGX 1,000,000 per taxpayer each year after
Your system sends its invoices and receipts to URA through our API, and gets back each one's fiscal document number (FDN), verification code and QR code from URA, ready to print. Nothing to host, nothing to maintain.
UGX 7,000,000 once
no recurring fee, ever
The complete source, deployed on your own infrastructure. Serve unlimited taxpayers and charge them what you like — you sell the service, we do not take a share.
Serving more than a handful of taxpayers, the licence costs less than the subscriptions it replaces within the first year or two — and nothing after that.
EFRIS Gateway connects ERP, accounting, billing and POS applications to URA EFRIS through a JSON REST API. Choose the guide for your role.
Understand onboarding, invoice workflows and hosted or self-hosted deployment.
Read the business integration guideExplore API authentication, endpoint sequencing, fiscal results and error handling.
Read the API developer guideYour invoices, credit notes, items and stock go to URA from the system you already use. These are the ones we connect today; each has its own page on how it works for that system.
Online and Desktop. Online is authorised once through Intuit; Desktop uses a connector beside the company file. Invoices are fiscalised as they are raised, and the FDN and QR code come back for printing.
TallyPrime and Tally.ERP 9, reached on your own network. The fiscal details go back onto the voucher and onto the printed invoice.
Pastel, Evolution, 300, X3 or Business Cloud. Which Sage you run decides the route, so it is the first thing we settle.
Online, Odoo.sh or self-hosted. Where it is hosted decides whether an invoice URA refuses can be stopped before it is posted.
Cloud, authorised once through Zoho. Nothing is installed anywhere, and the QR code lands on the invoice template you already use.
Our own accounting and ERP, with EFRIS built in: invoices, credit notes, products and stock go to URA from its own screens.
If it can make an HTTPS request, it connects through the same API, with field names in snake_case or camelCase. Point-of-sale, billing and custom systems included.
This API connects a system you already have to URA. If you are still choosing one, both of ours already issue URA fiscal documents on their own — nothing to develop, and no second program to run.
A point of sale installed on your own Windows computer, with its own database: the till, the stock and the accounts in one. At setup you say what kind of business you run — supermarket, shop or boutique, pharmacy, hardware or wholesale, bar, restaurant or café, salon or other services — and it shows the features that business needs. Every sale posts to real double-entry books, and the URA fiscal document comes straight from the till.
Free to try for 30 days. EFRIS setup is arranged with us separately.
Online accounting and ERP, used from the browser: general ledger, invoicing and receivables, bills and purchase orders, banking and reconciliation, inventory across warehouses and branches, manufacturing, and financial reports — all on double-entry books.
Free to try for 30 days. EFRIS is switched on for your business with us separately.
The parts of EFRIS that are tedious to implement and easy to get subtly wrong.
Everything URA's EFRIS requires before it accepts a document — set up once for each taxpayer, then kept working for you.
Tax-inclusive pricing, zero-rated, exempt and deemed lines, excise duty and discount lines, reconciled to the totals URA validates against.
Each taxpayer has their own certificate, device, API key, address allow-list and daily quota. One deployment serves all of them.
Both sides of every submission are stored, so a rejected document can be examined afterwards rather than reconstructed.
Four steps from an API key to a fiscalised invoice.
Through the API. An item must be in URA's catalogue before it can appear on an invoice or receipt.
Through the API too. URA rejects a sale of goods it has no stock recorded against; services carry no stock.
Send the sale as JSON. Field names may be snake_case or camelCase.
curl -X POST https://efrisgateway.com/api/efris/submit-invoice \
-H "X-API-Key: $EFRIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"format": "simple",
"invoice_number": "INV-2026-000412",
"invoice_date": "2026-08-21",
"customer_name": "Nakawa Traders Ltd",
"buyer_type": "1",
"payment_method": "102",
"items": [
{
"item_name": "Bottled water 500ml",
"item_code": "WTR-500",
"quantity": 12,
"unit_price": 1500,
"tax_rate": 18
}
]
}'
The response carries everything the printed invoice must show.
{
"success": true,
"invoiceNumber": "INV-2026-000412",
"fdn": "325043056477",
"verificationCode": "234893273725405146366",
"qrCode": "iVBORw0KGgoAAAANSUhEUg...",
"summary": {
"netAmount": 15254.24,
"taxAmount": 2745.76,
"amountPayable": 18000,
"amountInWords": "Eighteen thousand shillings only",
"paymentMode": "Cash"
}
}
The main integration surface. Every URA interface is reachable; the documentation lists them all.
| Purpose | Method | Path |
|---|---|---|
| Fiscalise an invoice | POST | /api/efris/submit-invoice |
| Fiscalise a receipt (clients without VAT) | POST | /api/efris/submit-receipt |
| Raise a credit note | POST | /api/efris/submit-credit-note |
| Register a product | POST | /api/efris/register-product |
| Record stock received | POST | /api/efris/stock-increase |
| Record stock written down | POST | /api/efris/stock-decrease |
| Retrieve an invoice | GET | /api/efris/invoice/{fdn} |
| Look up a taxpayer | GET | /api/efris/taxpayer/{tin} |
| Check the connection | GET | /api/efris/diagnostics |
Complete source code. Serve unlimited taxpayers from one deployment, with no per-taxpayer or recurring fees.
What you may and may not do with the code, answered before you have to ask.
Yes. Paid once, no expiry, no renewal, no licence key, and nothing that phones home. It keeps working whether or not you ever pay us again.
All of it. Nothing obfuscated, nothing compiled away, no proprietary module held back and licensed separately. What runs the service is what you receive.
None. Unlimited taxpayers on one deployment, and no per-invoice or per-transaction charge. Each taxpayer gets their own certificate, device number, API key and quota.
Yes — run it as your own EFRIS service, embed it in a product you sell, or deploy it internally, and charge what you like. What you may not do is resell, sublicense or redistribute the source itself. You may sell the service, not the software.
Yes. The brand name, public URL and contact details are configuration rather than code, so it rebrands without touching source — and the source is yours to change anyway.
What you have keeps working. URA does change its specification from time to time, so updates are available as an optional annual arrangement, quoted separately. Never required.
Getting the first deployment running and the first taxpayer submitting. Ongoing support and integration work are quoted separately, and are optional — nothing stops working without them.
Yes. A walkthrough of the admin portal and the code structure can be arranged first, and the integration guide and Postman collection shared with your developers.
The Electronic Fiscal Receipting and Invoicing Solution operated by the Uganda Revenue Authority. VAT-registered businesses in Uganda must submit invoices to it and print the fiscal document number, verification code and QR code URA returns.
No. Your system sends its invoices and receipts to URA through this API as ordinary JSON, and gets back the fiscal document number, verification code and QR code URA issues for each. Or licence the source and run it yourself.
QuickBooks, Tally, Sage, Odoo, Zoho Books and YourBooks ERP are connected today. Beyond those, any system that can make an HTTPS request. Field names are accepted in either snake_case or camelCase, so most ERPs, point-of-sale systems and custom applications integrate without a plugin.
A day for a straightforward integration, once the taxpayer's certificate is registered with URA. Products and services are registered through the API as part of the integration, not beforehand. Most of the elapsed time is URA's registration, not the integration itself.
Yes, two. YourBooks POS is a desktop point of sale for retail, pharmacy, hardware, restaurant, bar and service businesses, and YourBooks ERP is online accounting and ERP. Both issue URA fiscal documents themselves, with the FDN and QR code, so there is nothing to integrate. See what each one does.
Enterprise software, Acounting software, EFRIS integration and tax compliance � Kampala, Uganda.
Send a message and we will come back to you.
Kyambogo-k4-Nakawa