Technical note on Factur-X EN16931 compliance, PDF/A-3, XSD and Schematron, and the most common errors in e-invoicing solutions.
The e-invoicing reform sets strict deadlines. Many solutions claim to be Factur-X compliant. Few actually are.
Factur-X compliance is not just about embedding an XML file inside a PDF.
It relies on three distinct, independent, and all mandatory levels.
A Factur-X invoice is considered compliant only if it simultaneously satisfies these three requirements:
Most solutions only validate one or two of these levels. The third — PDF/A-3 — is consistently the most problematic.
Generating a PDF and embedding an XML file into it does not produce a compliant PDF/A-3 document.
PDF/A-3 enforces strict constraints on the document itself: fully embedded fonts, declared color spaces, ICC OutputIntent present, compliant XMP metadata.
The most widely used PDF generation libraries — Dompdf, TCPDF — produce DeviceRGB without an ICC OutputIntent. The result is a PDF invalid under the PDF/A standard, even if the embedded XML is perfectly structured.
The Factur-X validator detects this immediately. The invoice is rejected.
The reference Factur-X validator performs three distinct passes:
A solution that passes XSD and Schematron but fails on PDF/A-3 is not Factur-X compliant. It produces a correct XML inside a non-archivable PDF.
PDF/A-3 compliance requires a PDF generation library capable of natively producing an archivable document.
mPDF generates clean PDF/A-1b output, with an integrated ICC OutputIntent, embedded fonts and compliant XMP metadata. The Python factur-x library then injects the EN16931 XML and converts the document to PDF/A-3.
The result passes all three validation levels: XSD, Schematron, PDF/A-3.
An existing invoicing solution can be made Factur-X compliant without a full rewrite.
The XML engine adapts to the existing data structure. The PDF/A-3 injection is added at the output of the current PDF generator. The existing system is not deeply modified.
What changes: the produced document is now valid, archivable, and interoperable with e-invoicing platforms.
The September 2026 deadline for B2B e-invoice reception leaves no room for partial solutions.