CII Invoice (Factur-X / ZUGFeRD)
UN/CEFACT Cross Industry Invoice D16B — base format for Factur-X and ZUGFeRD
EN16931 profile · Factur-X 1.08 · XRechnung not included
Drag and drop your XML file here
or click to browse
XML only · 1 MB max · 20 transactions
Guided demo samples
Use these only to preview the diagnostics experience. Your own XML remains the main workflow.
Prefer downloads? valid XML or invalid XML
Files are processed in memory only — nothing is stored or transmitted to third parties.
Supported features
- +CII document type detection (CrossIndustryInvoice namespace)
- +Business hierarchy: CII format -> EN16931 profile -> Factur-X subprofiles
- +Profile ID validation (GuidelineSpecifiedDocumentContextParameter/ID)
- +Mandatory field checks (BR-02, BR-03, BR-04, BR-06, BR-07)
- +Invoice type code validation (UNTDID 1001)
- +Header totals, line totals, VAT totals and VAT basis consistency checks with actual/expected diagnostics
Current limitations
- −Full EN16931 Schematron rules validated by official-facturx-adapter (separate layer)
- −PDF/A-3 extraction and conformance checking not implemented (Phase 2)
- −XRechnung CII profile is planned but not implemented
- −UBL and Peppol are separate XML formats, not aliases of CII
Document structure
23 fields · 21 rules · 3 tables//*[local-name()='CrossIndustryInvoice']invoice.profileIdFactur-X Profile IDinvoice.idInvoice Numberinvoice.typeCodeDocument Type Codeinvoice.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.duePayableAmountDue Payable Amount//*[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 DateFields
23 defined| Identifier | Label | Type | Required |
|---|---|---|---|
invoice.profileId | Factur-X Profile ID | ID | ✓ |
invoice.id | Invoice Number | ID | ✓ |
invoice.typeCode | Document Type Code | 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 | Due Payable Amount | 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 | — |
Validation rules
21 rulesFX-PROF-001ERRORA CII invoice must specify a GuidelineSpecifiedDocumentContextParameter/ID (Factur-X profile identifier).
Factur-X Profile ID is required
FX-PROF-002ERRORThe Factur-X profile ID must be one of the recognised profile URNs (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 values)}
FX-HDR-001ERRORAn invoice shall have an invoice number (ExchangedDocument/ID). (EN16931 BR-02)
Invoice Number is required
FX-HDR-002ERRORAn invoice shall have an issue date (ExchangedDocument/IssueDateTime). (EN16931 BR-03)
Issue Date is required
FX-HDR-003ERRORAn invoice shall specify a document type code (ExchangedDocument/TypeCode). (EN16931 BR-04)
Document Type Code is required
FX-HDR-004ERRORThe invoice document type code must be one of the recognised UNTDID 1001 codes for Factur-X invoices.
Document Type Code is present
Document Type Code ∈ UNTDID 1001 document type codes allowed for Factur-X: {380, 381, 383, 384, 386, 389 ... (12 values)}
FX-SEL-001ERRORAn invoice shall contain the seller name (SellerTradeParty/Name). (EN16931 BR-06)
Seller Name is required
FX-BUY-001ERRORAn invoice shall contain the buyer name (BuyerTradeParty/Name). (EN16931 BR-07)
Buyer Name is required
FX-TOT-001ERRORThe header line total amount must equal the sum of all invoice line total amounts, with a tolerance of 0.01.
Sum of Line Net Amounts is present and Line Total Amount is present
Sum of Line Net Amounts = Σ line.lineTotal over line.lineTotal (±0.01)
FX-TOT-002ERRORThe grand total amount must equal the tax basis total amount plus the tax total amount, with a tolerance of 0.01.
Grand Total Amount (incl. VAT) is present and Tax Basis Total Amount (excl. VAT) is present and Tax Total Amount is present
Grand Total Amount (incl. VAT) = Tax Basis Total Amount (excl. VAT) + Tax Total Amount (±0.01)
FX-LIN-001ERROREach invoice line must have a line identifier (AssociatedDocumentLineDocument/LineID).
Line ID is required
FX-LIN-003ERROREach invoice line must state the billed quantity.
Billed Quantity is required
FX-LIN-004ERROREach invoice line must state the net unit price.
Net Unit Price is required
FX-VAT-001ERROREach VAT breakdown category code must be one of the recognised EN16931 VAT category codes.
VAT Category Code is present
VAT Category Code ∈ EN16931 VAT category codes: {S, Z, E, AE, K, G ... (9 values)}
FX-VAT-003ERRORThe tax total amount must equal the sum of VAT breakdown calculated amounts, with a tolerance of 0.01.
Tax Total Amount is present and VAT Calculated Amount is present
Tax Total Amount = Σ vat.calculatedAmount over vat.calculatedAmount (±0.01)
FX-VAT-004ERRORThe tax basis total amount must equal the sum of VAT breakdown basis amounts, with a tolerance of 0.01.
Tax Basis Total Amount (excl. VAT) is present and VAT Basis Amount is present
Tax Basis Total Amount (excl. VAT) = Σ vat.basisAmount over vat.basisAmount (±0.01)
FX-PROFILE-BASIC-001ERRORFactur-X 1.08 BASICThis validator is for the Factur-X BASIC profile; the invoice profile ID must be urn:factur-x.eu:1p0:basic.
Factur-X Profile ID is present
Factur-X Profile ID = "urn:factur-x.eu:1p0:basic"
FX-PROFILE-BASICWL-001ERRORFactur-X 1.08 BASIC-WLThis validator is for the Factur-X BASIC-WL profile; the invoice profile ID must be urn:factur-x.eu:1p0:basicwl.
Factur-X Profile ID is present
Factur-X Profile ID = "urn:factur-x.eu:1p0:basicwl"
FX-PROFILE-EN16931-001ERRORFactur-X 1.08 EN16931This validator is for the Factur-X EN16931 profile; the invoice profile ID must be urn:cen.eu:en16931:2017.
Factur-X Profile ID is present
Factur-X Profile ID = "urn:cen.eu:en16931:2017"
FX-PROFILE-EXTENDED-001ERRORFactur-X 1.08 EXTENDEDThis validator is for the Factur-X EXTENDED profile; the invoice profile ID must be urn:factur-x.eu:1p0:extended.
Factur-X Profile ID is present
Factur-X Profile ID = "urn:factur-x.eu:1p0:extended"
FX-PROFILE-MINIMUM-001ERRORFactur-X 1.08 MINIMUMThis validator is for the Factur-X MINIMUM profile; the invoice profile ID must be urn:factur-x.eu:1p0:minimum.
Factur-X Profile ID is present
Factur-X Profile ID = "urn:factur-x.eu:1p0:minimum"
Reference tables
3 listsRecognised Factur-X / ZUGFeRD profile URNs
facturx-profile-urnsUNTDID 1001 document type codes allowed for Factur-X
invoice-type-codesEN16931 VAT category codes
vat-category-codes