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. Inventory
  3. EFRIS Stock (Uganda URA) v 17.0
  4. Sales Conditions FAQ

EFRIS Stock (Uganda URA)

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

$ 99.00

v 17.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 17 · Community & Enterprise

EFRIS Stock — register goods, declare every stock movement

Register every product with the URA under its commodity code (T130 goods upload), then declare each validated receipt to EFRIS as a stock-in (T131) and every loss as an adjustment. Your Odoo inventory and your URA server stock stay in step — so goods are registered and stocked before you ever invoice them. Built on the free EFRIS Base.

✅ Goods registration (T130) ✅ Stock-in on receipt (T131) ✅ Adjustments with URA reasons
EFRIS Stock — register goods, declare every stock movement
$99 ⭐ Implementation included

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

Overview

Your inventory, mirrored on the URA server

EFRIS wants goods registered before they can be invoiced, and product dealers holding stock on the URA server before they sell. Register each product once (T130), then validate receipts and record losses as usual — the app declares each receipt as a stock-in (T131) with its supplier, types every decrease with a URA reason code, and keeps your URA server stock matched to your books. Every call rides the free EFRIS Base queue and retries on its own.

🏷️

Register before you sell

EFRIS will not accept an invoice for an unregistered good. One click uploads a product to the URA (T130) with its commodity category, unit of measure and excise flag — created the first time, updated after that.

📦

Every receipt, a stock-in

Validate an incoming transfer and it is declared to EFRIS as a stock increase (T131) — Import or Local Purchase, with the supplier and TIN — so your URA server stock rises together with your books.

⚖️

Losses, declared honestly

Expired, damaged, personal use or other — every stock decrease is declared as a T131 adjustment with the exact URA reason code, so shrinkage is accounted for instead of quietly vanishing.

How it works

Registration, stock-in, adjustments — every step covered

Product form EFRIS tab showing commodity code, goods code and the excise duty flag
01 · Product EFRIS tab

Every product carries its URA goods identity

Each product gains an EFRIS tab holding the three things URA insists on: the EFRIS Commodity Code (the 8-digit UNSPSC category), the EFRIS Goods Code and a Has Excise Duty flag. Leave the goods code blank and it falls back to the product’s internal reference, so most catalogues need no extra data entry at all. These are the exact values sent in the T130 goods upload — nothing is improvised at declaration time.

02 · One-click T130

Register a good with URA in one click

Register with EFRIS uploads the product over the T130 goods interface — name, goods code, unit of measure, unit price, commodity category and excise flag. The app knows whether this is a first registration or an update and sends the correct operation type, so re-registering an amended product never creates a duplicate at URA. The action sits both on the EFRIS tab and as a shield stat button at the top of the product form.

The Register with EFRIS button and EFRIS shield stat button on a product
EFRIS goods status and registered badge on the product EFRIS tab
03 · Goods status

You always know which goods URA has accepted

A goods status of To Register, Queued, Registered or Failed sits on the tab beside a Registered with EFRIS tick, so you never invoice a product URA does not yet know — EFRIS rejects invoices for unregistered goods. If URA refuses a registration, the rejection is written straight back onto the product in plain words. Registration is also blocked before it can fail: the app refuses if EFRIS is not configured, naming the missing fields, or if the commodity code is empty.

04 · Units of measure

URA unit codes, mapped once and reused everywhere

Each Odoo Unit of Measure carries an EFRIS Unit Code — the URA measureUnit dictionary value such as UN, KG or LTR. Set it once on the unit and every goods registration, stock-in and adjustment picks it up automatically. Where a unit has no code mapped, the app falls back to UN rather than sending an empty value URA would reject.

Unit of Measure form showing the EFRIS Unit Code field
Validated incoming receipt showing EFRIS Stock-in Type Local Purchase and EFRIS Status Fiscalised
05 · Receipts

Validate a receipt and URA sees the stock-in

On every incoming transfer you pick the EFRIS Stock-in Type — Local Purchase or Import — and the moment you validate, the receipt is declared to URA as a T131 stock increase. Each received line goes across with its quantity, unit code and cost, together with the supplier’s name and TIN taken straight from the contact. The date done becomes the stock-in date and the source document travels as the reference, so your URA server stock rises in step with your books.

06 · Receipt guards

Only receipts — and never a blocked validation

