ValidateFin
Back to blog
Factur-X10 min readBy Eliel Nicaise

15 Common Factur-X / ZUGFeRD Errors and How to Fix Them

The most frequent validation errors in Factur-X and ZUGFeRD invoices, with detailed explanations and step-by-step fixes. From PDF/A-3 structure errors to EN 16931 business rule failures.

Why Factur-X Invoices Get Rejected

Factur-X and ZUGFeRD invoices combine two layers of complexity: the PDF/A-3 container structure and the embedded XML data model (UN/CEFACT CII, aligned with EN 16931). Errors can occur in either layer. A structurally valid PDF may contain invalid XML, and a semantically correct XML may be embedded in a PDF that fails PDF/A-3 conformance. Understanding both layers is essential for producing invoices that pass automated validation at Chorus Pro, ZRE, and buyer e-invoicing platforms.

The most common source of errors is the discrepancy between what accounting software generates and what the EN 16931 standard requires. Many ERP systems generate Factur-X with profile-level mismatches, rounding errors, or missing mandatory fields — especially when first configured or after a software update.

PDF/A-3 Structure Errors

The PDF container must conform to PDF/A-3b (or higher). These are the most common PDF-level errors:

PDF not conforming to PDF/A-3

The file must be PDF/A-3b (or PDF/A-3u). Standard PDFs generated by office applications are not PDF/A-3. Use a certified Factur-X library (e.g., Factur-X Python library, Mustang Project, or a compliant e-invoicing platform) to generate PDF/A-3 conformant files.

XML not embedded as AFRelationship=Alternative

The embedded XML must have the AFRelationship metadata set to 'Alternative' (for standard Factur-X) or 'Data' (for some ZUGFeRD variants). Incorrect AFRelationship causes validation failures at Chorus Pro and ZRE.

Wrong XML filename in PDF attachment

Factur-X requires the XML to be attached as 'factur-x.xml'. ZUGFeRD requires 'ZUGFeRD-invoice.xml' (ZUGFeRD 1.0) or 'zugferd-invoice.xml' (ZUGFeRD 2.x). The filename is case-sensitive. Wrong filename causes extraction failures in automated processing systems.

Missing XMP metadata in PDF

The PDF must contain XMP metadata declaring the Factur-X/ZUGFeRD profile and version. The metadata element is urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#ConformanceLevel. Without this metadata, processing systems cannot determine the profile level.

PDF generated from scanner (image-only)

Scanned PDFs converted to PDF/A-3 are technically valid PDF/A-3 but are missing the required XML attachment. A Factur-X invoice requires both the PDF visual layer AND the embedded XML. The PDF must be generated programmatically from invoice data, not scanned.

XML Data Errors (CII / EN 16931)

These errors occur in the embedded XML, regardless of the PDF container validity:

Missing seller VAT number

EN 16931 requires the seller's VAT identification number (SellerTradeParty/SpecifiedTaxRegistration/ID with schemeID='VA'). Missing VAT number causes BR-CO-09 rule failure and rejection by tax authority platforms.

VAT amount rounding mismatch

The calculated tax amount (taxBasisAmount × taxRate / 100) must match the declared TaxTotalAmount within 0.01€. Rounding errors in ERP systems — especially with multiple line items using different rates — are the most common cause of EN 16931 rule failures (BR-CO-15).

Grand total mismatch

GrandTotalAmount must equal LineTotalAmount − AllowanceTotalAmount + ChargeTotalAmount + TaxTotalAmount. Any discrepancy, even by 0.01€, causes EN 16931 rule BR-CO-16 failure. Check that all intermediate amounts are correctly summed.

Wrong profile identifier in GuidelineSpecifiedDocumentContextParameter

The profile must be declared in the XML header. Common correct values: urn:cen.eu:en16931:2017 (EN 16931 COMFORT), urn:factur-x.eu:1p0:minimum, urn:factur-x.eu:1p0:basicwl, etc. A mismatch between the declared profile and the actual data present causes validation failures.

Missing invoice line amounts or unit price

