Developer Documentation
EFRIS Simplified API Documentation
The EFRIS Simplified API is the fastest way to make any ERP, POS, or custom business system EFRIS-compliant in Uganda. You send plain JSON over HTTPS; we handle every hard part of URA's EFRIS protocol - payload encryption, digital signing, key exchange, and device management - and return the decrypted URA response with the Fiscal Document Number (FDN), verification code, and QR code your invoice needs.
https://efrissimplified.com/api/efris/{tin}{tin} is the TIN of the business registered on EFRIS Simplified. All endpoints are
POST and accept/return JSON.
Why integrate through a middleware API?
Integrating directly with URA EFRIS means implementing AES payload encryption, RSA digital signatures, daily symmetric-key rotation, and a large, strictly-validated interface specification. Teams routinely spend months on this. With EFRIS Simplified, your integration is reduced to a handful of JSON endpoints:
- No cryptography: encryption, signing, and key management happen on our side.
- No XML or envelope handling: plain JSON in, decrypted JSON out.
- Field-level validation: clear HTTP
400errors before anything reaches URA. - Any language: if it can make an HTTPS POST request, it can fiscalise invoices - PHP, Java, C#, Python, Node.js, Dart, Go, and everything else.
Integration at a glance
| Step | What you do | Guide |
|---|---|---|
| 1 | Authenticate with your API key and learn the request conventions | Authentication |
| 2 | Register every good or service you sell with URA | Goods Registration |
| 3 | Load stock so URA's inventory ledger matches yours | Stock Management |
| 4 | Fiscalise sales and receive the FDN + QR code | Fiscal Invoices |
| 5 | Reverse or adjust invoices when goods are returned | Credit Notes |
Quick example
Every call is a normal HTTPS request. Here is a goods registration in one request:
curl -X POST https://efrissimplified.com/api/efris/1000123456/register-good-or-service \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"goods": [
{
"operationType": "101",
"goodsName": "Premium Water 500ml",
"goodsCode": "SKU-BOTTLE-01",
"measureUnit": "101",
"unitPrice": "100000",
"currency": "101",
"commodityCategoryId": "22011000",
"haveExciseTax": "102",
"havePieceUnit": "102",
"haveCustomsUnit": "102",
"stockPrewarning": "10"
}
]
}'
And every response uses the same envelope:
{
"response": "OK", // "OK" or "ERROR"
"message": "Goods registered successfully",
"data": {} // Decrypted EFRIS response body
}
Documentation sections
| Section | What it covers |
|---|---|
| Authentication | Bearer API keys, camelCase field naming, gross pricing, numeric formats, and the response envelope |
| Goods Registration | Registering goods and services - standard goods, piece packaging, percentage and unit-based excise duty, services, extra selling units, customs units, and modifications |
| Stock Management | Stock increases (purchase, import, manufacturing, opening stock), decreases, and branch-to-branch transfers |
| Fiscal Invoices | Fiscalising sales - standard invoices, discounts, excise items, exports, deemed VAT, imported services, airline & fuel invoices, debit notes, and batch upload |
| Credit Notes | Applying for credit notes, tracking approval, cancelling and voiding applications |
| Data Lookups | The system dictionary, TIN validation, exchange rates, commodity categories, excise duty codes, branches, and deemed-VAT projects |
| Invoice Response | Where to find the FDN, verification code, and QR code - plus how to print a compliant e-invoice |
| Best Practices | Critical rules that keep your integration reliable and your tax reporting accurate |
Frequently asked questions
Do I need to implement EFRIS encryption myself?
No. AES payload encryption, RSA digital signatures, and daily key exchange with URA are handled entirely by the middleware. Your system only ever sends and receives plain JSON.
Which systems can integrate?
Any system that can make an HTTPS POST request: custom ERPs, POS systems, e-commerce platforms, school and hospital management systems, accounting packages, and mobile apps - in any programming language.
How do I get an API key?
Register your business with EFRIS Simplified, then generate your API key from your dashboard under Security. See Authentication for how to use it.
Is this the official URA documentation?
No - this documents the EFRIS Simplified middleware API. Field names, codes, and validation rules intentionally mirror URA's official EFRIS interface specification, so knowledge transfers both ways, but you never talk to URA's servers directly.