E-Rechnung · XRechnung · ZUGFeRD
Germany's e-invoicing mandate: what applies from 2025, 2027 and 2028
Invoices between businesses in Germany are going electronic - not as a PDF attachment, but as structured data under the European standard EN 16931. This page covers what the law requires, from when, for whom - and how to create and validate conformant XRechnung and ZUGFeRD invoices yourself.
As of November 6, 2026 · sources at the end of the page
The timeline at a glance
January 1, 2025
Receiving is mandatory
An e-invoice no longer needs the recipient's consent. Anyone who receives invoices from businesses must be able to accept and process them.
until December 31, 2026
Transition for everyone
Every business may still send paper or - with the recipient's consent - another electronic format such as a plain PDF.
until December 31, 2027
Transition for smaller businesses
Only for businesses with a total turnover of at most 800,000 euros in the previous year. Invoices via EDI are also allowed until the end of 2027, with the recipient's consent.
from January 1, 2028
Issuing is mandatory
Between businesses in Germany, every invoice is an e-invoice - apart from exceptions such as small-amount invoices.
What is an e-invoice?
An e-invoice is an invoice in a structured electronic format that allows electronic processing. The format must comply with the European standard EN 16931 - or be an agreed format from which all details can be transferred correctly and completely into such a format. A PDF, a scan or a Word document is not an e-invoice but an “other invoice” (sonstige Rechnung).
XRechnung
Pure XML (CII or UBL syntax), the German flavor of EN 16931.
Mandatory for public authorities (B2G), usable anywhere in B2B.
ZUGFeRD / Factur-X
A readable PDF/A-3 with the EN 16931 XML embedded - people and machines read the same file.
The standard in B2B: the customer sees a PDF, their accounting reads the data.
Who is exempt?
- Small-amount invoices up to 250 euros - they may always be sent as an other invoice.
- Travel tickets, such as train and bus tickets.
- Tax-exempt supplies under Section 4 No. 8 to 29 UStG, for example many financial and medical professions.
- Invoices to private individuals - the mandate applies between businesses in Germany.
Create e-invoices in TypeScript and Node.js
With @jasy/e-invoice you describe the invoice once, as an object. Both halves come from it: the readable PDF/A-3 and the EN 16931 data. Totals, tax amounts and the breakdown by tax rate are calculated, not typed. No Java, no external service - your data never leaves your server.
pnpm add @jasy/e-invoiceimport { writeFileSync } from "node:fs";
import { renderZugferd, type Invoice } from "@jasy/e-invoice";
const invoice: Invoice = {
number: "RE-2027-001",
issueDate: "2027-01-15",
currency: "EUR",
dueDate: "2027-01-29",
seller: {
name: "Muster GmbH",
vatId: "DE265013614",
address: { line1: "Hauptstraße 1", city: "Berlin", postCode: "10115", country: "DE" },
contact: { name: "A. Schmidt", email: "rechnung@muster.de", phone: "+49 30 123456" },
},
buyer: {
name: "Beispiel AG",
address: { line1: "Marktplatz 5", city: "München", postCode: "80331", country: "DE" },
},
lines: [
{ name: "Consulting", quantity: 8, unit: "HUR", netUnitPrice: 120,
vat: { category: "S", ratePercent: 19 } },
{ name: "License", quantity: 1, unit: "C62", netUnitPrice: 480,
vat: { category: "S", ratePercent: 19 } },
],
payment: { iban: "DE89370400440532013000", terms: "Payable within 14 days without deduction." },
};
const { bytes, xml } = await renderZugferd(invoice);
writeFileSync("invoice.pdf", bytes); // ZUGFeRD: PDF/A-3 with the XML embedded
writeFileSync("invoice.xml", xml); // the EN 16931 data (CII), e.g. for a portalThis exact invoice passes the KoSIT EN 16931 business rules and the veraPDF PDF/A-3 check. For a public authority, write renderZugferd(invoice, { profile: "xrechnung" }) - if a mandatory field such as the Leitweg-ID is missing, the library tells you which one before anything is sent.
Validate e-invoices - including those from other software
An e-invoice is only valid once it passes the official rules: the KoSIT EN 16931 business rules for the data, and veraPDF, the reference validator for PDF/A, for the file. Our free validator runs exactly these checks - for every XRechnung and every ZUGFeRD invoice, whatever software made it. The file is checked and deleted right away, nothing is stored. If you would rather upload nothing at all, validate fully offline with the command line: jasy validate invoice.pdf.
Frequently asked questions
Is a PDF sent by email an e-invoice?
No. An e-invoice is an invoice in a structured electronic format that allows electronic processing (Section 14(1) UStG). A plain PDF is an “other invoice” and only allowed during the transition periods. A ZUGFeRD PDF, by contrast, carries the structured XML inside it.
From when do I have to issue e-invoices?
From January 1, 2027. Businesses with a total turnover of at most 800,000 euros in the previous year may send other invoices until the end of 2027; from January 1, 2028 the mandate applies to all businesses in Germany (Section 27(38) UStG).
Do I already have to be able to receive e-invoices?
Yes, since January 1, 2025. The transition rules cover issuing only, not receiving.
XRechnung or ZUGFeRD - which do I need?
Both comply with the European standard EN 16931. XRechnung is required for public authorities. In B2B, ZUGFeRD is common because the file is a readable PDF at the same time.
Which invoices are exempt?
Small-amount invoices up to 250 euros (Section 33 UStDV) and travel tickets (Section 34 UStDV) may always be sent as other invoices. Tax-exempt supplies under Section 4 No. 8 to 29 UStG and invoices to private individuals are not covered by the mandate.
How do I check whether an e-invoice is valid?
With the official rules: the KoSIT EN 16931 business rules for the data, and veraPDF, the reference validator for PDF/A, for the file. Our free validator runs exactly these checks, for invoices from any software.
Sources
- Section 14 UStG - issuing invoices (German)
- Section 27(38) UStG - transition rules (German)
- Section 33 UStDV - small-amount invoices (German)
- Section 34 UStDV - travel tickets (German)
This page explains the legal situation; it is not tax advice.