EFRIS Gateway

EFRIS integration for your ERP

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.

Two ways to use it

Most businesses want the first. Software companies and larger IT teams usually want the second.

Use our API

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.

  • Running within a day
  • We keep pace with URA changes
  • Support when a document is rejected
Talk to us about access
Own the code

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.

  • Unlimited taxpayers, no per-transaction fee
  • Modify and rebrand it as your own
  • Perpetual: no expiry, no licence keys
See what is included

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 system-to-system integration in Uganda

EFRIS Gateway connects ERP, accounting, billing and POS applications to URA EFRIS through a JSON REST API. Choose the guide for your role.

For businesses

Understand onboarding, invoice workflows and hosted or self-hosted deployment.

Read the business integration guide

For developers

Explore API authentication, endpoint sequencing, fiscal results and error handling.

Read the API developer guide

Systems we connect to URA EFRIS

Your 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.

QuickBooks

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.

QuickBooks EFRIS integration

Tally

TallyPrime and Tally.ERP 9, reached on your own network. The fiscal details go back onto the voucher and onto the printed invoice.

Tally EFRIS integration

Sage

Pastel, Evolution, 300, X3 or Business Cloud. Which Sage you run decides the route, so it is the first thing we settle.

Sage EFRIS integration

Odoo

Online, Odoo.sh or self-hosted. Where it is hosted decides whether an invoice URA refuses can be stopped before it is posted.

Odoo EFRIS integration

Zoho Books

Cloud, authorised once through Zoho. Nothing is installed anywhere, and the QR code lands on the invoice template you already use.

Zoho Books EFRIS integration

YourBooks ERP

Our own accounting and ERP, with EFRIS built in: invoices, credit notes, products and stock go to URA from its own screens.

What YourBooks ERP does

Another system, or one built in-house

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.

Tell us what you run

Looking for a system that is already integrated with EFRIS?

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.

Point of sale

YourBooks POS

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.

  • Each sale goes to URA as you take payment, and prints with its fiscal document number (FDN), verification code and URA's QR code — on a till slip or an A4 invoice
  • Tax invoices for VAT-registered businesses, EFRIS receipts for those that are not, with standard, zero-rated and exempt items
  • Products registered with URA from the POS; stock bought in and stock written off reported to URA
  • A refund against a fiscalised sale raises its credit note with URA from the same screen
  • Keeps selling when the connection drops: the sale is saved on your computer and sent to URA once you are back online, and never fiscalised twice
  • Fitted to your trade: tables, open tabs, kitchen and bar tickets and split bills for restaurants and bars; batches, expiry dates and medicine details for pharmacies; items sold by weight or by part of a unit for supermarkets and hardware; quotations, layaways and gift cards where you need them
  • Several tills on the same network share one stock and one day's takings, with automatic daily backups

Free to try for 30 days. EFRIS setup is arranged with us separately.

Accounting and ERP

YourBooks ERP

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.

  • Tax invoices are fiscalised with URA from the invoice screen, and kept with their fiscal document number (FDN), verification code and QR code
  • Credit notes are submitted to URA against the invoice they credit
  • Products are registered with URA from the product screen
  • Goods received, stock written off and transfers between branches are reported to URA
  • Excise duty codes come from URA's own list, and VAT returns are a built-in report
  • Multi-currency, multiple branches, and unlimited users on one plan

Free to try for 30 days. EFRIS is switched on for your business with us separately.

What it handles

The parts of EFRIS that are tedious to implement and easy to get subtly wrong.

The connection to URA

Everything URA's EFRIS requires before it accepts a document — set up once for each taxpayer, then kept working for you.

Tax arithmetic

Tax-inclusive pricing, zero-rated, exempt and deemed lines, excise duty and discount lines, reconciled to the totals URA validates against.

Multiple taxpayers

Each taxpayer has their own certificate, device, API key, address allow-list and daily quota. One deployment serves all of them.

A record of every exchange

Both sides of every submission are stored, so a rejected document can be examined afterwards rather than reconstructed.

Getting started

Four steps from an API key to a fiscalised invoice.

  1. Register your products and services

    Through the API. An item must be in URA's catalogue before it can appear on an invoice or receipt.

  2. Record your opening stock

    Through the API too. URA rejects a sale of goods it has no stock recorded against; services carry no stock.

  3. Submit an invoice

    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
          }
        ]
      }'
  4. Print the fiscal document

    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"
      }
    }

Endpoints

The main integration surface. Every URA interface is reachable; the documentation lists them all.

PurposeMethodPath
Fiscalise an invoicePOST/api/efris/submit-invoice
Fiscalise a receipt (clients without VAT)POST/api/efris/submit-receipt
Raise a credit notePOST/api/efris/submit-credit-note
Register a productPOST/api/efris/register-product
Record stock receivedPOST/api/efris/stock-increase
Record stock written downPOST/api/efris/stock-decrease
Retrieve an invoiceGET/api/efris/invoice/{fdn}
Look up a taxpayerGET/api/efris/taxpayer/{tin}
Check the connectionGET/api/efris/diagnostics

Own the code

Complete source code. Serve unlimited taxpayers from one deployment, with no per-taxpayer or recurring fees.

One-time multi-tenant licence UGX 7000000 Paid once. Not a subscription. Enquire about a licence

What is included

  • Unlimited taxpayers on a single deployment
  • Full TypeScript source, yours to modify and rebrand
  • Every URA EFRIS interface implemented and tested
  • Multi-tenant admin portal: clients, certificates, API keys
  • Docker deployment and setup documentation
  • Postman collection covering every endpoint
  • No licence keys, no per-transaction fees

Licence terms, in plain words

What you may and may not do with the code, answered before you have to ask.

Is the licence perpetual?

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.

Is the whole source included?

All of it. Nothing obfuscated, nothing compiled away, no proprietary module held back and licensed separately. What runs the service is what you receive.

Is there a per-taxpayer fee?

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.

May I serve other businesses with it?

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.

Can I modify and rebrand it?

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 when URA changes the spec?

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.

What support comes with it?

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.

Can I see it before paying?

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.

Common questions

What is EFRIS?

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.

Do I have to integrate with EFRIS myself?

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.

Which systems does it work with?

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.

How long does setup take?

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.

Do you have a system that is already integrated with EFRIS?

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.

Who you are buying from

Enterprise software, Acounting software, EFRIS integration and tax compliance � Kampala, Uganda.

Registered name
Midway Systems Ltd
Company registration
80040689807095 (URSB, Uganda)
Address
Nabisunsa Close, Kyambogo
Company website
midwayug.com
Email
[email protected]
Phone
+256706090021

Talk to us

Send a message and we will come back to you.

Email

[email protected]

Best for detailed questions and quotes.

WhatsApp

Start a conversation

Usually the quickest way to reach us.

Phone

+256706090021

Business hours, East Africa Time.

Kyambogo-k4-Nakawa