XRechnung & ZUGFeRD e-invoicing for Odoo
Create, validate and receive structured German e-invoices without leaving Odoo. XRechnung 3.x (CII and UBL), ZUGFeRD 2.x in PDF/A-3, offline KoSIT validation and a tamper-evident GoBD audit log. No middleware, no manual exports, no external portal. Odoo 17, 18 and 19.
One-time €49 per database · source code included · updates and email support included
German e-invoicing is already law. Standard Odoo doesn't speak it.
Under section 14 UStG, amended by the Wachstumschancengesetz and the Jahressteuergesetz 2024, every German company must be able to receive structured e-invoices from 2025, and the duty to issue them phases in between 2027 and 2028 depending on annual turnover. For B2G, the ERechV mandate is already in force. On its own, Odoo leaves several gaps:
- Exporting Odoo's PDF and converting it to XRechnung XML by hand is slow, error-prone and impossible to audit at scale.
- Vendor bills that arrive as XRechnung or ZUGFeRD have to be re-keyed by hand: Odoo does not parse the XML out of the box.
- GoBD requires an immutable, chained record of every e-invoice event for ten years; Odoo's chatter does not meet that bar.
- B2G invoices to public authorities need the Leitweg-ID routing code, which standard Odoo does not support.
- Multi-company groups need per-company and per-contact e-invoicing preferences that Odoo does not store natively.
What the module does
Install it once and your finance team creates, validates, sends and receives structured German invoices right inside Odoo. Everything stays in your database, with no cloud dependencies.
Outbound XRechnung 3.x
CII and UBL formats with full EN 16931 business-term coverage. Leitweg-ID for B2G routing and a buyer reference field (Bestellnummer / BT-10).
ZUGFeRD 2.x in PDF/A-3
EN16931 and EXTENDED profiles. The XML is embedded into the PDF/A-3 via pikepdf and is Factur-X compatible: one file that both humans and machines can read.
Automatic inbound parsing
Attach an XRechnung or a ZUGFeRD file to a vendor bill: the module detects the format and fills in the Odoo fields (seller, buyer, lines, amounts, VAT, payment means). No re-keying.
KoSIT schematron validation
The EN 16931 schematron rules run offline before every generation, so invalid invoices are blocked at source. Optional online KoSIT validation over HTTPS is available but disabled by default.
GoBD audit log
An immutable record of every event, each entry hash-chained (SHA) to the previous one. Deletion is blocked for the ten-year retention period, with CSV export ready for tax inspections.
Operational and multi-company tools
A batch generation wizard, a supplier compliance panel, UNECE unit-of-measure mapping and format preferences set per company and per contact.
How it works
Install and set your identifiers
Buy on the App Store, install the module and enter your VAT ID and, for B2G, your Leitweg-ID. Pick the default output format per company or per contact.
Send validated invoices
Confirm a customer invoice and the module generates the XRechnung XML or a ZUGFeRD PDF/A-3, runs the schematron rules and blocks anything that does not comply.
Receive without re-keying
Drop an inbound XRechnung or ZUGFeRD onto a vendor bill; the module reads the XML and fills in the fields. Every step is written to the GoBD audit log.
The German mandate timeline
Dates set by section 14 UStG as amended by the Jahressteuergesetz 2024.
Duty to receive e-invoices for every domestic B2B company.
Duty to issue for companies with more than €800,000 turnover in the previous year.
Duty to issue for all remaining companies. B2G is already mandatory under ERechV.
What the license includes
Full XRechnung 3.x generation
CII and UBL formats with EN 16931 coverage, plus ZUGFeRD 2.x embedding in PDF/A-3.
Reception with format auto-detection
Parsing of incoming XRechnung (including legacy 2.x) and ZUGFeRD into vendor bills.
Validation and GoBD log
Offline KoSIT schematron validation, a ten-year audit log and CSV export.
Source code, updates and support
Full source code, every minor update for Odoo 17, 18 and 19, and email support at comercial@flexigotech.com.
One license per Odoo database. This module supports your compliance workflows under the XRechnung/ZUGFeRD specifications and related rules (EN 16931, section 14 UStG, ERechV, GoBD); it does not constitute legal or tax advice.
Requirements and compatibility
Regulatory coverage: EN 16931-1:2017, XRechnung 3.x (KoSIT / xoev-de), ZUGFeRD 2.x / Factur-X 1.0, section 14 UStG (Jahressteuergesetz 2024), ERechV for B2G, GoBD (BMF 2019) and ten-year retention (section 238 HGB / section 147 AO).
€49 one-time payment
Per database, no subscriptions. Full source code, minor updates for Odoo 17, 18 and 19 and email support included.
Frequently asked questions
Does the XRechnung module work on Odoo Community, not just Enterprise?
Yes. The module runs on both Community and Enterprise (17, 18 and 19). On Enterprise it optionally hooks into account_edi_ubl_cii when it is installed; on Community it works fully standalone. Every feature (generation, ZUGFeRD embedding, inbound parsing and the GoBD audit log) is available in both editions with no restrictions.
What is the difference between XRechnung and ZUGFeRD?
XRechnung is a pure XML format under EN 16931 and is mandatory for B2G in Germany. ZUGFeRD is a hybrid format (PDF/A-3 with embedded XML) used for B2B. The module creates and reads both: XRechnung 3.x (CII and UBL) and ZUGFeRD 2.x, the latter embedded into PDF/A-3 via pikepdf.
What exactly does the GoBD audit log record?
A dedicated model (xrechnung.audit.log) records every event: generation, validation result, inbound parsing and format changes. Each entry stores a SHA hash chained to the previous one, so any later tampering is detectable. Deletion is blocked for the ten-year retention period and the log exports to CSV for tax inspections under GoBD, section 238 HGB and section 147 AO.
How are incoming XRechnung and ZUGFeRD invoices processed?
Attach the XRechnung XML or the hybrid ZUGFeRD PDF to a vendor bill in Odoo. The module detects the format (XML namespace for XRechnung CII/UBL; embedded XMP metadata for ZUGFeRD), extracts the EN 16931 business terms (seller, buyer, lines, amounts, VAT breakdown, payment means) and fills in the bill fields for you. Legacy XRechnung 2.x files are also supported on the inbound side.
Is there a Leitweg-ID validator for B2G invoicing?
Yes. The module validates the Leitweg-ID using the mod-97 check-digit algorithm specified by ITZBund; invalid identifiers are rejected before the invoice is generated, with a clear error message. The field lives in the company settings and in the per-contact e-invoicing tab, and it is written automatically to the buyer reference field (BT-10) of the XRechnung XML.
Do I have to send my invoice data to an external cloud service?
No. Everything runs inside your Odoo database. Schematron validation is executed offline, ZUGFeRD embedding is done locally with pikepdf, and there is no external middleware or portal. Optional online validation against KoSIT is available over HTTPS but is disabled by default, so your invoice data never leaves your server unless you explicitly turn it on.