Only incoming operations are declared: internal transfers, deliveries and returns are left alone, and the EFRIS fields appear on receipts only. Lines that were not actually received are skipped, and a receipt with nothing to send is marked Not Declared rather than posted to URA empty. If EFRIS is unconfigured or unreachable the validation still completes — the declaration is simply parked with a clear status — so your warehouse never stops because URA is busy. A Declare stock-in to EFRIS button re-sends any receipt still outstanding.

Receipt header with the Declare stock-in to EFRIS button and the EFRIS status field
EFRIS Stock Adjustment form with product, quantity, URA reason, remarks and the Draft-Queued-Declared status bar
07 · Stock adjustments

Declare a loss with the exact URA reason code

Every decrease outside a sale is recorded on an EFRIS Stock Adjustment, auto-numbered EFRIS-ADJ/00001, with the product, the quantity and the URA reason: Expired Goods, Damaged Goods, Personal Use or Others. Choose Others and the app forces a remark before it will send, exactly as URA requires, so no write-off is left unexplained. Declare to EFRIS sends it as a T131 decrease and the status bar walks the record Draft → Queued → Declared, with every change tracked in the chatter.

08 · Adjustment register

A standing audit trail of every write-off

The EFRIS Stock Adjustments list shows the reference, product, quantity, reason and date of every decrease, with the state colour-coded — green once URA has accepted it, red when it needs attention. Any URA rejection is stored on the record and shown on the form, ready to correct and resend. It lives under the EFRIS menu and is the document you open the day an inspector asks how a stock difference was explained.

List of EFRIS stock adjustments with colour-coded declaration state badges
EFRIS queue list showing interface code, document, FDN, attempts, next attempt and state badges
09 · Submission queue

Nothing sent by hand, nothing lost

Goods registrations (T130) and stock movements (T131) never block the person doing the work — they are registered on the shared EFRIS queue and sent in the background. The queue shows the interface code, the source document, the FDN returned by URA, the attempt count, the next attempt time, the state badge and the failure reason, with a Send now action on every row. Re-declaring a document reuses its pending entry instead of stacking duplicates, and entries go out in sequence so URA receives them in the order it expects.

10 · Encryption and keys

URA’s crypto envelope, handled for you

Every T130 and T131 call is wrapped in URA’s exact cloud envelope: the JSON payload is AES-encrypted, base64-encoded and RSA-signed with your device key before it is posted to the EFRIS gateway. When URA answers code 402 — session key expired — the app quietly fetches a fresh session key and resends the same declaration, and the key is refreshed on its own once it is a day old. You never see any of this; you only see the attempt succeed in the queue.

Queue entries showing successful sends with their attempt counts and returned FDNs
Queue rows showing attempt counts, next attempt times and pending versus failed states
11 · Retries and self-heal

Rising back-off, and a queue that repairs itself

A failed declaration is never dropped. It is retried on a rising back-off — a minute, then two, five, ten, twenty, thirty, up to an hour — while a scheduled sweep collects everything that has come due. An entry left stuck mid-send for fifteen minutes is recovered automatically and put back into the retry cycle. And when transmission is paused, stock declarations simply hold in the queue and go out in order the moment you resume — handy while you are still testing on the URA sandbox.

12 · Roles and access

Who may declare, and who may delete

The app plugs straight into the three EFRIS roles supplied by the free Base — User, Manager and Administrator. An EFRIS User can raise and declare stock adjustments but cannot delete them; only an EFRIS Manager can, so a declared write-off cannot quietly vanish from the audit trail. The Stock Adjustments menu is visible only to users holding an EFRIS role.

The EFRIS User, Manager and Administrator roles under the EFRIS (Uganda URA) privilege
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 · view app
EFRIS Stock
EFRIS Stock
Goods & stock · current
EFRIS Pro
EFRIS Pro
Control tower · view app
EFRIS Suite
EFRIS Suite
All-in-one · view app

Frequently asked

Does it need the EFRIS Base?

Yes — the free EFRIS Base holds your URA credentials and device keys and runs the encrypted submission queue this app declares through. Install the Base first, then add EFRIS Stock.

Must goods be registered before I stock or sell them?

Yes — the URA requires it. Register each product with EFRIS (T130) first; stock-in movements and invoices reference that registered goods code, and EFRIS rejects movements for goods it does not yet know.

Any limits or subscription?

None. A one-time purchase, unlimited products and movements, and free updates on every URA EFRIS specification 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 stock connector for Odoo · Uganda · T130 goods upload · T131 stock maintain
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Inventory (stock)
• Discuss (mail)
Community Apps Dependencies Show
EFRIS Base (Uganda URA)
Lines of code 1049
Technical Name aminitech_efris_stock
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