XRechnung vs ZUGFeRD 2026: Which E-Invoice Format to Send

XRechnung or ZUGFeRD? The two formats compared, the German rules that get invoices rejected, and which one to send. Checked against KoSIT's own rule files.

E-invoicing · Germany and the EU
Rules read from KoSIT’s own files on 10 September 2026

Two formats, one standard, and about thirty German rules underneath

XRechnung and ZUGFeRD both carry the same European standard, so neither is more legal than the other. What separates them is what the file physically is, and what Germany adds on top. This guide covers both, and names the rules that actually get invoices rejected.

By ANUPRESS Team · Reading time ~16 min · Every rule code checked in the published rule files

The usual place to start with XRechnung and ZUGFeRD is “one is XML, one is a PDF”. That is true, and it is not the part that costs you money. What costs you money is the set of German business rules, numbered BR-DE-1 upwards, that an XRechnung must satisfy before a recipient’s system will take it. They are published, they are machine-readable, and almost nothing in English explains them. That is most of what this guide is.

New to this? Start with how to invoice in Germany, which covers the eight fields every invoice needs, who has to send an e-invoice and by when, and why a PDF is not one. This guide picks up where that leaves off.

The short version

Both formats implement EN 16931, the European semantic standard for an invoice. Both satisfy the German business-to-business mandate. The decision is practical, not legal.

If the recipient isSendBecause
A German public authorityXRechnungIt is what the federal e-invoicing regulation asks for, and they will give you a Leitweg-ID to put in it
An ordinary businessZUGFeRD, BASIC or higherThe file is also a readable PDF, so a client with no e-invoicing software can still open it
A business that asked for XMLXRechnungTheir system wants data, not a document
Outside GermanyWhatever they specifyThe German mandate does not reach them, and their own country’s rules do
A private consumerA PDF is fineConsumers are outside the mandate; an e-invoice needs their consent
The one profile trap. If you send ZUGFeRD, the profile matters more than the version. MINIMUM and BASIC WL are not complete invoices under German VAT law, because they carry no invoice line items. BASIC is the lowest profile that counts.

What each file actually is

The difference is physical, and it decides who can read your invoice without new software.

An XRechnung is an XML file. It carries the invoice as data and nothing else. Open it in a text editor and you get tags. A person needs a viewer to read it as an invoice, which is a real cost to impose on a small client.

A ZUGFeRD file is a PDF with the same data embedded inside it. It is built on PDF/A-3, the archival PDF format that permits file attachments, and the attachment is the invoice in XML. Your client double-clicks it and sees an invoice. Their accounting software, if it has any, reads the XML and skips the picture. The same file serves both.

ZUGFeRD is developed jointly with a French counterpart and the identical specification ships under two names. ZUGFeRD 2.5.2, published on 4 August 2026, is Factur-X 1.09.2. If a French client asks for Factur-X, you already know how to make one.

XRechnung is two standards, not one

This trips up more people than it should, including us. XRechnung is usually described as a CIUS, a Core Invoice Usage Specification, which is the European standard’s own word for a national narrowing of itself. A CIUS may make an optional field compulsory. It may not invent new ones.

That description is half the story. KoSIT, which maintains the standard, states plainly that the XRechnung standard consists of the CIUS XRechnung and the Extension XRechnung. The Extension does add fields the European standard does not have, among them sub invoice lines and third-party payments.

XRechnung as both a CIUS and an extension of EN 16931, with the two specification identifiers
A file says which of the two it is, in the specification identifier it carries.

The two are told apart by the specification identifier written into the file. The CIUS uses a marker meaning compliant; the Extension uses one meaning conformant. You will almost certainly send the CIUS. The Extension exists for invoices with structures ordinary trade does not need, and a receiver who expects the CIUS may not accept it.

The German rules that actually reject your invoice

EN 16931 has its own business rules. Germany layers more on top, coded BR-DE-…, and these are the ones a small business trips over, because they demand things a normal invoice template leaves out.

They are published as machine-readable files, so this is not interpretation. The current release carries 53 German rules for the UBL syntax and 46 for CII. The core rules are identical in both; only the extension rules differ.

The BR-DE rules an XRechnung must satisfy, marked on an invoice layout
What Germany adds on top of the European standard. Red is fatal, amber is a warning.

The seller contact rules, which cause most rejections

This is the single most common failure, and the reason is that they are separate rules rather than alternatives. An XRechnung needs a seller contact group, and inside it:

  • BR-DE-5 a contact name
  • BR-DE-6 a contact telephone number
  • BR-DE-7 a contact email address

