ZUGFeRD Invoice Example: Open a Sample and Read the XML
A ZUGFeRD invoice example taken apart: where to get official samples, how to open the PDF and its embedded XML, and an annotated CII excerpt with BT fields.
Key takeaways
- A ZUGFeRD invoice example has three layers: the visible PDF, an embedded attachment and the CII XML data inside that attachment.
- FeRD publishes official sample invoices in its ZUGFeRD 2.5.2 information package of 4 August 2026, in German and English.
- From ZUGFeRD 2.1, the embedded file is named factur-x.xml; in the XRECHNUNG profile it is xrechnung.xml.
- If the PDF and the XML differ, the XML counts for German VAT purposes, not the visible page.
- BT-24 in the XML names the profile; MINIMUM and BASIC WL files are not e-invoices under German rules.
On this page
A ZUGFeRD invoice example is a PDF/A-3 file with an embedded XML file that carries the same invoice in the UN/CEFACT Cross Industry Invoice (CII) syntax. To read one, open the PDF for the visible page, then open the embedded factur-x.xml attachment. Under German rules in force since 2025, the XML, not the PDF page, is the e-invoice.
This guide is for anyone who has to handle a ZUGFeRD or Factur-X invoice for the first time: finance teams of foreign companies with German suppliers, developers testing an import, and English-speaking founders in Germany. It shows where official samples come from, how to open each layer, and which lines of the XML matter. For the format itself, read What Is ZUGFeRD?.
Where can you get a real ZUGFeRD sample?
Do not test with a random PDF found online. Use one of these sources:
| Source | What you get | Notes |
|---|---|---|
| FeRD information package ZUGFeRD 2.5.2 (4 August 2026) | Specification and the sample invoices that FeRD says are included | Free download on ferd-net.de, German and English editions |
| FeRD extra samples page | Additional sample documents, e.g. recurring rent invoice, construction invoices with supporting documents in the XML, Kleinunternehmer invoice without VAT ID, credit note cancellation, service charge statement | Linked from the German FeRD FAQ |
| Your own test invoice | A ZUGFeRD PDF with your own fictitious data | Our generator creates one in the EN 16931 profile |
| An invoice from a real supplier | The real thing | Use a copy of the original e-mail attachment, never a re-saved or printed version |
ZUGFeRD and Factur-X are the same format. FeRD describes ZUGFeRD 2.0 and Factur-X as identical in content, and ZUGFeRD 2.5.2 corresponds to Factur-X 1.09.2. A French Factur-X sample is therefore just as useful as a German one.
What are the three layers of a ZUGFeRD invoice?
FeRD calls the PDF the "visual component" and the embedded XML a copy of the same invoice with identical content. When you open the file, you only ever see one layer at a time:
| Layer | What you see | How to open it | Role under German VAT rules |
|---|---|---|---|
| 1. PDF page | Invoice layout with logo, lines and totals | Any PDF reader or browser | Readable copy only |
| 2. Attachment | Embedded file, usually factur-x.xml | Attachment panel of a PDF reader, or an extractor | Container of the e-invoice |
| 3. XML data | Fields of the EN 16931 data model (BT-1, BT-2 …) in CII syntax | Extractor, e-invoicing software, XML viewer | Leading part of the invoice |
The attachment name tells you which generation you have:
factur-x.xml: ZUGFeRD 2.1 and later, profiles MINIMUM to EXTENDED;xrechnung.xml: the XRECHNUNG profile;zugferd-invoice.xml: ZUGFeRD 2.0;ZUGFeRD-invoice.xml: ZUGFeRD 1.0, which is not an e-invoice under German rules.
Why is the XML the part that counts?
Until the end of 2024, the visual part prevailed when the PDF and the data disagreed. With mandatory e-invoicing in Germany, that reversed. The ZUGFeRD FAQ published by FeRD (opens in a new tab) (in German) puts it plainly: the structured part (XML) is leading. It recommends that recipients "visualise, validate and process" the XML and clarify any relevant difference with the issuer.
For a foreign finance team this has one practical consequence. If you approve invoices by looking at the PDF only, you approve the wrong document. A different VAT amount or bank account in the XML does not show up on the page.
How to open a ZUGFeRD invoice example, step by step
- Open the PDF in your reader and write down the invoice number, date, net amount, VAT and total. Result: you know the visible layer.
- Open the attachment (paperclip) panel. Many readers list embedded files there. Result: you see a file such as
factur-x.xml. If your reader shows no attachments, continue with step 3. - Drop the PDF into an extractor. Ours lists every attachment, picks the invoice XML by file name and content, and displays it formatted. Result: the message "E-invoice XML found" with the attachment name.
- Find
ram:GuidelineSpecifiedDocumentContextParameter/ram:ID. This is BT-24, the specification identifier. Result: you know the profile (see the table below). - Compare the invoice number, date and amounts from step 1 with the XML. Result: both layers match, or you have found a difference to raise with the supplier.
- Keep the original file unchanged. If your accounting system accepts XML only, import the extracted XML as well.
The annotated XML: what a ZUGFeRD example contains
This is the core of an invoice in the EN 16931 profile, shortened and with fictitious data:
<rsm:CrossIndustryInvoice
xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
<rsm:ExchangedDocumentContext>
<ram:GuidelineSpecifiedDocumentContextParameter>
<ram:ID>urn:cen.eu:en16931:2017</ram:ID>
</ram:GuidelineSpecifiedDocumentContextParameter>
</rsm:ExchangedDocumentContext>
<rsm:ExchangedDocument>
<ram:ID>RE-2026-0042</ram:ID>
<ram:TypeCode>380</ram:TypeCode>
<ram:IssueDateTime>
<udt:DateTimeString format="102">20261015</udt:DateTimeString>
</ram:IssueDateTime>
</rsm:ExchangedDocument>
<rsm:SupplyChainTradeTransaction>
<!-- line items, seller, buyer and delivery omitted -->
<ram:ApplicableHeaderTradeSettlement>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:TaxBasisTotalAmount>1000.00</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">190.00</ram:TaxTotalAmount>
<ram:GrandTotalAmount>1190.00</ram:GrandTotalAmount>
<ram:DuePayableAmount>1190.00</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
</ram:ApplicableHeaderTradeSettlement>
</rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>
| XML element | Business term | Meaning | Value in the example |
|---|---|---|---|
GuidelineSpecifiedDocumentContextParameter/ID | BT-24 | Profile (specification identifier) | EN 16931 |
ExchangedDocument/ID | BT-1 | Invoice number | RE-2026-0042 |
ExchangedDocument/TypeCode | BT-3 | Document type, 380 = commercial invoice | 380 |
IssueDateTime/DateTimeString (format 102) | BT-2 | Issue date as YYYYMMDD | 15 October 2026 |
InvoiceCurrencyCode | BT-5 | Currency | EUR |
TaxBasisTotalAmount | BT-109 | Total without VAT | EUR 1,000.00 |
TaxTotalAmount | BT-110 | Total VAT | EUR 190.00 |
GrandTotalAmount | BT-112 | Total including VAT | EUR 1,190.00 |
DuePayableAmount | BT-115 | Amount due for payment | EUR 1,190.00 |
Seller (BT-27) and buyer (BT-44) sit under ram:ApplicableHeaderTradeAgreement in ram:SellerTradeParty and ram:BuyerTradeParty. Each invoice line is a ram:IncludedSupplyChainTradeLineItem. A complete invoice explained line by line, in the XRechnung UBL syntax, is in our e-invoice example for Germany.
Which profile is your example, and does it count?
BT-24 decides. The German Federal Ministry of Finance (BMF), as quoted in the FeRD FAQ, accepts ZUGFeRD "from version 2.0.1, excluding the MINIMUM and BASIC-WL profiles" as an e-invoice format.
| Value in BT-24 | Profile | E-invoice under German rules? |
|---|---|---|
urn:factur-x.eu:1p0:minimum | MINIMUM | No, a booking aid |
urn:factur-x.eu:1p0:basicwl | BASIC WL | No, a booking aid |
urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic | BASIC | Yes |
urn:cen.eu:en16931:2017 | EN 16931 (COMFORT) | Yes |
urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended | EXTENDED | Yes |
urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0 | XRECHNUNG | Yes |
A root element rsm:CrossIndustryDocument instead of rsm:CrossIndustryInvoice means ZUGFeRD 1.0. Our guide to ZUGFeRD profiles and versions covers each profile in detail.
Common mistakes with ZUGFeRD samples
| Mistake | Symptom | Fix |
|---|---|---|
| The sample is a plain PDF | No attachments; the extractor reports that the PDF has no embedded files | Get a real sample from FeRD or ask the supplier for an e-invoice |
| The file was edited after receipt | Attachment missing although the supplier sent ZUGFeRD | Use the original. Page tools that merge PDF files or split them drop the embedded XML and the PDF/A status |
| Only the PDF was checked | Different totals or bank details go unnoticed | Always compare with the XML |
| Wrong attachment opened | A delivery note or timesheet instead of the invoice | Check the file name and the root element rsm:CrossIndustryInvoice |
| MINIMUM or BASIC WL sample used for testing | BT-24 ends in minimum or basicwl | Test with an EN 16931 or XRECHNUNG sample |
Extra attachments are allowed. According to the FeRD FAQ, supporting documents may be embedded Base64-encoded in the XML in the EN 16931 and EXTENDED profiles, and attached to the PDF as a further file in all profiles.
How to open and check a ZUGFeRD example with docutools.pro
- Open the ZUGFeRD XML extractor and click "Choose PDF" or drop the file. The PDF is processed in your browser and does not leave your computer.
- Read the "Invoice summary" tab: invoice number, date, seller, buyer, VAT IDs, net, VAT and gross amounts, and the line items. Below it, the extractor lists any other attachments in the PDF.
- Switch to the "XML source" tab to see BT-24 and every other field as written. "Download XML" saves the file and "Copy XML" copies the text.
- Upload the XML to our ZUGFeRD validator. The file is sent to our server for the check. The KoSIT validation checks the way the KoSIT validator does (configuration 2026-08-31): an EN 16931 profile file is checked against the EN 16931 rules, an XRECHNUNG profile file also against the German BR-DE rules. BASIC and EXTENDED files are rejected because the configuration has no validation scenario for them.
- Need your own sample? In the ZUGFeRD invoice generator, fill in "Company" and "Items" with fictitious data and choose "ZUGFeRD PDF" under "Generate & download". You get a PDF/A-3 with an embedded
factur-x.xmlin the EN 16931 profile. The generator runs on our server and needs no account for single invoices.
The extractor handles one PDF at a time for free; several PDFs at once and "Download all as ZIP" are Pro features, and the validator allows two uploads of up to 500 KB per day without an account (see the Pro plan). The extractor does not check PDF/A or business rules. For the full check, follow our guide to validate a ZUGFeRD PDF.
More guides on hybrid invoices are in our ZUGFeRD and Factur-X section.
Sources
- Forum elektronische Rechnung Deutschland (FeRD): ZUGFeRD 2.5.2 information package, 4 August 2026 (opens in a new tab)
- FeRD: ZUGFeRD/Factur-X FAQ (opens in a new tab) (in German; leading XML, profiles, BMF quote)
- FeRD: ZUGFeRD sample invoices (opens in a new tab) (in German)
- FeRD: Technical questions on e-invoicing (opens in a new tab) (in German; ZUGFeRD and Factur-X)
Last reviewed: October 2026
This article is general information, not tax or legal advice.
Tools for this article
- ZUGFeRD / Factur-X XML ExtractorExtract, view and download the embedded e-invoice XML from ZUGFeRD and Factur-X PDFs.Open tool →
- XRechnung ViewerParse, validate & repair German e-invoices with GoBD-compliant audit trail.Open tool →
- E-Invoice GeneratorCreate compliant XRechnung XML and ZUGFeRD hybrid PDF invoices instantly.Open tool →
Frequently asked questions
Where can I download an official ZUGFeRD sample invoice?
From the Forum elektronische Rechnung Deutschland (FeRD), the body that publishes ZUGFeRD. Its information package for ZUGFeRD 2.5.2, dated 4 August 2026, is a free download on ferd-net.de, in a German and an English edition. FeRD states that the package contains sample invoices. FeRD also links further samples, for example for recurring rent invoices, small businesses (Kleinunternehmer), credit note cancellations and service charge statements.
How do I open a ZUGFeRD file?
Open it like any PDF to see the invoice page. To see the actual e-invoice, open the attachment panel of your PDF reader and look for an embedded file such as factur-x.xml, or use a ZUGFeRD extractor that pulls the XML out and displays it. The XML holds the structured invoice data that accounting software reads and that counts for German VAT purposes.
Is a Factur-X example the same as a ZUGFeRD example?
Technically yes, within matching versions. Germany and France defined the format together, and FeRD states that ZUGFeRD 2.0 and Factur-X are identical in content. ZUGFeRD 2.5.2 corresponds to Factur-X 1.09.2. A Factur-X sample therefore has the same PDF/A-3 container, the same embedded factur-x.xml file name and the same CII syntax as a ZUGFeRD sample of the same profile.
Which part of a ZUGFeRD invoice is legally binding, the PDF or the XML?
The XML. Since 1 January 2025, the structured part of a hybrid e-invoice is the leading part for German VAT purposes, as the FeRD FAQ explains with reference to the guidance of the Federal Ministry of Finance (BMF). The PDF is only a human-readable copy with identical content. If the two differ, clarify the invoice with the issuer before you book or pay it.