Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Point Of Sale
  3. EFRIS POS (Uganda URA) v 18.0
  4. Sales Conditions FAQ

EFRIS POS (Uganda URA)

by AminiTech Solutions https://www.aminitechsolutions.com
Odoo

$ 188.00

v 18.0 Third Party
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 17.0 18.0 19.0
You bought this module and need support? Click here!
Versions 17.0 18.0 19.0
  • Description
  • Manifest
  • License
🎉 30% LAUNCH OFFER — Save 30% on every EFRIS app for a limited launch period. Get URA-compliant now, for less.
For Odoo 18 · Community & Enterprise

EFRIS POS — the till, fiscalised in real time

Fiscalise every paid Point of Sale order to the Uganda Revenue Authority through EFRIS the instant it is validated. The Fiscal Document Number (FDN) and verification code come back from URA’s T109 upload and print straight onto the customer receipt, next to the EFRIS QR — with zero cashier wait.

✅ FDN + code on the receipt ✅ Real-time T109 fiscalisation ✅ Zero cashier wait
EFRIS POS — the till, fiscalised in real time
$89 ⭐ Implementation included

One-time purchase · unlimited documents · free updates on every URA EFRIS spec change. Requires the free EFRIS Base.

Overview

Fiscal receipts, without slowing the queue

EFRIS is a URA cloud service, so the moment an order is paid the connector uploads it through T109 and prints the returned FDN, verification (anti-fake) code and QR on the customer receipt — a valid fiscal document the buyer can check on the URA EFRIS app. If URA is momentarily busy or offline, the order falls back to the free EFRIS Base queue and is fiscalised automatically the moment the service is back. The cashier is never blocked.

🧾

FDN on the paper

The Fiscal Document Number (FDN), the verification (anti-fake) code and the EFRIS QR print on the customer receipt, so every sale is a valid URA fiscal document the buyer can validate on the EFRIS app or the ura.go.ug FDN page.

⚡

Real-time, then resilient

The T109 upload is attempted inline the instant an order is validated; if URA is briefly unreachable the order falls back to the Base queue and retries by itself — the till keeps moving, nothing is lost.

🏷️

Fiscalised on the right categories

Each line is uploaded with the EFRIS tax category (standard 18%, zero-rated, exempt or deemed) and the UNSPSC commodity category from EFRIS Invoice, so VAT reaches URA exactly as the spec expects.

How it works

Real-time fiscalisation at the till

EFRIS tab on a paid POS order showing status Fiscalised, the FDN, the verification code and the EFRIS invoice ID returned by URA
01 · Real-time T109

Every paid order is fiscalised the moment it is validated

The connector hooks the order the instant the cashier takes payment and uploads it to the URA EFRIS cloud through interface T109. The upload is attempted inline — not on a nightly batch — so the Fiscal Document Number (FDN), the verification (anti-fake) code and the URA invoice ID are written back onto the order before the paper leaves the printer. The buyer’s TIN travels with the sale when a customer is set on the order; anonymous sales go up as a walk-in buyer, which is exactly what a till needs. Each order also gets its own EFRIS reference number, so a resend can never double-declare the same sale at URA.

02 · Fiscal receipt

The FDN and verification code print on the customer receipt

The three values URA hands back — FDN, verification code and EFRIS invoice ID — are pushed straight into the Point of Sale receipt data, and the receipt header prints a fenced “URA EFRIS” block carrying the FDN and the verification code. That turns an ordinary till slip into a valid fiscal document the customer can check on the URA EFRIS app or the FDN-validation page. Nothing to re-key, no separate fiscal printer, no second device on the counter.

The EFRIS fields on a POS order — FDN, verification code and invoice ID — that are pushed onto the printed receipt
POS order EFRIS tab with status, FDN, verification code, EFRIS invoice ID and the failed-reason field
03 · EFRIS tab

Full URA acknowledgement on every order, in one tab

Each POS order gains a dedicated EFRIS tab holding the EFRIS Status (To Declare, Queued, Fiscalised, Failed or No EFRIS Config), the FDN, the verification code and the EFRIS invoice ID. If URA rejects the sale, the exact failure reason returned by the service appears on the same tab — it stays hidden while everything is healthy, so the form is not cluttered. The fiscal fields are read-only and are never copied when an order is duplicated, so a fiscal identity can never be forged in Odoo.