All three are fatal, and all three are required at once. An email address alone does not satisfy the telephone rule. If you have never put a phone number on your invoices, your first XRechnung will be rejected for that and the message you get back will say BR-DE-6.

Addresses, for both parties

The European standard is content with a country. Germany is not. BR-DE-3 and BR-DE-4 require your own town and post code, and BR-DE-8 and BR-DE-9 require your client’s. All four are fatal. A client record with a name and a country will not do.

The buyer reference

BR-DE-15 makes the buyer reference field compulsory in every XRechnung. For a public authority that is the Leitweg-ID they issued you. For a business it is whatever reference they gave you, a purchase order number for instance. What it may not be is empty.

Payment instructions

BR-DE-1 requires the invoice to carry payment instructions. In practice that means the file must say how you expect to be paid, and BR-DE-23 to BR-DE-25 then insist the details match the method: a transfer needs credit-transfer details and must not carry card or direct-debit ones, and so on for each. A file that says “transfer” and then supplies card details is refused for inconsistency.

The rule nobody expects: early-payment discounts

BR-DE-18 governs how a Skonto, an early-payment discount, is written into the payment terms field, and it is unusually strict. The text has to follow a fixed pattern of segments separated by hash marks, naming the days and the percentage, in capital letters, with two decimal places and no extra whitespace. Free prose describing your discount will fail.

What the pattern looks like: each entry opens with #, then SKONTO, then TAGE= and the number of days, then PROZENT= and the percentage, each segment separated by # and the line closed with one. If the discount applies to part of the invoice rather than the whole, a fourth segment gives the base amount.
RuleWhat it demandsSeverity
BR-DE-1Payment instructions must be presentFatal
BR-DE-2A seller contact group must be presentFatal
BR-DE-3 / BR-DE-4Seller town, seller post codeFatal
BR-DE-5 / BR-DE-6 / BR-DE-7Contact name, telephone, emailFatal
BR-DE-8 / BR-DE-9Buyer town, buyer post codeFatal
BR-DE-10 / BR-DE-11Delivery town and post code, when a delivery address is givenFatal
BR-DE-14The VAT category rateFatal
BR-DE-15The buyer referenceFatal
BR-DE-16With most tax categories, a seller VAT identifier, tax registration or tax representativeFatal
BR-DE-18The early-payment discount patternFatal
BR-DE-22Every attachment filename must be uniqueFatal
BR-DE-23 to BR-DE-25Payment details must match the payment methodFatal
BR-DE-30 / BR-DE-31Direct debit needs a creditor identifier and the debited accountFatal
BR-DE-17Invoice type code from a short permitted listWarning
BR-DE-19 / BR-DE-20The account should be a valid IBAN for SEPA paymentsWarning
BR-DE-26A corrected invoice should name the invoice it correctsWarning
BR-DE-27 / BR-DE-28Telephone should have at least three digits; email exactly one @Warning

Fatal means the file is refused. A warning means it goes through and somebody may ask a question. The list above is the German layer only, and your invoice must satisfy the European standard’s own rules underneath it as well.

What XRechnung does not require

Two things are widely believed to be compulsory and are not. Both are worth knowing because software sometimes enforces them anyway.

An electronic address, probably. Here is exactly what we checked and what we did not, because the distinction matters. We read the published validation rules: no Schematron rule in EN 16931 or in XRechnung tests that the seller or buyer electronic address is present, and the one German rule that touches it only constrains the scheme code when an address is there. So a file without one passes those checks. What we could not verify is the specification document itself, which sets cardinalities the rule files do not encode. Absence of a validation rule is not proof that a field is optional, and we are not going to pretend otherwise. Peppol requires one outright, because it needs the address to route the file. The practical advice: put your email in, it costs nothing, and treat a tool that insists on it as cautious rather than wrong.

A Leitweg-ID, as such. What is compulsory is a buyer reference. When your customer is a public authority, that reference is the Leitweg-ID. When it is a business, it is their own reference. The field is required; the Leitweg-ID specifically is not.

The ZUGFeRD profile ladder

ZUGFeRD is not one thing. It ships as a ladder of profiles carrying progressively more data, and the bottom two rungs are not invoices.

ZUGFeRD profiles from MINIMUM to EXTENDED and which count as a full invoice in Germany
The maintainers’ own answer to “is this a complete invoice under German VAT law”.
ProfileWhat it carriesA full invoice in Germany?
MINIMUMTotals only, as a booking aid. No line itemsNo
BASIC WLMore header data, still no line itemsNo
BASICLine items, and a restricted field setYes
EN 16931 (COMFORT)The full European standardYes
EXTENDEDThe standard plus additional fieldsYes
XRECHNUNGThe XRechnung rules, inside a ZUGFeRD containerYes

