The Three Layers of E-Invoice Validation
Every e-invoice must pass three distinct validation layers before it can be accepted by government portals or trading partners. According to Invoice Navigator's validation engine, which processes invoices against 1,300+ rules, here's what each layer checks.
Layer 1: XML Schema Validation
The first check verifies that the invoice XML is well-formed and conforms to the correct schema (UBL 2.1 or UN/CEFACT CII D16B). Common failures include missing required elements, incorrect data types, and namespace errors. This layer catches about 15% of all validation errors.
Layer 2: EN 16931 Business Rules
The European standard EN 16931 defines approximately 170 business rules (prefixed BR-, BR-CO-, BR-CL-) that govern the semantic correctness of an invoice. These rules verify calculations (do line item totals match the invoice total?), currency consistency, VAT rate validity, and mandatory field presence. This layer catches about 60% of all validation errors.
Layer 3: Country-Specific CIUS Rules
Each country adds its own rules on top of EN 16931. Germany's XRechnung adds 147 rules (including mandatory Leitweg-ID for B2G invoices). France's Factur-X adds French tax code requirements. Belgium requires Peppol BIS-specific rules. This layer catches the remaining 25% of errors and is the most common cause of government portal rejections.
Auto-Remediation
Invoice Navigator's auto-remediation engine fixes structural errors automatically while strictly preserving financial fields — amounts, VAT rates, IBANs, and tax IDs are never modified. According to Invoice Navigator's processing data, auto-remediation resolves 89% of the top 50 XRechnung rejection errors without manual intervention.
Evidence Pack
After validation and remediation, Invoice Navigator generates an Evidence Pack: the original invoice, remediated output, full rule-by-rule validation results, remediation changelog with before/after comparisons, SHA-256 integrity hash, and timestamp. This provides the audit trail tax authorities require.
How to Validate Programmatically
Using Invoice Navigator's REST API: POST your invoice XML to /api/v1/validate with the target format (e.g., xrechnung, peppol-bis). The response includes validation status, all errors found, auto-remediated fields, and a link to the Evidence Pack. Average response time is under 500ms. TypeScript and Python SDKs are available.
Related Content
Validate your e-invoices
Check compliance against EN 16931, XRechnung, Peppol BIS, and 27 country-specific rule sets.
Try the Free Validator