04 · Manual override

A one-click “Declare to EFRIS” button for anything still pending

A Declare to EFRIS button sits in the POS order header for any sale that has not yet reached URA, and it disappears the moment the order is fiscalised — so a manager can never accidentally re-declare a sale that already has an FDN. Pressing it re-prepares the T109 payload if needed and pushes every pending or failed queue entry for that order immediately, instead of waiting for the next scheduled sweep. It is the one button a supervisor needs after an outage.

POS order header with the Declare to EFRIS button shown for an order not yet fiscalised
POS Orders list showing the EFRIS Status badge column and the Fiscal Document Number for each sale
05 · Orders list

Fiscal status and FDN as columns in the POS orders list

The Point of Sale orders list gains a colour-coded EFRIS Status badge — green for Fiscalised, amber for Queued, red for Failed — plus an FDN column next to the order total. A manager closing the day can see in one glance which sales have landed at URA and which have not, without opening a single order. The FDN column is optional, so it can be toggled off for a leaner list.

06 · Never blocks the till

A slow or offline URA never freezes the cashier

EFRIS is a cloud service, and cloud services have bad minutes. If the T109 call is slow, refused or the network is down, the order is still completed, still paid and still printed — the declaration simply falls back into the shared EFRIS submission queue and is picked up automatically. Any error raised while declaring is caught and logged rather than thrown at the till, so a URA problem can never become a cashier problem. The FDN is attached to the order the moment URA answers.

EFRIS submission queue holding POS declarations with Pending and Failed states while URA is unreachable
EFRIS queue rows showing interface T109, attempt count, next attempt time, state badges and the Send now action
07 · Automatic retry

Failed uploads retry themselves on a widening back-off

Every declaration lives as a queue entry with its interface code (T109), its attempt count, its next-attempt time and the last response from URA. Failures are retried on a widening back-off — roughly 1, 2, 5, 10, 20, 30 then 60 minutes — so a brief URA outage recovers in minutes while a longer one does not hammer the service. A scheduled job sweeps the due entries every two minutes in strict order, and a per-row Send now action fires any entry immediately when you do not want to wait.

08 · Self-healing & audit

Nothing gets stuck, nothing gets lost, everything is provable

An entry that dies mid-flight (an interrupted worker, a dropped connection) is recovered automatically: anything left Sending for more than fifteen minutes is returned to the retry pool rather than sitting there forever. Each state change is committed as it happens, so a URA acknowledgement can never be lost to a later rollback, and a resend reuses the same queue entry rather than piling up duplicates for the same sale. The payload sent, the URA response, the attempt count and the failure reason are all kept on the entry — the audit trail an EFRIS review asks for.

EFRIS queue list with attempt counts, failed reasons and Sent, Pending and Failed state badges
EFRIS settings page with the taxpayer and device block and the Initialize Device button that performs the URA key handshake
09 · Secure by spec

AES encryption, RSA signing and self-refreshing session keys

Each POS declaration is sent exactly the way URA’s own reference client does it: the JSON payload is AES-encrypted, the encrypted content is RSA-signed, and the whole envelope is posted to the single EFRIS system-to-system endpoint. Initialize Device performs the URA key handshake once — unwrapping the client private key and the AES session key — and stores them in system-admin-only fields. When URA answers that the session key has expired (code 402), the connector transparently fetches a new key and re-sends the very same sale; the cashier never sees it happen.

10 · VAT categories

Every line uploaded on the correct URA tax category

Each order line is declared with the EFRIS tax category mapped onto your Odoo tax — 01 Standard (18%), 02 Zero-rated, 03 Exempt or 04 Deemed. The awkward parts are handled for you: Exempt lines are sent with the literal “-” rate that EFRIS demands rather than a zero, deemed supplies carry the deemed flag, and a line with no tax at all falls back to Exempt instead of failing. The connector also builds the per-category VAT summary URA expects, bucketing net, tax and gross by category across the whole order.

An Odoo tax form showing the EFRIS Tax Category selector with 01 Standard 18%, 02 Zero-rated, 03 Exempt and 04 Deemed
A product’s EFRIS tab showing the UNSPSC commodity code, goods code and registered-with-EFRIS status
11 · Product data