The “no” on the first two is not our opinion. The maintainers publish it against each profile, and the reason is structural: an invoice without line items cannot show what was supplied, which German VAT law requires. Both profiles exist to help a bookkeeping system post a payment, not to be the invoice.

Which to pick. BASIC is enough for straightforward work. EN 16931 is the safe default if you use discounts, several tax rates or delivery addresses, because BASIC restricts some of those fields. Choose EXTENDED only if something specific requires it.

UBL or CII: does the choice matter?

EN 16931 permits two XML syntaxes, and XRechnung requires support for both: UBL 2.1 and UN/CEFACT CII. They express the same invoice in different tag vocabularies.

For a sender the honest answer is that it rarely matters. The German rules are the same in both, as the published rule files show, so an invoice that satisfies the rules in one satisfies them in the other. Two practical notes. ZUGFeRD’s embedded XML is CII, so if you send ZUGFeRD the choice is made for you. And where a recipient states a preference, follow it, because their software may only have been tested against one.

Getting it there: email or Peppol

German law prescribes no delivery channel. That is worth repeating because it is the single cheapest thing to know: email with the file attached is a legal way to send an e-invoice between businesses. A download portal, a shared folder or EDI are equally acceptable, and the parties agree the route between themselves.

Peppol is a transport network rather than a format. Participants have addresses, messages travel between certified access points, and both sides need to be reachable on the network. Peppol BIS Billing 3.0, the invoice specification used on it, is itself a restriction of EN 16931, which is why a Peppol invoice looks so much like an XRechnung.

For a one-person business, Peppol is usually something you join through a provider rather than operate. It becomes worth it when a customer requires it, and not much before. Germany does not require it for business-to-business invoicing at all.

Reading an e-invoice somebody sends you

You have had to be able to receive an e-invoice since January 2025, which raises a practical question the rules do not answer: how do you actually read one?

A ZUGFeRD file is easy, because it is a PDF. Open it as usual.

An XRechnung is XML and needs a viewer. Quba is a free, open-source one published under the ZUGFeRD project, licensed Apache 2.0, and it runs on Windows, macOS and Linux without an internet connection. Drag the file on and it renders as an invoice. The federal tax portal also offers a viewer for looking at an e-invoice, and it is worth being precise about what that is: a viewer displays, it does not validate. Several guides describe it as a check on validity. It is not one.

Checking before you send

Every rule in this guide can be tested before the file leaves your machine, and testing takes seconds against the days a rejection costs.

  • In a browser, free, no registration: the European Commission’s online EN 16931 validator takes the file and lists the rules it broke.
  • On your own machine: the KoSIT validator is the reference implementation for XRechnung, and Mustangproject checks ZUGFeRD files including the PDF container.

Keep the validation report. German tax guidance distinguishes a format error from a business-rule error and accepts that a business exercising ordinary commercial care may rely on the technical result of a validation. The report is how you show you did.

Or let the tool do it

The free ANUPRESS invoice generator builds XRechnung, Factur-X, UBL and CII in your browser, with no account and nothing sent to a server. You choose the rulebook and it checks the document against it before building the file, so a missing buyer reference stops you at the form rather than at the recipient. It is free, unlimited and unwatermarked.

Open the free invoice generator

Keeping your clients in Grist? The same engine runs as a free Grist widget, raising invoices from the tables you already maintain. See the Grist invoice widget guide. Otherwise the generator above is the one you want.

So which do you send?

Decision chart for choosing between XRechnung and ZUGFeRD for a German e-invoice
Four questions, and the format falls out of the answers.
  • Is the customer a German public authority? Send XRechnung, and ask them for the Leitweg-ID before you raise the invoice rather than after.
  • Did the customer specify a format? Send that. A specified format beats every other consideration here, because their system is what has to accept it.
  • Is the customer a business with no e-invoicing software? Send ZUGFeRD in BASIC or EN 16931. They see a PDF, and the structured data is there when they need it.
  • Anything else? ZUGFeRD at EN 16931 is the sane default: a full invoice, a readable document, and the same file works for a French client as Factur-X.

Where this guide stops

Naming the limits is more useful than pretending there are none.

This is not tax advice, and it is not a substitute for the specifications. It is a reading of published rule files, and where a rule matters to you the published text is the authority.

Rule texts are summarised, not quoted. The German rules are published in German. The descriptions here are our translations of what each rule demands, made for a reader deciding what to put on an invoice. For an implementation, read the rule files.

