Factur-X / ZUGFeRD: is the PDF or the XML the authoritative invoice?

Short answer: the embedded XML is the authoritative structured invoice; the PDF page is its human-readable rendering. Here is why, what it means when the two disagree, and how to check a file before you book it.

TL;DR — Process and book from the XML. A Factur-X / ZUGFeRD file must show identical figures in both faces; if the PDF and the XML disagree, the document is defective — flag it, don't pay it.

Why there are two faces at all

A Factur-X (France) / ZUGFeRD (Germany) invoice is a hybrid PDF/A-3 file: a normal PDF page a human can read, with an EN 16931 XML file embedded inside it as an attachment. The two are meant to be the same invoice expressed twice — one for people, one for machines. XRechnung, by contrast, is XML-only (no PDF face at all).

So which one governs?

The structured XML. It is the data your accounting or ERP system actually imports, and it is what the EU e-invoicing regimes require be transmitted and processed — the machine-readable record, not the picture. The Factur-X / ZUGFeRD specifications designate the embedded XML as the invoice's structured data and the PDF as its visual representation. The practical rule for a receiver:

🇫🇷🇩🇪 Mandate context: under the French (receiving mandatory from 1 September 2026) and German (issuing from 1 January 2027) regimes, it is the structured data that is exchanged and reported. A PDF that looks right but carries wrong or missing XML is not a compliant invoice.

How to check a file before you trust it

Two honest, free checks — no signup:

1. Do the invoice's own numbers reconcile?

Recompute the XML's totals, tax breakdown and category/rate the way your accounting system would — catch a document whose figures don't add up. (This reads the structured XML, not the visual page.)

Check invoice consistency →
2. Is it a conformant Factur-X / ZUGFeRD file at all?

Validate the PDF/A-3 layer (veraPDF) and the EN 16931 schematron (KoSIT) against the official engines — an engine that did not run returns null, never a fabricated pass.

Validate a Factur-X invoice →

FacturProof — e-invoice validation, consistency and VAT verification with signed, offline-verifiable attestations. This page is guidance on the standards, not tax or legal advice. A verdict from our engine is honest: an engine that did not run is reported as such, never as a pass.