Factur-X and ZUGFeRD: hybrid PDF invoice standard
Factur-X (France/Germany) and ZUGFeRD embed a structured XML invoice inside a PDF/A-3 file. Here is how the standard works and how to read these hybrid invoices.
What is a hybrid invoice?
A Factur-X or ZUGFeRD invoice is a PDF file that contains two things at once: a human-readable PDF (the visible invoice) and a machine-readable XML file embedded as an attachment (the structured data). Both coexist in a single PDF/A-3 file.
This dual format is the best of both worlds: humans read the PDF, accounting software reads the XML automatically. It is the mandatory e-invoicing format in France (since 2026) and widely adopted in Germany and Belgium.
Blog.post6.s1.p3
The EN 16931 standard
The embedded XML follows the European standard EN 16931 (the semantic data model for electronic invoices). Factur-X and ZUGFeRD are both implementations of this standard — they use the same data structure, with minor naming differences.
There are several compliance profiles, from the simplest (MINIMUM, only 6 fields) to the most complete (EXTENDED, all optional fields). Most businesses use the EN 16931 or COMFORT profile.
Blog.post6.s2.p3
Key fields in the embedded XML
- ExchangedDocument / ID — Invoice number — unique identifier for the document.
- SellerTradeParty / Name — Seller's name and VAT number (mandatory for tax compliance).
- SpecifiedTradeSettlement / GrandTotalAmount — Grand total including VAT — must match the PDF.
- ApplicableTradeTax — VAT breakdown: rate, basis amount, and tax amount for each VAT rate.
- Blog.post6.s3.f5.name — Blog.post6.s3.f5.desc
- Blog.post6.s3.f6.name — Blog.post6.s3.f6.desc
- Blog.post6.s3.f7.name — Blog.post6.s3.f7.desc
- Blog.post6.s3.f8.name — Blog.post6.s3.f8.desc
Blog.post6.s5.title
Blog.post6.s5.p1
Blog.post6.s5.p2
Blog.post6.s5.p3
Blog.post6.s6.title
Blog.post6.s6.p1
| Blog.post6.s6.th1 | Blog.post6.s6.th2 | Blog.post6.s6.th3 | Blog.post6.s6.th4 |
|---|---|---|---|
| Blog.post6.s6.r1.c1 | Blog.post6.s6.r1.c2 | Blog.post6.s6.r1.c3 | Blog.post6.s6.r1.c4 |
| Blog.post6.s6.r2.c1 | Blog.post6.s6.r2.c2 | Blog.post6.s6.r2.c3 | Blog.post6.s6.r2.c4 |
| Blog.post6.s6.r3.c1 | Blog.post6.s6.r3.c2 | Blog.post6.s6.r3.c3 | Blog.post6.s6.r3.c4 |
| Blog.post6.s6.r4.c1 | Blog.post6.s6.r4.c2 | Blog.post6.s6.r4.c3 | Blog.post6.s6.r4.c4 |
| Blog.post6.s6.r5.c1 | Blog.post6.s6.r5.c2 | Blog.post6.s6.r5.c3 | Blog.post6.s6.r5.c4 |
| Blog.post6.s6.r6.c1 | Blog.post6.s6.r6.c2 | Blog.post6.s6.r6.c3 | Blog.post6.s6.r6.c4 |
Blog.post6.s6.p2
Blog.post6.s7.title
Blog.post6.s7.p1
- Blog.post6.s7.step1.title — Blog.post6.s7.step1.desc
- Blog.post6.s7.step2.title — Blog.post6.s7.step2.desc
- Blog.post6.s7.step3.title — Blog.post6.s7.step3.desc
- Blog.post6.s7.step4.title — Blog.post6.s7.step4.desc
- Blog.post6.s7.step5.title — Blog.post6.s7.step5.desc
Blog.post6.s7.p2
Blog.post6.s8.title
Blog.post6.s8.p1
Blog.post6.s8.e1.label
Blog.post6.s8.e1.desc
Blog.post6.s8.e2.label
Blog.post6.s8.e2.desc
Blog.post6.s8.e3.label
Blog.post6.s8.e3.desc
Blog.post6.s8.e4.label
Blog.post6.s8.e4.desc
Blog.post6.s8.e5.label
Blog.post6.s8.e5.desc
Extract and verify your Factur-X invoices
Our Factur-X / ZUGFeRD viewer extracts the embedded XML from your PDF invoice and displays all billing data — seller, buyer, amounts, VAT lines, and invoice lines. 100% local, no data transmitted.
Open the Factur-X ViewerFrequently Asked Questions
What is the difference between Factur-X and ZUGFeRD?
Factur-X and ZUGFeRD are essentially the same format — a hybrid invoice that embeds structured XML inside a PDF/A-3 file. Factur-X is the French/European branding while ZUGFeRD is the German branding. Since ZUGFeRD 2.0, both are fully aligned and conform to EN 16931.
What are the Factur-X/ZUGFeRD profiles?
There are 6 profiles: MINIMUM (basic identification), BASIC WL (without line items), BASIC (with line items), EN 16931/COMFORT (full compliance), EXTENDED (additional fields), and XRECHNUNG (German public sector). Higher profiles enable more automated processing.
How can I extract XML data from a Factur-X PDF?
ValidateFin's Factur-X Viewer automatically extracts the embedded XML from any Factur-X or ZUGFeRD PDF file. Upload the PDF — the tool reads the embedded attachment, parses the XML, and displays all structured invoice data. Everything runs locally in your browser.
Blog.post6.faq.q4
Blog.post6.faq.a4
Blog.post6.faq.q5
Blog.post6.faq.a5
Blog.post6.faq.q6
Blog.post6.faq.a6
Blog.post6.faq.q7
Blog.post6.faq.a7
Blog.post6.faq.q8
Blog.post6.faq.a8
Blog.post6.faq.q9
Blog.post6.faq.a9
Blog.post6.faq.q10
Blog.post6.faq.a10