Ifriqa Validator

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.

EbeneWas erkannt wird
XSD / CII structureXML structure, required elements, data types
EN-16931-RegelnBR / BR-CO business rules, totals and VAT consistency
Factur-X profilesMINIMUM / BASIC WL / BASIC / EN 16931 / EXTENDED constraints
Explanation layerHuman-readable diagnostics and machine-readable JSON

Unterstützte Profile

Factur-X MINIMUMFactur-X BASIC WLFactur-X BASICFactur-X EN 16931Factur-X EXTENDED

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

FehlerErklärung
Line totals mismatchSum of invoice lines does not match the document total (BR-CO-10).
VAT breakdown mismatchDeclared VAT total differs from the computed VAT per category (BR-CO-14).
Wrong CustomizationID / profileThe Factur-X profile URN does not match the actual content level.

Anleitungen & Referenz

Technische Referenz

Dokumentstruktur

23 Felder · 21 Regeln · 3 Tabellen
▸
invoice[1..1]//*[local-name()='CrossIndustryInvoice']
◦invoice.profileIdFactur-X Profile ID
IDerforderlich
◦invoice.idInvoice Number
IDerforderlich
◦invoice.typeCodeDokumenttypcode
CODEerforderlich
◦invoice.issueDateIssue Date
ISO_DATE_BASICerforderlich
◦invoice.currencyCodeInvoice Currency Code
CURRENCY_CODE
▸
seller[1..1]//*[local-name()='SellerTradeParty']
◦seller.nameSeller Name
TEXT
▸
buyer[1..1]//*[local-name()='BuyerTradeParty']
◦buyer.nameBuyer Name
TEXT
▸
totals[1..1]//*[local-name()='SpecifiedTradeSettlementHeaderMonetarySummation']
◦totals.lineTotalSum of Line Net Amounts
AMOUNT
◦totals.taxBasisAmountTax Basis Total Amount (excl. VAT)
AMOUNT
◦totals.taxAmountTax Total Amount
AMOUNT
◦totals.grandTotalAmountGrand Total Amount (incl. VAT)
AMOUNT
◦totals.duePayableAmountFälliger zahlbarer Betrag
AMOUNT
▸
line[0..unbounded]//*[local-name()='IncludedSupplyChainTradeLineItem']
◦line.idLine ID
ID
◦line.productNameProduct Name
TEXT
◦line.billedQtyBilled Quantity
QUANTITY
◦line.unitPriceNet Unit Price
AMOUNT
◦line.lineTotalLine Total Amount
AMOUNT
▸
vat[0..unbounded]//*[local-name()='ApplicableHeaderTradeSettlement']/*[local-name()='ApplicableTradeTax']
◦vat.categoryCodeVAT Category Code
CODE
◦vat.ratePercentVAT Rate (%)
PERCENT
◦vat.basisAmountVAT Basis Amount
AMOUNT
◦vat.calculatedAmountVAT Calculated Amount
AMOUNT
▸
payment[0..unbounded]//*[local-name()='SpecifiedTradePaymentTerms']
◦payment.dueDatePayment Due Date
ISO_DATE_BASIC
▸
delivery[0..1]//*[local-name()='ApplicableHeaderTradeDelivery']
◦delivery.dateDelivery Date
ISO_DATE_BASIC

Felder

23 definiert
KennungBezeichnungTypPflichtfeld
invoice.profileIdFactur-X Profile IDID✓
invoice.idInvoice NumberID✓
invoice.typeCodeDokumenttypcodeCODE✓
invoice.issueDateIssue DateISO_DATE_BASIC✓
invoice.currencyCodeInvoice Currency CodeCURRENCY_CODE—
seller.nameSeller NameTEXT—
buyer.nameBuyer NameTEXT—
totals.taxBasisAmountTax Basis Total Amount (excl. VAT)AMOUNT—
totals.taxAmountTax Total AmountAMOUNT—
totals.grandTotalAmountGrand Total Amount (incl. VAT)AMOUNT—
totals.duePayableAmountFälliger zahlbarer BetragAMOUNT—
totals.lineTotalSum of Line Net AmountsAMOUNT—
line.idLine IDID—
line.productNameProduct NameTEXT—
line.billedQtyBilled QuantityQUANTITY—
line.unitPriceNet Unit PriceAMOUNT—
line.lineTotalLine Total AmountAMOUNT—
vat.categoryCodeVAT Category CodeCODE—
vat.ratePercentVAT Rate (%)PERCENT—
vat.basisAmountVAT Basis AmountAMOUNT—
vat.calculatedAmountVAT Calculated AmountAMOUNT—
payment.dueDatePayment Due DateISO_DATE_BASIC—
delivery.dateDelivery DateISO_DATE_BASIC—

