| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) |
| Lines of code | 1599 |
| Technical Name |
l10n_ug_efris_credit_note |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) |
| Lines of code | 1599 |
| Technical Name |
l10n_ug_efris_credit_note |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
Uganda EFRIS Credit Note
Issue URA-compliant credit notes that reference the original fiscal document (FDN) — built for the Uganda Revenue Authority EFRIS
Format generation + BYOK transmission with your own registered EFRIS device credentials
What this module does
When a sale recorded on EFRIS has to be corrected — goods returned, an invoice issued by mistake, a price reduction or a partial quantity cancellation — the Uganda Revenue Authority (URA) requires a credit note application that references the original Fiscal Document Number (FDN) and is approved by URA before it takes effect. This module turns an Odoo customer credit note (refund) into a complete, validated EFRIS credit-note application, transmits it through your own registered EFRIS connection, and tracks the approval, the credit-note FDN and the verification QR returned by URA.
Key features
Original document referencing
Every credit note carries the original invoice's oriInvoiceNo (FDN)
and oriInvoiceId, the precise reference EFRIS keys the correction on.
EFRIS application JSON
Generates the canonical EFRIS credit-note document — basicInformation, goodsDetails, taxDetails and summary — with a deterministic SHA-256 content hash ready for signing.
Correction reasons (Section D)
Documented URA correction reasons: invoice cancelled by mistake, goods returned, partial-quantity cancellation, price reduction, damaged/wasted goods and other circumstances — with your own URA reason code.
Uganda VAT handling
Maps each line to the EFRIS tax category — standard rated 18%, zero rated, exempt or deemed — and reconciles the VAT against the published 18% standard rate.
BYOK transmission
Builds the EFRIS gateway envelope (T110 apply, T111 cancel, T112 query) and sends it using your registered device number, app id and optional RSA signing key. Your credentials never leave your database.
Approval tracking
Stores the credit-note FDN, EFRIS id and verification QR on approval; a scheduled poll keeps pending applications in sync. A full transport log records every call.
EFRIS credit-note lifecycle
| Step | EFRIS interface | Result |
|---|---|---|
| Validate the correction against EFRIS business rules | — | Blocks non-compliant data before submission |
| Generate the credit-note application JSON | — | Canonical payload + content hash |
| Submit referencing the original FDN | T110 | Application queued for URA approval |
| Query approval status | T112 | Approved / rejected, credit-note FDN + QR |
| Withdraw a pending application | T111 | Application cancelled |
Validation rules enforced
- Original fiscal document (FDN / EFRIS invoice id) must be referenced.
- Seller TIN structurally valid (10 digits); buyer TIN checked when present.
- Every line carries a recognised EFRIS tax category.
- Per-line VAT must match the category rate (18% standard, 0% zero/exempt/deemed).
- Line net + tax must equal the gross; the breakdown must reconcile to the summary.
- A reason for the correction (EFRIS Section D) is mandatory.
Scope & disclosure
This module performs format generation and bring-your-own-key (BYOK) transmission. The EFRIS endpoint URLs are pre-filled as editable defaults; the device number, app id and signing key are issued to your registered EFRIS account and are stored only in your database. The module is not a certified EFRIS device and does not impersonate one — it produces the credit-note application your registered EFRIS connection consumes and submits it on your behalf. No data is sent anywhere other than the EFRIS endpoint you configure.
Compatibility
Odoo 18.0 and 19.0, Community and Enterprise. Built on the standard
account module — no Enterprise-only dependencies.
Screenshots
Connections
Credit Notes
Transport Log
Setup
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