Uganda EFRIS for Point of Sale
Fiscalise retail receipts with URA EFRIS - returns FDN, verification code and QR
Turn every Odoo point-of-sale receipt into a legally valid Uganda fiscal document. This app builds the URA EFRIS T109 invoice/receipt payload for each retail (B2C) sale, encrypts and signs it with your own keys, submits it to the Uganda Revenue Authority EFRIS gateway and stores the returned Fiscal Document Number (FDN), verification (anti-fake) code and QR code on the order. Compatible with Odoo 18 & 19 Community.
Real EFRIS T109 generator
Canonical EFRIS T109 JSON with every documented section: sellerDetails, basicInformation, buyerDetails, goodsDetails, taxDetails, summary and payWay. Retail sales are marked as a receipt (invoiceKind 2) to a consumer (buyerType 1).
FDN + verification code + QR
On acceptance the app stores the EFRIS FDN (invoiceNo), the invoiceId, the anti-fake verification code and renders the QR code a buyer scans to verify the receipt on the URA portal.
Bring-your-own-key sealing
The EFRIS gateway does not accept cleartext. The app AES-256 encrypts the content and attaches an RSA-SHA256 signature made with the private key whose certificate is registered with URA. The device AES key returned by the EFRIS key interface (T104) is RSA-unwrapped with your private key. Keys live only in your database.
Uganda VAT, done right
Lines are classified into the EFRIS tax categories - standard 18% (01), zero-rated (02) and exempt (03) - straight from the Odoo tax on each POS line, with the exempt rate emitted as the EFRIS "-" token.
Pre-submission validation
A layered rule set catches the mistakes EFRIS rejects - missing seller TIN, B2B buyer without a TIN, line math that does not reconcile, exempt lines carrying VAT, totals that do not equal the sum of the lines - before the round trip, with a clear code-tagged error report.
10-digit TIN validation
URA Taxpayer Identification Numbers are normalised and structurally validated (10 digits) on the company, partners and the onboarding wizard, so a bad TIN never reaches EFRIS.
One-step onboarding
A guided wizard captures the company TIN, EFRIS device number, BRN and signing key and creates the connection in a single step. A connection test runs the EFRIS device-key handshake.
Automation & audit
An optional scheduled action fiscalises pending receipts in the background, and a full transport log records every request and response for support and audit.
What this app does
| Capability | Detail |
|---|---|
| Document | EFRIS T109 invoice/receipt JSON for retail B2C point of sale |
| Returns | FDN (invoiceNo), invoiceId, anti-fake verification code, QR code |
| Tax categories | Standard 18% (01), Zero-rated (02), Exempt (03) |
| Currency | Uganda Shilling (UGX) |
| Sealing | AES-256 content encryption + RSA-SHA256 signature (BYOK) |
| Payments | Cash, mobile money, card/POS, cheque, EFT, RTGS mapping |
| Connection | Sandbox / production gateway, device-key handshake (T104) |
| Validation | TIN check, line reconciliation, exempt-rate rules, totals |
| Automation | Optional cron fiscalisation + full transport log |
| Compatibility | Odoo 18 & 19 Community, Point of Sale |
Bring-your-own-key boundary
This app is a format generator and BYOK transport. It produces the EFRIS-compliant payload and transmits it using your own EFRIS device credentials and signing key. It is not a certified device and does not impersonate one; the URA EFRIS platform validates the document and issues the FDN. Your credentials and keys never leave your database and are sent only to the URA endpoint you configure.
We are an independent Odoo software vendor, not a URA agent or accredited EFRIS integrator. Email support is included; if the connector does not work as described we offer a refund per the Odoo Apps Store policy.
Screenshots
Connections
Transport Log
Onboarding
Update date: 2026-07-02