Validierungsregeln

21 Regeln
FX-PROF-001ERROR

Eine CII-Rechnung muss einen GuidelineSpecifiedDocumentContextParameter/ID (Factur-X-Profilkennung) angeben.

Assertion

Factur-X Profile ID ist erforderlich

FX-PROF-002ERROR

Die Factur-X-Profilkennung muss einer der anerkannten Profil-URNs sein (MINIMUM, BASIC-WL, BASIC, EN16931, EXTENDED).

Assertion

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-001ERROR

Eine Rechnung muss eine Rechnungsnummer enthalten (ExchangedDocument/ID). (EN16931 BR-02)

Assertion

Invoice Number ist erforderlich

FX-HDR-002ERROR

Eine Rechnung muss ein Ausstellungsdatum enthalten (ExchangedDocument/IssueDateTime). (EN16931 BR-03)

Assertion

Issue Date ist erforderlich

FX-HDR-003ERROR

Eine Rechnung muss einen Dokumententypcode angeben (ExchangedDocument/TypeCode). (EN16931 BR-04)

Assertion

Dokumenttypcode ist erforderlich

FX-HDR-004ERROR

Der Dokumententypcode der Rechnung muss einer der anerkannten UNTDID-1001-Codes für Factur-X-Rechnungen sein.

Wenn

Dokumenttypcode ist vorhanden

Assertion

Dokumenttypcode ∈ UNTDID 1001 document type codes allowed for Factur-X: {380, 381, 383, 384, 386, 389 ... (12 Werte)}

FX-SEL-001ERROR

Eine Rechnung muss den Namen des Verkäufers enthalten (SellerTradeParty/Name). (EN16931 BR-06)

Assertion

Seller Name ist erforderlich

FX-BUY-001ERROR

Eine Rechnung muss den Namen des Käufers enthalten (BuyerTradeParty/Name). (EN16931 BR-07)

Assertion

Buyer Name ist erforderlich

FX-TOT-001ERROR

Der Zeilensummenbetrag im Kopf muss der Summe aller Rechnungszeilen-Gesamtbeträge entsprechen, mit einer Toleranz von 0,01.

Wenn

Sum of Line Net Amounts ist vorhanden und Line Total Amount ist vorhanden

Assertion

Sum of Line Net Amounts = Σ line.lineTotal über line.lineTotal (±0.01)

FX-TOT-002ERROR

Der Gesamtbetrag muss der Summe aus Steuerbasisbetrag und Steuerbetrag entsprechen, mit einer Toleranz von 0,01.

Wenn

Grand Total Amount (incl. VAT) ist vorhanden und Tax Basis Total Amount (excl. VAT) ist vorhanden und Tax Total Amount ist vorhanden

Assertion

Grand Total Amount (incl. VAT) = Tax Basis Total Amount (excl. VAT) + Tax Total Amount (±0.01)

FX-LIN-001ERROR

Jede Rechnungszeile muss eine Zeilenkennung enthalten (AssociatedDocumentLineDocument/LineID).

Assertion

Line ID ist erforderlich

FX-LIN-003ERROR

Jede Rechnungszeile muss die berechnete Menge angeben.

Assertion

Billed Quantity ist erforderlich

FX-LIN-004ERROR

Jede Rechnungszeile muss den Nettoeinzelpreis angeben.

Assertion

Net Unit Price ist erforderlich

FX-VAT-001ERROR

Jeder USt-Kategoriecode der Aufschlüsselung muss einer der anerkannten EN16931-USt-Kategoriecodes sein.

Wenn

VAT Category Code ist vorhanden

Assertion

VAT Category Code ∈ EN16931 VAT category codes: {S, Z, E, AE, K, G ... (9 Werte)}