Item codes, commodity codes and units travel with each sale

Every declared line carries the product name, the item code taken from the internal reference (falling back to the barcode), the quantity, the unit price, the line total and the tax amount — already rounded to the two decimals EFRIS accepts. Where EFRIS Stock is also installed, the product’s UNSPSC commodity category and its EFRIS unit code are picked up automatically from the product and its unit of measure, so goods reach URA under the codes they were registered with. Otherwise the line still declares cleanly with a sensible default unit.

12 · Safe rollout

Sandbox first, pause when you need to, and a guard against half-set-up tills

The settings page carries a Sandbox / Production switch with the URA test and live URLs already filled in, so you can run a full shift of real sales through the EFRIS sandbox with zero fiscal impact and flip to production only when you are satisfied. A transmission control lets you pause declarations — orders keep queueing safely instead of being sent — and Resume & Flush pushes the whole backlog to URA in order when you are ready. If the TIN, TaxpayerID, device number or URL are not yet in place, orders are marked “No EFRIS Config” rather than being silently dropped, and the queue is one click away from the same page.

EFRIS settings showing the transmission control, the Sandbox / Production environment switch with URA URLs and the taxpayer and device fields
Implementation included

We connect you to URA EFRIS

Buying the app includes the setup: we help you register your device on the URA EFRIS portal, initialize the secure keys with URA over the cloud API, validate the full flow on the EFRIS sandbox, then switch you to production.

1️⃣
Register

Device on the URA EFRIS portal

2️⃣
Configure

TIN, TaxpayerID, device, tax categories

3️⃣
Validate

Full flow on the EFRIS sandbox

4️⃣
Go live

Switch to production, declare for real

The family

One suite, sold your way

Buy only what you need on the free Base, or take the all-in-one Suite.

EFRIS Base
EFRIS Base
Free engine · view app
EFRIS Invoice
EFRIS Invoice
E-invoicing · view app
EFRIS POS
EFRIS POS
Point of Sale · current
EFRIS Stock
EFRIS Stock
Goods & stock · view app
EFRIS Pro
EFRIS Pro
Control tower · view app
EFRIS Suite
EFRIS Suite
All-in-one · view app

Frequently asked

Does it need EFRIS Base and EFRIS Invoice?

Yes — the free EFRIS Base provides the URA cloud connection, the AES/RSA crypto and the resilient retry queue, and EFRIS Invoice provides the tax categories and UNSPSC commodity categories each order line is fiscalised with.

What if URA is down mid-shift?

The order is fiscalised offline into the Base queue and retried automatically; the receipt still prints and the FDN and verification code are attached the moment URA responds — the cashier is never blocked.

Any limits or subscription?

None. Unlimited orders, one-time purchase, and free updates on every URA EFRIS spec change.

Ready for URA EFRIS compliance?

Install now, or write to us — we set up your EFRIS connection with you.

reach@aminitechsolutions.com
AminiTech Solutions · Kampala & Nairobi · www.aminitechsolutions.com
URA EFRIS receipting for Odoo · Uganda fiscalisation · T109 → FDN + QR on the receipt
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Point of Sale (point_of_sale)
• Invoicing (account)
• Discuss (mail)
• Inventory (stock)
Community Apps Dependencies Show
• EFRIS Invoice (Uganda URA)
• EFRIS Base (Uganda URA)
Lines of code 1199
Technical Name aminitech_efris_pos
LicenseOPL-1
Websitehttps://www.aminitechsolutions.com
Odoo Proprietary License v1.0

This software and associated files (the "Software") may only be used (executed,
modified, executed after modifications) if you have purchased a valid license
from the authors, typically via Odoo Apps, or if you have received a written
agreement from the authors of the Software (see the COPYRIGHT file).

You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without copying
any source code or material from the Software. You may distribute those
modules under the license of your choice, provided that this license is
compatible with the terms of the Odoo Proprietary License (For example:
LGPL, MIT, or proprietary licenses similar to this one).

It is forbidden to publish, distribute, sublicense, or sell copies of the Software
or modified copies of the Software.

The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with