Some things are deliberately absent. We have not quoted profile identifier strings, because a reader does not type them and we did not verify them. We give no price for a Peppol access point, because that is commercial and varies. And we give no in-force date for ZUGFeRD 2.5.2, because the maintainers publish a publication date and not a validity date, and inventing the difference would be guessing.

The public-sector picture is federal only. Each German state runs its own portal and its own deadlines. If you invoice a state authority or a municipality, check theirs.

XRechnung and ZUGFeRD FAQ

Is XRechnung or ZUGFeRD better for a small business?

For business customers, ZUGFeRD in the BASIC profile or higher, because the file is also a readable PDF and your client can open it without any special software. For a public authority, XRechnung, because that is what the federal e-invoicing regulation asks for. Both satisfy the German business-to-business mandate, so the choice is about what the recipient can handle rather than about legality.

Which ZUGFeRD profile should I use?

BASIC or higher. The format’s own maintainers mark BASIC, EN 16931 and EXTENDED as recognised in Germany as a complete invoice under VAT law, and mark MINIMUM and BASIC WL as not recognised. Those two lower profiles carry no invoice line items and exist as a booking aid, so a file in either of them is not a full invoice however valid the XML is.

Is XRechnung a CIUS or an extension of EN 16931?

Both. KoSIT states that the XRechnung standard consists of the CIUS XRechnung and the Extension XRechnung. The CIUS restricts the European standard by making optional fields compulsory. The Extension adds fields the European standard does not have at all, including sub invoice lines and third-party payments. The two are told apart by the specification identifier the file carries.

Does an XRechnung need a Leitweg-ID?

It needs a buyer reference, which is not quite the same thing. Rule BR-DE-15 makes the buyer reference field compulsory in every XRechnung. When you invoice a German public body that reference is the Leitweg-ID it issued you. When you invoice an ordinary business it is whatever reference they gave you, such as a purchase order number. The field must not be empty either way.

Why do XRechnung invoices get rejected?

Usually because of the German rules layered on top of the European standard rather than the standard itself. The most common are the seller contact rules: an XRechnung needs a contact name, a telephone number and an email address, and those are three separate compulsory rules rather than alternatives. Missing town or post code for either party, and an empty buyer reference, account for most of the rest.

Does my invoice need an electronic address to be a valid XRechnung?

Supply one. We checked the published validation rules, and no Schematron rule in EN 16931 or XRechnung tests for its presence, so a file without one passes those particular checks. That is not the same as the field being optional: the XRechnung specification sets cardinalities that the rule files do not encode, and we could not verify that document directly. Peppol requires an electronic address outright, because it needs one to route the file. Treat a tool that insists on it as cautious rather than wrong.

Do I have to use Peppol to send an e-invoice in Germany?

No. German law prescribes no delivery channel at all, so email with the file attached is a legal way to send an e-invoice between businesses. Peppol is a transport network with its own addressing and certified access points, and it is one option among several rather than a requirement.

How do I open an XRechnung file I have been sent?

An XRechnung is XML, so it opens in any text editor but reads like a data file. To see it as an invoice, use a viewer. Quba is a free open-source one published under the ZUGFeRD project on GitHub, it runs on Windows, macOS and Linux, and it needs no internet connection. The federal tax portal also offers a viewer, which displays an e-invoice but does not validate it.

Bottom line

Neither format is more legal than the other, so stop choosing on that basis. Send ZUGFeRD to businesses, because it is a PDF as well as data and it costs your client nothing to open. Send XRechnung to public authorities, because that is what they ask for. Keep the profile at BASIC or above and the two bottom rungs of the ladder can never catch you.

Then spend your attention where the rejections actually come from. Put a telephone number and an email address on your invoices, not one or the other. Carry a town and a post code for yourself and for your client. Never leave the buyer reference empty. Those four habits clear most of the German rules before you have thought about XML at all.

If you would rather not think about it, the free invoice generator builds both formats in your browser and checks the document against the rulebook first. And if you are still working out the underlying obligation, the guide to invoicing in Germany covers who has to send an e-invoice, and by when.

Written by the ANUPRESS team. The rule codes in this guide were read from KoSIT’s published rule files on 10 September 2026, and the profile table from the format maintainers’ own documentation. Rules change, and this guide is information rather than tax advice. Found something out of date? Tell us and we will check it.

ANUPRESS Team
ANUPRESS Team

ANUPRESS Team writes and builds everything on this site — reviews and 48+ free browser-based tools alike. We test what we review by actually using it, not by summarizing a spec sheet. Spot something wrong or want to know more about a specific piece? Reach us through the contact page.

Articles: 37

Leave a Reply

Your email address will not be published. Required fields are marked *