FX-VAT-003ERROR

Der Steuergesamtbetrag muss der Summe der berechneten Beträge der USt-Aufschlüsselung entsprechen, mit einer Toleranz von 0,01.

Wenn

Tax Total Amount ist vorhanden und VAT Calculated Amount ist vorhanden

Assertion

Tax Total Amount = Σ vat.calculatedAmount über vat.calculatedAmount (±0.01)

FX-VAT-004ERROR

Der Steuerbasis-Gesamtbetrag muss der Summe der Basisbeträge der USt-Aufschlüsselung entsprechen, mit einer Toleranz von 0,01.

Wenn

Tax Basis Total Amount (excl. VAT) ist vorhanden und VAT Basis Amount ist vorhanden

Assertion

Tax Basis Total Amount (excl. VAT) = Σ vat.basisAmount über vat.basisAmount (±0.01)

FX-PROFILE-BASIC-001ERRORFactur-X 1.08 BASIC

Dieser Validator ist für das Factur-X-Profil BASIC; die Profilkennung der Rechnung muss urn:factur-x.eu:1p0:basic sein.

Wenn

Factur-X Profile ID ist vorhanden

Assertion

Factur-X Profile ID = "urn:factur-x.eu:1p0:basic"

FX-PROFILE-BASICWL-001ERRORFactur-X 1.08 BASIC-WL

Dieser Validator ist für das Factur-X-Profil BASIC-WL; die Profilkennung der Rechnung muss urn:factur-x.eu:1p0:basicwl sein.

Wenn

Factur-X Profile ID ist vorhanden

Assertion

Factur-X Profile ID = "urn:factur-x.eu:1p0:basicwl"

FX-PROFILE-EN16931-001ERRORFactur-X 1.08 EN16931

Dieser Validator ist für das Factur-X-Profil EN16931; die Profilkennung der Rechnung muss urn:cen.eu:en16931:2017 sein.

Wenn

Factur-X Profile ID ist vorhanden

Assertion

Factur-X Profile ID = "urn:cen.eu:en16931:2017"

FX-PROFILE-EXTENDED-001ERRORFactur-X 1.08 EXTENDED

Dieser Validator ist für das Factur-X-Profil EXTENDED; die Profilkennung der Rechnung muss urn:factur-x.eu:1p0:extended sein.

Wenn

Factur-X Profile ID ist vorhanden

Assertion

Factur-X Profile ID = "urn:factur-x.eu:1p0:extended"

FX-PROFILE-MINIMUM-001ERRORFactur-X 1.08 MINIMUM

Dieser Validator ist für das Factur-X-Profil MINIMUM; die Profilkennung der Rechnung muss urn:factur-x.eu:1p0:minimum sein.

Wenn

Factur-X Profile ID ist vorhanden

Assertion

Factur-X Profile ID = "urn:factur-x.eu:1p0:minimum"

Referenztabellen

3 Listen

Recognised Factur-X / ZUGFeRD profile URNs

facturx-profile-urns
urn:factur-x.eu:1p0:minimumurn:factur-x.eu:1p0:basicwlurn:factur-x.eu:1p0:basicurn:cen.eu:en16931:2017urn:factur-x.eu:1p0:extendedurn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_2.3urn:zugferd.de:2p0:minimumurn:zugferd.de:2p0:basicwlurn:zugferd.de:2p0:basicurn:zugferd.de:2p0:en16931+6 weitere

UNTDID 1001 document type codes allowed for Factur-X

invoice-type-codes
380381383384386389394395553575+2 weitere

EN16931 VAT category codes

vat-category-codes
SZEAEKGOLM

Entwickelt 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
FunktionKostenlosKostenpflichtig
Single invoice validationJaJa
XSD + EN 16931 diagnosticsJaJa
Full business explanationTeilweiseJa
JSON/API reportPreviewJa
Stapel / ZIPNeinJa
Profile-specific reportsBegrenztJa
History / saved reportsNeinJa
API-ZugriffNeinJa

Need batch validation or API access?

API access, ZIP/batch processing, saved reports and profile-specific diagnostics are planned for paid usage.

Ifriqa kontaktieren
Ifriqa Validator