What is the E-Rechnungspflicht in Germany?
The E-Rechnungspflicht — Germany's mandatory electronic invoicing regime — was introduced by the Wachstumschancengesetz (the Growth Opportunities Act, in force since March 2024, BGBl. 2024 I Nr. 108) and is anchored in § 14 of the Umsatzsteuergesetz (UStG), the German VAT Act. It obliges companies to use structured electronic invoices for domestic B2B transactions — invoices whose data is held in a machine-readable XML format that complies with the European standard EN 16931.
A genuine e-invoice within the meaning of the law is not a PDF sent by email. A PDF file without embedded XML data counts in law as a "sonstige Rechnung" (an other invoice) and does not meet the requirements.
The E-Rechnungspflicht timetable:
| Phase | Date | What applies |
|---|---|---|
| Obligation to receive | from 1 January 2025 | All domestic B2B companies must be able to receive structured e-invoices |
| Transitional phase | until 31 December 2026 | Paper and PDF invoices remain permitted where the recipient agrees |
| Obligation to issue (large companies) | from 1 January 2027 | Companies with prior-year turnover above €800,000 must send e-invoices |
| Obligation to issue (all companies) | from 1 January 2028 | All domestic B2B companies must send structured e-invoices |
The E-Rechnungspflicht applies to every company that generates domestic B2B turnover subject to Umsatzsteuer, German VAT, in Germany. Invoices for small amounts up to €250 are excluded (§ 33 UStDV), as are certain VAT-exempt transactions under § 4 UStG.
XRechnung vs ZUGFeRD: which format applies to your SME?
Germany has two primary e-invoicing formats that satisfy the EU standard EN 16931: XRechnung and ZUGFeRD. Both are fit for the mandate — but they differ fundamentally in structure and in use case.
XRechnung: the XML standard for B2B
XRechnung is a pure XML data format from the Koordinierungsgremium für IT-Standards (KoSIT), the German coordination body for IT standards, optimised specifically for the German market. It carries structured data only — with no visual rendering.
- Pure XML format (no human-readable rendering)
- Fully compliant with the EU standard EN 16931
- Mandatory format for invoices to public sector contracting authorities at federal level since November 2020
- Increasingly adopted by large groups as their preferred B2B format
ZUGFeRD: the hybrid alternative
ZUGFeRD is a hybrid format: a PDF/A file with embedded XML that complies with EN 16931. The invoice is both human-readable, as a PDF, and machine-readable, as XML.
- Hybrid: PDF/A with embedded XML — one file, two uses
- Mandatory profile for B2B compliance: EN 16931
- Compatible with the French Factur-X standard
- More straightforward to explain to trading partners, because the invoice looks like an ordinary PDF
Recommendation for SMEs: ZUGFeRD is the more pragmatic choice for most SMEs. XRechnung is strictly required for invoices to public sector contracting authorities.
Setting up e-invoicing in Odoo: step by step
Odoo 17 supports the German e-invoicing formats natively through the German localisation. The configuration is less demanding than many companies expect — provided the master data is complete and properly maintained.
Prerequisites: Odoo 17.0 or later, the German localisation activated, the "Accounting" app installed.
Step 1: activate electronic invoicing on the journal
- Go to Accounting → Configuration → Journals
- Open the Customer Invoices journal
- In the Advanced Settings tab, under Electronic Invoicing, select the format: ZUGFeRD or XRechnung (UBL)
- Save the settings
Step 2: record your company details in full
Under Settings → Companies, check that the following mandatory fields are complete:
- Full company address (street, postcode, town, country)
- VAT identification number (Umsatzsteuer-Identifikationsnummer, USt-IdNr.)
- IBAN and BIC for payment details
- Handelsregisternummer, the commercial register number (recommended)
Step 3: configure your customer master data
In your customer contacts, check the following: the full address, the USt-IdNr. for EU B2B transactions, and the Leitweg-ID, the routing identifier, for invoices to public sector contracting authorities.
Step 4: create and validate your first e-invoice
- Create a customer invoice: Accounting → Customers → Invoices → New
- Complete every mandatory field and click Confirm to post the invoice
- In the attachments of the posted invoice you will find the e-invoice: with ZUGFeRD as a PDF/A with embedded XML, with XRechnung as a separate XML file
- Validate conformity with the free KoSIT validator before your first live transmission