EN 16931 requires at minimum: item description, quantity, unit of measure, unit price, and line extension amount for each invoice line. Many MINIMUM profile invoices omit line details, which is valid only for that profile level — switching to EN 16931 profile without adding line detail data causes rule failures.

Validate Your Factur-X Invoices Instantly

ValidateFin's Factur-X Viewer extracts the embedded XML from your PDF invoice, validates the CII structure, checks EN 16931 mandatory fields, and highlights errors with precise field-level feedback. All processing is in your browser — no file uploaded.

Open Factur-X Validator

Frequently Asked Questions

How do I fix a PDF/A-3 non-conformance in my Factur-X invoice?

You cannot convert a standard PDF to PDF/A-3 using a simple tool — the PDF/A-3 conformance must be ensured during PDF generation. Use a certified Factur-X library (Factur-X Python, Mustang Project, iText for Java, or a commercial e-invoicing platform) that generates PDF/A-3b conformant files from the start.

What is the correct XML filename for Factur-X?

For Factur-X (French/European standard), the required filename is 'factur-x.xml' (lowercase, hyphen). For ZUGFeRD 1.0, it is 'ZUGFeRD-invoice.xml'. For ZUGFeRD 2.x, it is 'zugferd-invoice.xml' (lowercase). The filename is case-sensitive — use exactly the required name.

My invoice passes schema validation but fails at Chorus Pro — why?

Chorus Pro applies both XSD schema validation AND EN 16931 Schematron business rule validation. A schema-valid XML can still fail business rules like BR-CO-15 (VAT amount mismatch) or BR-CO-16 (grand total mismatch). Use ValidateFin to check EN 16931 business rule compliance before submission.

What Factur-X profile does Belgium require?

Belgium accepts EN 16931-compliant formats. For Factur-X, this means at minimum the EN 16931 (COMFORT) profile, which carries all mandatory business terms including line-level details, full VAT breakdown, and payment information. MINIMUM and BASIC WL profiles are insufficient for Belgian B2B compliance.

How do I fix the VAT rounding error in Factur-X?

Calculate VAT amounts using round-half-up rounding to 2 decimal places at the VAT breakdown level, not at the line level. Sum the VAT breakdowns to get TaxTotalAmount. Then verify GrandTotalAmount = LineTotalAmount - AllowanceTotalAmount + ChargeTotalAmount + TaxTotalAmount. If the difference is exactly 0.01€, it is a rounding issue in your ERP configuration.

What is the difference between ZUGFeRD and Factur-X?

ZUGFeRD is the German standard, developed by FeRD (Forum elektronische Rechnung Deutschland). Factur-X is the joint French-German standard that aligns ZUGFeRD 2.0+ with the French Chorus Pro requirements. Since ZUGFeRD 2.1, the two are technically identical — the same XML format, the same profiles. The name used depends on the country and context.

Which Factur-X profile should I use?

Use the minimum profile that satisfies your compliance requirements: MINIMUM for archival (no payment data), BASIC WL for line-total-only invoices, BASIC for standard invoices with basic line details, EN 16931 (COMFORT) for full EN 16931 compliance, and EXTENDED for additional business data. For B2B compliance in France and Belgium, use EN 16931 profile or higher.

Can I validate a Factur-X invoice without software?

Yes — use ValidateFin's Factur-X Viewer in your browser. Drop your PDF invoice and it will extract the embedded XML, validate the CII structure, check EN 16931 mandatory fields, and display all invoice data. No installation, no file upload, completely free.

What is the AFRelationship metadata in Factur-X?

AFRelationship is PDF metadata that declares the relationship between the PDF and the embedded file attachment. For Factur-X invoices, this must be set to 'Alternative' — indicating that the XML is an alternative representation of the same content as the PDF. Some ZUGFeRD variants use 'Data'. Wrong AFRelationship causes extraction failures.

How do I check if my Factur-X PDF is valid PDF/A-3?

ValidateFin extracts and validates the embedded XML from your Factur-X PDF. For full PDF/A-3 conformance checking (beyond XML extraction), use dedicated PDF/A validators such as veraPDF (open source) or commercial tools like Callas pdfToolbox. PDF/A-3 conformance requires specific metadata, colour profiles, and font embedding that only dedicated PDF validators can fully verify.