| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) • Point of Sale (point_of_sale) • Inventory (stock) |
| Lines of code | 1759 |
| Technical Name |
l10n_mu_ebs_pos |
| 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) • Point of Sale (point_of_sale) • Inventory (stock) |
| Lines of code | 1759 |
| Technical Name |
l10n_mu_ebs_pos |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
Mauritius MRA EBS for Point of Sale
Real-time fiscalisation of retail (B2C) receipts with IRN + QR
Fiscalise every point-of-sale retail receipt with the Mauritius Revenue Authority (MRA) Electronic Billing System (EBS). Each closed POS order is turned into the EBS B2C JSON document, chained into a tamper-evident SHA-256 hash chain, sealed with your taxpayer keys and transmitted to the MRA Invoice Fiscalisation Platform (IFP), which returns the IRN (Invoice Reference Number) and the QR code to print on the receipt. Continuous clearance, not periodic reporting. Compatible with Odoo 18 & 19 Community.
B2C retail receipt payload
Canonical MRA EBS JSON tailored for retail: transaction type B2C, person type NP (natural person), the EBS standard receipt code and the full salesTransactions / VAT breakdown with the MRA tax-type codes TT01–TT04. A registered customer carrying a BRN/TAN is automatically promoted to a B2B/B2G transaction with a populated buyer block.
Tamper-evident hash chain
Each receipt carries the SHA-256 of the previous one
(previousNoteHash) and a monotonic
invoiceCounterNumber, forming the per-company chain
the EBS requires. A built-in verifier re-walks the chain for
audit.
Encrypted & signed payload (BYOK)
As the MRA requires, the receipt is not sent in clear: the AES
session key returned by the MRA is RSA-unwrapped with your
registered private key, the receipt JSON is AES-256
encrypted (encryptedInvoice) and an
RSA-SHA256 signedHash is attached. Keys are
bring-your-own (PEM pasted into your settings) and never leave
your database.
IRN + scannable QR
The returned IRN and a compact verification QR (irn, invoiceId, BRN, date, total, VAT, hash) are stored on the order and rendered as a scannable QR image — with a built-in pure-Python QR encoder, so no extra system package is required.
Features
| Capability | What it does |
|---|---|
| EBS B2C receipt generator | Builds the canonical MRA EBS JSON for each POS order, with VAT 15% standard handling and zero/exempt codes. |
| BRN & TAN validation | Structural BRN check and the real MRA modulus-11 TAN check digit, enforced on the company and customer. |
| Hash chain | Per-company SHA-256 chain with monotonic counter and a verifier. |
| AES + RSA sealing | RSA key-unwrap, AES-256 (ECB/CBC) encryption and RSA-SHA256 signedHash, all with bring-your-own keys. |
| IFP client | Token authentication (SHA-256 password hashing), real-time transmit, sandbox / production switching and a transport log. |
| QR rendering | Deterministic QR payload plus a built-in QR PNG renderer (no external dependency). |
| Batch & scheduled fiscalisation | Wizard to fiscalise pending receipts and an optional cron to clear the queue automatically. |
| Refunds | Return / refund orders are fiscalised as EBS credit notes referencing the original receipt. |
How it works
Configure your MRA EBS connection (username, password, EBS MRA ID, area code) and paste your taxpayer RSA private key (PEM) under Point of Sale → MRA EBS → Connections. Set the company BRN and TAN. From a POS order, click Fiscalise (MRA EBS) to build, seal and transmit the receipt; the IRN and QR are stored and printable. Use the batch wizard to clear a queue of pending receipts.
Boundary & disclosure
This module is a format generator and BYOK transport: it produces the MRA EBS payload and transmits it using your own registered EBS credentials and certificate. We are not an accredited device or integrator and claim no MRA accreditation. Data is sent only to the MRA endpoint you configure, and your credentials never leave your database. The MRA IFP host names are pre-filled as editable defaults.
Screenshots
Batch Fiscalise
Connections
Transport Log
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