e-Invoice Core Engine
Shared foundation for country e-invoicing connectors: UBL 2.1 + canonical JSON builders, XML/JWS signing (BYOK), QR, validation, BYOK REST transport
e-Invoice Core Engine
The shared foundation for country e-invoicing connectors
A jurisdiction-agnostic toolkit that powers UBL 2.1 and canonical JSON generation, cryptographic sealing, QR codes, validation and secure transport. Install it once; your country connector modules plug straight in. Compatible with Odoo 18, Odoo 19 and Odoo 20.
What is inside
UBL 2.1 Builder
Invoice and credit note documents with supplier/customer party blocks, invoice lines with allowances and charges, tax subtotal aggregation, monetary totals, payment means and terms, and base64 attachment embedding.
Canonical JSON Builder
Ordered-key serialization with configurable per-field decimal precision and a whitespace-free canonical string ready for signing in JSON-regime jurisdictions.
Signing (BYOK)
Enveloped XML-DSig with SHA-256 digests and exclusive C14N, plus a detached JWS variant for JSON regimes. Your certificate and key stay in your database and never leave it.
QR Engine
TLV+base64, plain-URL and JSON QR payloads with PNG rendering for invoice reports.
Validation Framework
A declarative rule engine with a generic EN 16931-style core rule set: required seller and buyer data, line math, tax total coherence, currency checks and date formats. Returns a structured error report.
BYOK REST Transport
A resilient request layer with exponential retry/backoff, bearer, api-key, basic and client-certificate authentication, sandbox and production switching, timeouts and full request/response logging. A trust anchor can be pinned per request, so a gateway served under a national CA that no operating system carries stops failing with a TLS error that looks like a network fault.
Certificate Bundle Import (.p12 / .pfx)
Certification authorities hand out one password-protected PKCS#12 bundle, not two PEM files. Upload it on the company form and the key and certificate are unpacked into the BYOK fields, with no openssl command line and nothing that has to run on a server shell — which is the only way this works on Odoo Online.
Certificate Expiry Warning
The stored certificate's expiry date is read and shown, and a warning appears in its last 30 days of validity. Submissions stop the moment a signing certificate lapses, and reissuing one is an appointment with your CA rather than an afternoon's work.
Built to extend
Country connectors register a profile and a generator hook against this engine. The core carries no country-specific logic, so a single foundation serves every jurisdiction — and its validation rules, canonical JSON serializer, XML signer, transport retry loop and document model are covered by the automated test suite that ships inside the module and runs on every Odoo installation with tests enabled.
Data disclosure
This module sends data only to the endpoints you configure in your country connector. No invoice data is transmitted anywhere else, and your certificate and private key never leave your database.
Screenshots
Jurisdiction profile registry: every country connector registers its own profile, document format and in-code generator hook.
E-invoice document envelope: state machine, authority reference and the generated UBL 2.1 payload.
Documents from several jurisdictions side by side, each with its own profile, submission count and status.
BYOK REST transport log: endpoint, HTTP status, latency and retries for every outbound call.
Documentation
Configuration guide included in the package (docs/Configuration_Guide_EN.pdf) — installation and dependencies, menus and access groups, the profile registry and the generator hook a country connector registers, BYOK certificate and transport settings (REST authentication, mutual TLS, sandbox and production), signing, the QR engine, the validation rule set, the transport log, and an end-to-end test walkthrough. The Markdown source ships beside it as docs/Configuration_Guide_EN.md.
Update date: 2026-09-08
User guides (PDF)
Related modules
Bank Statement Import Pro (CAMT.053 / MT940 / OFX / QIF + AI)
Import bank statements from CAMT.053, MT940, OFX/QFX and QIF files with auto-format detection, reconciliation suggestions and optional bring-your-own-key AI categorization.
Bad Debt Provision & Write-Off Manager
Aging-based doubtful-debt provision matrix, write-off workflow and auto-reversal on recovery
US BAI2 Bank Parser
Import BAI2 (US/Canada) corporate cash-management bank statement files into Odoo bank statements