Fiscal Invoices

Fiscalisation is the heart of EFRIS: every sale is reported to URA in real time, and URA responds with a Fiscal Document Number (FDN), a verification code, and a QR code that must appear on the printed invoice. One endpoint handles all invoice types:

POST/generate-fiscal-invoice

A. Standard invoice

An example sale: 2 bottles at a gross (tax-inclusive) price of 100,000 UGX each. VAT at 18% is extracted from the gross: 200,000 × 18 ÷ 118 = 30,508.47.

{
    "invoice": {
        "sellerDetails": { "tin": "1014409555", "referenceNo": "INV-2026-001", ... },
        "basicInformation": { "issuedDate": "2026-05-30 10:30:00", "operator": "Jane Kasule", ... },
        "buyerDetails": { "buyerLegalName": "John Doe", ... },
        "goodsDetails": [
            {
                "item": "Premium Water 500ml",
                "qty": "2",
                "unitPrice": "100000",
                "total": "200000",
                "taxRate": "0.18",
                "tax": "30508.47",
                ...
            }
        ],
        "summary": { "grossAmount": "200000.00", ... },
        ...
    }
}

Want a working example of a standard fiscal invoice? Chat with our team

Invoices can be issued to businesses (B2B), individuals (B2C), foreigners, and government entities (B2G), and paid by any mode EFRIS recognises - cash, credit, cheque, mobile money, card, EFT, RTGS, and more. Standard, zero-rated, and exempt items can all appear on the same invoice.

B. Discounts

A discounted item is expressed as two lines: the item itself, followed by its discount line.

{
    "goodsDetails": [
        { "item": "Premium Water 500ml", "qty": "5", "unitPrice": "100000", "total": "500000", ... },
        { "item": "Premium Water 500ml (discount)", "total": "-10000", "tax": "-1525.42", ... }
    ],
    "summary": { "grossAmount": "490000.00", ... },
    ...
}

Want a working example of a discounted invoice? Chat with our team

C. Excise duty items

Items subject to excise duty carry their excise details on the invoice line, and the excise duty is reported as its own tax line alongside VAT. Both percentage-based and per-unit excise duties are supported.

{
    "goodsDetails": [
        {
            "item": "Mineral Water 1L",
            "qty": "100",
            "unitPrice": "2000",
            "total": "200000",
            "exciseTax": "15000",
            "exciseRateName": "UGX150 per litre",
            ...
        }
    ],
    ...
}

Want a working example of an invoice with excise duty items? Chat with our team

D. Export invoices

Exported goods are zero-rated and carry export details such as delivery terms (Incoterms), net weight, and optionally the HS tariff code. Non-resident buyers are supported.

{
    "invoice": {
        "buyerDetails": { "buyerLegalName": "Nairobi Traders Ltd", ... },
        "goodsDetails": [
            {
                "item": "Ugandan Coffee",
                "qty": "500",
                "total": "6000000",
                "taxRate": "0",
                "totalWeight": "500",
                "hsName": "Coffee, not roasted, not decaffeinated",
                ...
            }
        ],
        ...
    }
}

Want a working example of an export invoice? Chat with our team

Export of services and bond / high-sea sales are supported as well.

E. Deemed VAT items

Deemed VAT applies when the buyer is a registered "deemed" party (e.g. Strategic Investors). Each deemed line references the URA-registered project it belongs to - available from the deemed projects lookup.

{
    "goodsDetails": [
        {
            "item": "Consulting Services (deemed)",
            "qty": "1",
            "total": "5000000.00",
            "vatProjectId": "893997229738400343",
            "vatProjectName": "Strategic Investor Project",
            ...
        }
    ],
    ...
}

Want a working example of a deemed VAT invoice? Chat with our team

F. Imported services

Services bought from a foreign supplier are reported with the supplier's details and, optionally, a copy of their invoice:

{
    "importServicesSeller": {
        "importBusinessName": "Foreign Supplier Ltd",
        "importAddress": "Nairobi, Kenya",
        "importInvoiceDate": "2026-05-19",
        "importEmailAddress": "supplier@example.com",
        "importContactNumber": "+254701234567",
        ...
    },
    ...
}

Want a working example of an imported services invoice? Chat with our team

G. Airline & EDC (fuel) invoices

Airline Business invoices carry their line items in a dedicated airline section. EDC / Fuel invoices identify the tank, pump, and nozzle the fuel was dispensed from.

Want a working example of an airline or fuel invoice? Chat with our team

H. Debit notes

A debit note increases the value of an invoice that has already been fiscalised - for example when extra goods were delivered or goods were charged at the wrong value. It is uploaded through the same invoice endpoint, referencing the original invoice and the reason:

{
    "extend": {
        "reason": "Extra goods delivered",
        ...
    },
    "goodsDetails": [
        { "item": "Premium Water 500ml", "qty": "3", "total": "300000", ... }
    ],
    ...
}

Want a working example of a debit note? Chat with our team

I. Batch invoice upload

POST/generate-fiscal-invoice/batch

Fiscalise multiple invoices in one request - each one structured just like the standard invoice in scenario A.

What comes next

The response to a successful fiscalisation carries the FDN, verification code, and QR code - see Invoice Response for where to find each one. To reverse an invoice, see Credit Notes.

Looking for the complete reference? Field definitions, code lists, validation rules, error handling, and ready-to-run examples for every endpoint are available inside your EFRIS Simplified dashboard once your business is registered on the platform.
Sign in to the dashboard · Get started

Stuck on an integration step? Our engineers reply fast.