EFRIS Pro — the control tower for URA EFRIS
One screen to supervise every EFRIS submission to the Uganda Revenue Authority: the EFRIS Bot with live counts and one-click flush and retry, a unified declaration report across invoices, POS, goods and stock, and a self-healing health monitor. It sits on top of the free EFRIS Base engine and turns your whole EFRIS integration into a single cockpit. Nothing your business fiscalises to URA stays a black box.
One-time purchase · unlimited documents · free updates on every URA EFRIS spec change. Requires the free EFRIS Base.
See everything, act in one click
Pro turns your EFRIS integration into a control tower. The EFRIS Bot shows what is pending, what was fiscalised today and what failed, and lets you flush the queue or retry failures from one screen. A unified declaration report puts every invoice, POS order, goods registration and stock movement sent to URA in one list and pivot, drillable straight to the source document by its FDN. And a background health monitor quietly recovers stuck submissions and reactivates crons before anyone notices — logging every intervention so a silent problem never hides.
The EFRIS Bot
Live counts — pending, fiscalised today, failed — plus one-click Flush Queue and Retry Failed, so a manager runs the whole EFRIS integration from a single dashboard.
Declaration reporting
Every EFRIS submission across invoices, POS, goods and stock in one searchable list and pivot, drillable straight to the source document by its FDN.
Self-healing health monitor
A background monitor recovers stuck submissions, reactivates the flush cron and flags backlogs — every intervention written to a persistent log, colour-coded by severity.
Supervise the whole EFRIS integration, end to end
One control tower over every URA declaration
EFRIS Pro adds the EFRIS Bot — a single screen that supervises everything your business fiscalises to the Uganda Revenue Authority. It sits on top of the free EFRIS Base engine and reads the live submission queue, so an accountant no longer has to dig through documents to know where compliance stands. One Bot record is kept per company, so a multi-company database gives each entity its own cockpit with its own counts and its own actions. Open it from EFRIS › EFRIS Bot and the whole integration is in front of you.
Pending, fiscalised and failed — counted for you
Four live tiles across the top of the Bot answer the only questions that matter: Pending / Failed, Fiscalised today, Fiscalised total and Failed. Underneath them the Bot shows the exact moment of your last successful upload to URA, so if transmission has quietly stopped you see it immediately instead of at month end. Every figure is computed straight from the queue and scoped to the active company — no caching, no stale dashboard.
Push everything to URA right now, in order
The Flush Queue button sends every due submission to URA immediately rather than waiting for the next scheduled run. It respects EFRIS ordering — entries go out in sequence order, so a credit note never reaches URA before the invoice it reverses — and it honours the transmission setting, so nothing leaks out while you are paused. Use it after a network outage, after fixing a configuration mistake, or simply when a cashier is waiting on a fiscal receipt.
Re-queue every rejected declaration in one click
When URA bounces a submission the Bot raises a warning banner — “Some declarations failed” — and reveals a Retry Failed button. Pressing it resets the Next Attempt on every failed entry for the company and re-sends them there and then, so you do not have to open and re-send them one by one. The button hides itself entirely when the failed count is zero, so a clean day stays a clean screen. If a failure repeats, the banner points you to the Failed tile where the exact URA response text is stored against the entry.
Click a number, get the exact list behind it
Every tile on the Bot is a live drill-down: Pending / Failed opens the queue filtered to just those entries, Fiscalised today opens only what URA accepted since midnight, and Failed opens only the rejections. You land in the submission queue with the interface code (T109, T110, T131), the document, the FDN, the attempt count, the state badge and the failed reason all on one line, plus a per-row Send now action. Group by status straight from the search bar and you have an instant triage board.
Pause transmission, then resume and flush safely
The Bot carries a transmission statusbar so you always know whether the company is Active — send to URA, or Paused — hold in queue. Pausing is the safe way to keep trading through a URA outage or a cutover: documents still register their declarations, they simply queue instead of failing. When you set transmission back to Active, Resume & Flush releases the whole backlog to URA in the original order, and the Bot’s statusbar and last-upload stamp confirm it went through.
Every document you send to URA, in one report
The Declarations report unions every EFRIS submission your database has ever made into a single list — T109 customer invoices, T110 credit notes, T130 goods registrations and T131 stock movements — regardless of which EFRIS apps you have installed. Each line shows the date it was registered, the interface code, the type, the source document model, the FDN that URA returned, the number of attempts and a colour-coded state badge: Fiscalised in green, Failed in red, Pending in grey. It is the one artefact to hand an auditor when they ask what you declared.
Jump from any FDN straight to the document
Every line in the Declarations report carries an Open action that takes you directly to the record behind it — the customer invoice, the credit note, the POS order, the stock receipt or the adjustment. You go from a Fiscal Document Number to the actual document in one click, with no searching by reference and no guesswork about which sale a given FDN belongs to. The link works across every EFRIS document type, so one report is the entry point to your whole compliance trail.
Find a declaration by its FDN in seconds
The Declarations search bar lets you type an FDN or an interface code and land on the exact submission — the fastest way to answer “did this invoice reach URA?”. Two one-click filters isolate Fiscalised or Failed, and Group By collapses the whole report by Interface or by Status, so you can see at a glance that, say, every T110 credit note went through but three T131 stock declarations are still failing. No developer, no custom filter, no SQL.
Cross-tab your declarations by interface and status
The same declaration data opens as a pivot: interface codes down the rows and status across the columns, so fiscalised-versus-failed by document type reads off the grid immediately. Drag in the registered date, the company or the attempt count to build the exact cross-tab you need — a monthly fiscalisation count, a failure rate per interface — then export it to a spreadsheet for the accountant or the auditor. It is your EFRIS compliance picture in numbers rather than anecdotes.
See the shape of your EFRIS traffic
Switch the same report to the graph view and your declaration volume becomes a chart rather than a table — useful for spotting the day transmission stalled, the week a new branch came online, or a creeping rise in rejections. It uses the standard grouping, so any filter or group-by you set in the list carries straight through to the chart. Drop it on a dashboard and EFRIS health becomes something a manager glances at rather than audits.
Stuck submissions recover themselves — and are logged
A background health check runs every 30 minutes and quietly repairs the integration. Any entry left in Sending for more than 15 minutes — a crashed worker, a dropped connection — is recovered and put back in line for retry; if the flush cron was ever switched off it is switched back on; and if the queue backlog grows beyond 200 entries a Critical alert is raised. Every intervention is written to the Health Events log with its type, its severity (Info, Warning in amber, Critical in red) and the full detail, so a problem that fixed itself still leaves a trail and one that did not is escalated instead of hiding.
Transient URA errors never lose a document
Nothing is ever dropped because URA was busy. A failed call is retried on an exponential back-off — 1, 2, 5, 10, 20, 30 then 60 minutes — and the queue shows you exactly where each entry stands through its Attempt count and Next Attempt columns, with the verbatim URA message in Failed Reason. When URA answers with code 402 (the AES session key has expired) the connector transparently re-runs the key exchange and resends, so an expired key is invisible to your staff. The cashier is never blocked and the accountant never has to re-key an invoice.
The right people see the right screens
Pro plugs into the three EFRIS roles under the “EFRIS (Uganda URA)” privilege. An EFRIS User gets the Bot and the Declarations report and can flush and retry; the Health Events log is reserved for an EFRIS Manager; and the connection settings — TIN, TaxpayerID, device number and the environment switch — stay locked to an EFRIS Administrator. The declaration report is read-only for everyone, and a multi-company record rule keeps each company’s queue and counts to itself.
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.
Device on the URA EFRIS portal
TIN, TaxpayerID, device, tax categories
Full flow on the EFRIS sandbox
Switch to production, declare for real
One suite, sold your way
Buy only what you need on the free Base, or take the all-in-one Suite.
Frequently asked
Does it need EFRIS Base?
Yes — the free EFRIS Base provides the URA connection, the AES/RSA crypto, the submission queue and the health hooks that Pro builds on. Pro is the supervision layer on top.
Does it work with only some apps installed?
Yes. The declaration report unions whichever EFRIS document apps you have — Invoice, POS, Goods, Stock — so the Bot and the reports show exactly what your setup fiscalises to URA, nothing more, nothing less.
Any limits or subscription?
None. One-time purchase, unlimited declarations, free updates on every EFRIS spec change.
Ready for URA EFRIS compliance?
Install now, or write to us — we set up your EFRIS connection with you.
reach@aminitechsolutions.comEFRIS control tower for Odoo · Uganda URA e-invoicing · interfaceCode T109
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Community Apps Dependencies | Show |
| Lines of code | 998 |
| Technical Name |
aminitech_efris_pro |
| License | OPL-1 |
| Website | https://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