Data Lookups & Inquiries

Units of measure, currencies, commodity categories, excise duty codes, branches - the reference data an EFRIS integration relies on is available through these lookups. All lookups are POST requests under the same base URL, and larger lists can be paged through.

Endpoint overview

Endpoint Purpose
/validate-tin Look up any taxpayer - e.g. a buyer for B2B invoices
/query-branches All of your business's branches
/query-exchange-rates URA exchange rates for all currencies
/query-single-exchange-rate URA exchange rate for one currency
/query-paginated-commodity-categories The commodity classification tree, page by page
/query-excise-duty All excise duty codes and rates
/query-deemed-projects Deemed VAT projects available to your business
/register-good-or-service See Goods Registration
/query-goods Your registered goods
/query-stock-quantity Current stock for a good
/query-good-details The full EFRIS record for one good
/query-stock-movement-history Stock in / out / transfer history
/query-invoices Search your fiscalised invoices
/query-normal-invoices Invoices eligible for a credit note
/invoice-details Retrieve one fiscalised invoice

The system dictionary

POST/sync-dictionary

Returns the EFRIS system dictionary - units of measure, currencies, payment modes, Incoterms, and other reference lists.

{
    "rateUnit": [ { "name": "per litre", ... }, ... ],
    "currencyType": [ { "name": "UGX", ... }, ... ],
    "payWay": [ { "name": "Cash", ... }, ... ],
    ...
}

Want a working example of the system dictionary? Chat with our team

The dictionary rarely changes - cache it locally rather than fetching it on every request.

TIN validation

POST/validate-tin

Look up any taxpayer's URA registration profile - e.g. a buyer's legal name before issuing a B2B invoice. Taxpayers can be looked up by TIN, or by NIN / BRN.

{
    "taxpayer": {
        "tin": "1000029771",
        "legalName": "UGANDA REVENUE AUTHORITY",
        "businessName": "UGANDA REVENUE AUTHORITY",
        "address": "198 NIP BUILDING Nakawa KAMPALA NAKAWA DIVISION BUGOLOBI",
        "contactEmail": "services@ura.go.ug",
        ...
    }
}

Want a working example of TIN validation? Chat with our team

Branches

POST/query-branches

Lists every branch registered under your TIN - useful for branch-level stock and stock transfers.

[
    { "branchId": "206637525568955296", "branchName": "MAIN BRANCH", ... },
    { "branchId": "206637528324276772", "branchName": "KAMPALA BRANCH", ... },
    ...
]

Want a working example of the branches lookup? Chat with our team

Exchange rates (all currencies)

POST/query-exchange-rates

Returns URA's rates for every currency, for today or for a date you choose.

[
    { "currency": "USD", "rate": "3700", "importDutyLevy": "3740.6388", ... },
    { "currency": "EUR", "rate": "4020.5", ... },
    ...
]

Want a working example of the exchange rates lookup? Chat with our team

Exchange rate (single currency)

POST/query-single-exchange-rate

Returns URA's rate for one currency - handy when invoicing in a foreign currency.

{
    "currency": "USD",
    "rate": "3700",
    "importDutyLevy": "3740.6388",
    "exportLevy": "3730.6444",
    ...
}

Want a working example of the single exchange rate lookup? Chat with our team

Commodity categories (paginated)

POST/query-paginated-commodity-categories

URA's commodity classification tree, one page at a time - ideal for search-as-you-type pickers when classifying your goods.

{
    "page": { "pageNo": "1", "pageSize": "15", "totalSize": "8213", "pageCount": "548" },
    "records": [ { "commodityCategoryName": "Bottled water", ... }, ... ]
}

Want a working example of paginated commodity categories? Chat with our team

Excise duty codes

POST/query-excise-duty

Returns every excise duty and its current rate.

{
    "exciseDutyList": [
        {
            "goodService": "Mineral Water",
            "rateText": "shs.150.00 Per litre",
            "effectiveDate": "19/02/2025",
            ...
        },
        ...
    ]
}

Want a working example of the excise duty lookup? Chat with our team

Excise duty codes are used when registering excise goods - see Good Registration, scenario D.

Deemed VAT projects

POST/query-deemed-projects

Returns the deemed VAT projects available to your business, optionally filtered by commodity category.

{
    "deemedAndExemptProjectList": [
        {
            "projectName": "Kampala Water Project",
            "currentQty": "100",
            "currency": "USD",
            "exchangeRateDate": "2026-06-12",
            ...
        },
        ...
    ],
    ...
}

Want a working example of the deemed VAT projects lookup? Chat with our team

Deemed VAT projects are referenced on deemed invoice lines - see Fiscal Invoices, scenario E.
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.