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.

Glissez-déposez votre fichier XML ici

ou parcourir

XML uniquement · 1 Mo max · 20 transactions

Exemples de démonstration

Utilisez-les uniquement pour prévisualiser l'expérience de diagnostic. Votre propre XML reste le flux de travail principal.

Préférez les téléchargements ? XML valide ou XML invalide

Les fichiers sont traités en mémoire uniquement — rien n'est stocké ni transmis à des tiers.

EN 16931 semantic model

Official Factur-X profiles

Readable diagnostics

No account required

Pas seulement de la validation XML

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.

CoucheCe que ça détecte
XSD / CII structureXML structure, required elements, data types
Règles EN 16931BR / 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

Profils supportés

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.

Diagnostics lisibles

ErreurExplication
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.

Guides & Référence

Référence technique

Structure du document

23 champs · 21 règles · 3 tables
▸
invoice[1..1]//*[local-name()='CrossIndustryInvoice']
◦invoice.profileIdFactur-X Profile ID
IDobligatoire
◦invoice.idInvoice Number
IDobligatoire
◦invoice.typeCodeCode type de document
CODEobligatoire
◦invoice.issueDateIssue Date
ISO_DATE_BASICobligatoire
◦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.duePayableAmountMontant exigible
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

Champs

23 définis
IdentifiantLibelléTypeObligatoire
invoice.profileIdFactur-X Profile IDID✓
invoice.idInvoice NumberID✓
invoice.typeCodeCode type de documentCODE✓
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.duePayableAmountMontant exigibleAMOUNT—
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—

Règles de validation

21 règles
FX-PROF-001ERROR

Une facture CII doit spécifier un GuidelineSpecifiedDocumentContextParameter/ID (identifiant de profil Factur-X).

Assertion

Factur-X Profile ID est obligatoire

FX-PROF-002ERROR

L'identifiant de profil Factur-X doit être l'un des URN de profil reconnus (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 valeurs)}

FX-HDR-001ERROR

Une facture doit comporter un numéro de facture (ExchangedDocument/ID). (EN16931 BR-02)

Assertion

Invoice Number est obligatoire

FX-HDR-002ERROR

Une facture doit comporter une date d'émission (ExchangedDocument/IssueDateTime). (EN16931 BR-03)

Assertion

Issue Date est obligatoire

FX-HDR-003ERROR

Une facture doit spécifier un code de type de document (ExchangedDocument/TypeCode). (EN16931 BR-04)

Assertion

Code type de document est obligatoire

FX-HDR-004ERROR

Le code de type de document de la facture doit être l'un des codes UNTDID 1001 reconnus pour les factures Factur-X.

Quand

Code type de document est présent

Assertion

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

FX-SEL-001ERROR

Une facture doit contenir le nom du vendeur (SellerTradeParty/Name). (EN16931 BR-06)

Assertion

Seller Name est obligatoire

FX-BUY-001ERROR

Une facture doit contenir le nom de l'acheteur (BuyerTradeParty/Name). (EN16931 BR-07)

Assertion

Buyer Name est obligatoire

FX-TOT-001ERROR

Le montant total des lignes en en-tête doit être égal à la somme des montants totaux de toutes les lignes de facture, avec une tolérance de 0,01.

Quand

Sum of Line Net Amounts est présent et Line Total Amount est présent

Assertion

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

FX-TOT-002ERROR

Le montant total TTC doit être égal au montant total hors taxe plus le montant total de la taxe, avec une tolérance de 0,01.

Quand

Grand Total Amount (incl. VAT) est présent et Tax Basis Total Amount (excl. VAT) est présent et Tax Total Amount est présent

Assertion

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

FX-LIN-001ERROR

Chaque ligne de facture doit comporter un identifiant de ligne (AssociatedDocumentLineDocument/LineID).

Assertion

Line ID est obligatoire

FX-LIN-003ERROR

Chaque ligne de facture doit indiquer la quantité facturée.

Assertion

Billed Quantity est obligatoire

FX-LIN-004ERROR

Chaque ligne de facture doit indiquer le prix unitaire net.

Assertion

Net Unit Price est obligatoire

FX-VAT-001ERROR

Chaque code de catégorie de TVA de la ventilation doit être l'un des codes de catégorie de TVA EN16931 reconnus.

Quand

VAT Category Code est présent

Assertion

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

FX-VAT-003ERROR

Le montant total de la taxe doit être égal à la somme des montants calculés de la ventilation de TVA, avec une tolérance de 0,01.

Quand

Tax Total Amount est présent et VAT Calculated Amount est présent

Assertion

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

FX-VAT-004ERROR

Le montant total hors taxe doit être égal à la somme des montants de base de la ventilation de TVA, avec une tolérance de 0,01.

Quand

Tax Basis Total Amount (excl. VAT) est présent et VAT Basis Amount est présent

Assertion

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

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

Ce validateur concerne le profil Factur-X BASIC ; l'identifiant de profil de la facture doit être urn:factur-x.eu:1p0:basic.

Quand

Factur-X Profile ID est présent

Assertion

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

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

Ce validateur concerne le profil Factur-X BASIC-WL ; l'identifiant de profil de la facture doit être urn:factur-x.eu:1p0:basicwl.

Quand

Factur-X Profile ID est présent

Assertion

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

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

Ce validateur concerne le profil Factur-X EN16931 ; l'identifiant de profil de la facture doit être urn:cen.eu:en16931:2017.

Quand

Factur-X Profile ID est présent

Assertion

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

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

Ce validateur concerne le profil Factur-X EXTENDED ; l'identifiant de profil de la facture doit être urn:factur-x.eu:1p0:extended.

Quand

Factur-X Profile ID est présent

Assertion

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

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

Ce validateur concerne le profil Factur-X MINIMUM ; l'identifiant de profil de la facture doit être urn:factur-x.eu:1p0:minimum.

Quand

Factur-X Profile ID est présent

Assertion

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

Tables de référence

3 listes

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 de plus

UNTDID 1001 document type codes allowed for Factur-X

invoice-type-codes
380381383384386389394395553575+2 de plus

EN16931 VAT category codes

vat-category-codes
SZEAEKGOLM

Conçu pour

  • 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
FonctionnalitéGratuitPayant
Single invoice validationOuiOui
XSD + EN 16931 diagnosticsOuiOui
Full business explanationPartielOui
JSON/API reportPreviewOui
Traitement par lot / ZIPNonOui
Profile-specific reportsLimitéOui
History / saved reportsNonOui
Accès APINonOui

Need batch validation or API access?

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

Contacter Ifriqa
Ifriqa Validator