Validate Factur-X / CII e-invoices before you send them
Check the embedded UN/CEFACT CII XML of your Factur-X (and ZUGFeRD) invoices against EN 16931 and the Factur-X profiles — before the e-invoicing mandate rejects them.
Ziehen Sie Ihre XML-Datei hierher
oder zum Durchsuchen klicken
Nur XML · max. 1 MB · 20 Transaktionen
Geführte Demo-Beispiele
Verwenden Sie diese nur, um die Diagnoseansicht vorab zu testen. Ihre eigene XML-Datei bleibt der Hauptablauf.
Downloads bevorzugt? gültige XML oder ungültige XML
Dateien werden nur im Arbeitsspeicher verarbeitet — nichts wird gespeichert oder an Dritte übertragen.
EN 16931 semantic model
Official Factur-X profiles
Readable diagnostics
No account required
Mehr als nur XML-Validierung
A valid XSD is not a valid invoice.
e-Invoicing platforms reject files for EN 16931 business-rule, profile and VAT-consistency reasons that XSD never checks. Ifriqa combines schema checks, EN 16931 rules, profile overlays and readable reports.
| Ebene | Was erkannt wird |
|---|---|
| XSD / CII structure | XML structure, required elements, data types |
| EN-16931-Regeln | BR / BR-CO business rules, totals and VAT consistency |
| Factur-X profiles | MINIMUM / BASIC WL / BASIC / EN 16931 / EXTENDED constraints |
| Explanation layer | Human-readable diagnostics and machine-readable JSON |
Unterstützte Profile
Mandate-ready validation
Validate the CII XML embedded in your Factur-X / ZUGFeRD PDFs against EN 16931 and each Factur-X profile before the French (2026-2027) and German B2B e-invoicing mandates.
ZUGFeRD 2.x is technically aligned with Factur-X and validated the same way.
Lesbare Diagnosen
| Fehler | Erklärung |
|---|---|
| Line totals mismatch | Sum of invoice lines does not match the document total (BR-CO-10). |
| VAT breakdown mismatch | Declared VAT total differs from the computed VAT per category (BR-CO-14). |
| Wrong CustomizationID / profile | The Factur-X profile URN does not match the actual content level. |
Anleitungen & Referenz
Technische Referenz
Dokumentstruktur
23 Felder · 21 Regeln · 3 Tabellen//*[local-name()='CrossIndustryInvoice']invoice.profileIdFactur-X Profile IDinvoice.idInvoice Numberinvoice.typeCodeDokumenttypcodeinvoice.issueDateIssue Dateinvoice.currencyCodeInvoice Currency Code//*[local-name()='SellerTradeParty']seller.nameSeller Name//*[local-name()='BuyerTradeParty']buyer.nameBuyer Name//*[local-name()='SpecifiedTradeSettlementHeaderMonetarySummation']totals.lineTotalSum of Line Net Amountstotals.taxBasisAmountTax Basis Total Amount (excl. VAT)totals.taxAmountTax Total Amounttotals.grandTotalAmountGrand Total Amount (incl. VAT)totals.duePayableAmountFälliger zahlbarer Betrag//*[local-name()='IncludedSupplyChainTradeLineItem']line.idLine IDline.productNameProduct Nameline.billedQtyBilled Quantityline.unitPriceNet Unit Priceline.lineTotalLine Total Amount//*[local-name()='ApplicableHeaderTradeSettlement']/*[local-name()='ApplicableTradeTax']vat.categoryCodeVAT Category Codevat.ratePercentVAT Rate (%)vat.basisAmountVAT Basis Amountvat.calculatedAmountVAT Calculated Amount//*[local-name()='SpecifiedTradePaymentTerms']payment.dueDatePayment Due Date//*[local-name()='ApplicableHeaderTradeDelivery']delivery.dateDelivery DateFelder
23 definiert| Kennung | Bezeichnung | Typ | Pflichtfeld |
|---|---|---|---|
invoice.profileId | Factur-X Profile ID | ID | ✓ |
invoice.id | Invoice Number | ID | ✓ |
invoice.typeCode | Dokumenttypcode | CODE | ✓ |
invoice.issueDate | Issue Date | ISO_DATE_BASIC | ✓ |
invoice.currencyCode | Invoice Currency Code | CURRENCY_CODE | — |
seller.name | Seller Name | TEXT | — |
buyer.name | Buyer Name | TEXT | — |
totals.taxBasisAmount | Tax Basis Total Amount (excl. VAT) | AMOUNT | — |
totals.taxAmount | Tax Total Amount | AMOUNT | — |
totals.grandTotalAmount | Grand Total Amount (incl. VAT) | AMOUNT | — |
totals.duePayableAmount | Fälliger zahlbarer Betrag | AMOUNT | — |
totals.lineTotal | Sum of Line Net Amounts | AMOUNT | — |
line.id | Line ID | ID | — |
line.productName | Product Name | TEXT | — |
line.billedQty | Billed Quantity | QUANTITY | — |
line.unitPrice | Net Unit Price | AMOUNT | — |
line.lineTotal | Line Total Amount | AMOUNT | — |
vat.categoryCode | VAT Category Code | CODE | — |
vat.ratePercent | VAT Rate (%) | PERCENT | — |
vat.basisAmount | VAT Basis Amount | AMOUNT | — |
vat.calculatedAmount | VAT Calculated Amount | AMOUNT | — |
payment.dueDate | Payment Due Date | ISO_DATE_BASIC | — |
delivery.date | Delivery Date | ISO_DATE_BASIC | — |
Validierungsregeln
21 RegelnFX-PROF-001ERROREine CII-Rechnung muss einen GuidelineSpecifiedDocumentContextParameter/ID (Factur-X-Profilkennung) angeben.
Factur-X Profile ID ist erforderlich
FX-PROF-002ERRORDie Factur-X-Profilkennung muss einer der anerkannten Profil-URNs sein (MINIMUM, BASIC-WL, BASIC, EN16931, EXTENDED).
Factur-X Profile ID ∈ Recognised Factur-X / ZUGFeRD profile URNs: {urn:factur-x.eu:1p0:minimum, urn:factur-x.eu:1p0:basicwl, urn:factur-x.eu:1p0:basic, urn:cen.eu:en16931:2017, urn:factur-x.eu:1p0:extended, urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_2.3 ... (16 Werte)}
FX-HDR-001ERROREine Rechnung muss eine Rechnungsnummer enthalten (ExchangedDocument/ID). (EN16931 BR-02)
Invoice Number ist erforderlich
FX-HDR-002ERROREine Rechnung muss ein Ausstellungsdatum enthalten (ExchangedDocument/IssueDateTime). (EN16931 BR-03)
Issue Date ist erforderlich
FX-HDR-003ERROREine Rechnung muss einen Dokumententypcode angeben (ExchangedDocument/TypeCode). (EN16931 BR-04)
Dokumenttypcode ist erforderlich
FX-HDR-004ERRORDer Dokumententypcode der Rechnung muss einer der anerkannten UNTDID-1001-Codes für Factur-X-Rechnungen sein.
Dokumenttypcode ist vorhanden
Dokumenttypcode ∈ UNTDID 1001 document type codes allowed for Factur-X: {380, 381, 383, 384, 386, 389 ... (12 Werte)}
FX-SEL-001ERROREine Rechnung muss den Namen des Verkäufers enthalten (SellerTradeParty/Name). (EN16931 BR-06)
Seller Name ist erforderlich
FX-BUY-001ERROREine Rechnung muss den Namen des Käufers enthalten (BuyerTradeParty/Name). (EN16931 BR-07)
Buyer Name ist erforderlich
FX-TOT-001ERRORDer Zeilensummenbetrag im Kopf muss der Summe aller Rechnungszeilen-Gesamtbeträge entsprechen, mit einer Toleranz von 0,01.
Sum of Line Net Amounts ist vorhanden und Line Total Amount ist vorhanden
Sum of Line Net Amounts = Σ line.lineTotal über line.lineTotal (±0.01)
FX-TOT-002ERRORDer Gesamtbetrag muss der Summe aus Steuerbasisbetrag und Steuerbetrag entsprechen, mit einer Toleranz von 0,01.
Grand Total Amount (incl. VAT) ist vorhanden und Tax Basis Total Amount (excl. VAT) ist vorhanden und Tax Total Amount ist vorhanden
Grand Total Amount (incl. VAT) = Tax Basis Total Amount (excl. VAT) + Tax Total Amount (±0.01)
FX-LIN-001ERRORJede Rechnungszeile muss eine Zeilenkennung enthalten (AssociatedDocumentLineDocument/LineID).
Line ID ist erforderlich
FX-LIN-003ERRORJede Rechnungszeile muss die berechnete Menge angeben.
Billed Quantity ist erforderlich
FX-LIN-004ERRORJede Rechnungszeile muss den Nettoeinzelpreis angeben.
Net Unit Price ist erforderlich
FX-VAT-001ERRORJeder USt-Kategoriecode der Aufschlüsselung muss einer der anerkannten EN16931-USt-Kategoriecodes sein.
VAT Category Code ist vorhanden
VAT Category Code ∈ EN16931 VAT category codes: {S, Z, E, AE, K, G ... (9 Werte)}
FX-VAT-003ERRORDer Steuergesamtbetrag muss der Summe der berechneten Beträge der USt-Aufschlüsselung entsprechen, mit einer Toleranz von 0,01.
Tax Total Amount ist vorhanden und VAT Calculated Amount ist vorhanden
Tax Total Amount = Σ vat.calculatedAmount über vat.calculatedAmount (±0.01)
FX-VAT-004ERRORDer Steuerbasis-Gesamtbetrag muss der Summe der Basisbeträge der USt-Aufschlüsselung entsprechen, mit einer Toleranz von 0,01.
Tax Basis Total Amount (excl. VAT) ist vorhanden und VAT Basis Amount ist vorhanden
Tax Basis Total Amount (excl. VAT) = Σ vat.basisAmount über vat.basisAmount (±0.01)
FX-PROFILE-BASIC-001ERRORFactur-X 1.08 BASICDieser Validator ist für das Factur-X-Profil BASIC; die Profilkennung der Rechnung muss urn:factur-x.eu:1p0:basic sein.
Factur-X Profile ID ist vorhanden
Factur-X Profile ID = "urn:factur-x.eu:1p0:basic"
FX-PROFILE-BASICWL-001ERRORFactur-X 1.08 BASIC-WLDieser Validator ist für das Factur-X-Profil BASIC-WL; die Profilkennung der Rechnung muss urn:factur-x.eu:1p0:basicwl sein.
Factur-X Profile ID ist vorhanden
Factur-X Profile ID = "urn:factur-x.eu:1p0:basicwl"
FX-PROFILE-EN16931-001ERRORFactur-X 1.08 EN16931Dieser Validator ist für das Factur-X-Profil EN16931; die Profilkennung der Rechnung muss urn:cen.eu:en16931:2017 sein.
Factur-X Profile ID ist vorhanden
Factur-X Profile ID = "urn:cen.eu:en16931:2017"
FX-PROFILE-EXTENDED-001ERRORFactur-X 1.08 EXTENDEDDieser Validator ist für das Factur-X-Profil EXTENDED; die Profilkennung der Rechnung muss urn:factur-x.eu:1p0:extended sein.
Factur-X Profile ID ist vorhanden
Factur-X Profile ID = "urn:factur-x.eu:1p0:extended"
FX-PROFILE-MINIMUM-001ERRORFactur-X 1.08 MINIMUMDieser Validator ist für das Factur-X-Profil MINIMUM; die Profilkennung der Rechnung muss urn:factur-x.eu:1p0:minimum sein.
Factur-X Profile ID ist vorhanden
Factur-X Profile ID = "urn:factur-x.eu:1p0:minimum"
Referenztabellen
3 ListenRecognised Factur-X / ZUGFeRD profile URNs
facturx-profile-urnsUNTDID 1001 document type codes allowed for Factur-X
invoice-type-codesEN16931 VAT category codes
vat-category-codesEntwickelt für
- ERP and accounting software vendors
- Finance and AP/AR teams preparing e-invoices
- Companies subject to the FR 2026-2027 / DE e-invoicing mandate
- Developers integrating Factur-X / ZUGFeRD export
- Consultants debugging e-invoice rejections
| Funktion | Kostenlos | Kostenpflichtig |
|---|---|---|
| Single invoice validation | Ja | Ja |
| XSD + EN 16931 diagnostics | Ja | Ja |
| Full business explanation | Teilweise | Ja |
| JSON/API report | Preview | Ja |
| Stapel / ZIP | Nein | Ja |
| Profile-specific reports | Begrenzt | Ja |
| History / saved reports | Nein | Ja |
| API-Zugriff | Nein | Ja |
Need batch validation or API access?
API access, ZIP/batch processing, saved reports and profile-specific diagnostics are planned for paid usage.