Logo Lanfrica

midwaysystems/efris-integration-guide

Domaine:

digital infrastructure

Type de record:

software
Créateur:
mid
Hôte:
What URA EFRIS rejection codes mean and how to fix them — with Postman collections and working examples for Uganda's e-invoicing system. # EFRIS integration guide (Uganda / URA) Practical notes for integrating with **EFRIS**, the Electronic Fiscal Receipting and Invoicing Solution operated by the Uganda Revenue Authority. EFRIS answers a rejected submission with a numeric code and a terse sentence that rarely says what to change. This repository documents what those codes actually mean and how to fix them, alongside a Postman collection and worked examples. Everything here was learned against the live service, not transcribed from the specification — the two disagree in several places, and the places they disagree are exactly where integrations fail. **Free to use. No account, no sign-up.** --- ## What is in here | | | | --- | --- | | `errors/` | What each URA rejection means, and the fix | | `postman/` | Postman collections for the EFRIS interfaces | | `examples/` | Submitting an invoice, in curl, JavaScript and Python | --- ## The rejections that come up most Start here if a document is being rejected right now. | Code | What it means | | --- | --- | | 15 | The session key expired server-side — not a payload problem | | 306 | Taxpayer is not registered, or the TIN does not match the device | | 676 | The product is not registered, or its stock is insufficient | | 1304 | `summary.itemCount` counted a discount line as a product | | 1343 | Line-level tax does not reconcile with the breakdown | | 1344 | `summary.taxAmount` must **include** excise | | 1345 | `summary.grossAmount` must **exclude** excise — the mirror of 1344 | | 1462 | Excise on a credit note was dropped or mismatched | | 1526 | Currency or exchange-rate handling on a non-UGX document | | 2253 | The seller's reference number has already been used | | 2831 | A tax breakdown row is missing its rate name | The full index covers the rest. --- ## Things that catch almost everyone A short list of behaviours that are not obvious from the specification. **The signature is SHA-1, not SHA-256.** RSA with PKCS#1 v1.5 padding, over th …