CII D16B EN 16931 Factur-X

Cross-Industry Invoice (CII) XML Validator

Check your UN/CEFACT CII XML against the EN 16931 schema and business rules instantly.

Drag and drop your invoices here, or click to browse.

Why validate your CII XML here?

Catch schema and business-rule errors before your invoice reaches a Plateforme Agréée or your trading partner.

CII D16B Schema Check

We validate your XML against the UN/CEFACT Cross-Industry Invoice D16B XSD, catching structural and data-type errors first.

200+ EN 16931 Business Rules

The full European Schematron rule set runs against your invoice, including VAT arithmetic, mandatory fields, and category constraints.

Automatic Profile Detection

We detect your profile (MINIMUM, BASIC WL, BASIC, EN 16931, or EXTENDED) and apply exactly the rules that profile requires.

Factur-X & ZUGFeRD Ready

CII is the structured payload inside both Factur-X and ZUGFeRD, so a file that passes here is ready to embed in a compliant hybrid PDF.

How It Works

Validate your Cross-Industry Invoice XML in three simple steps.

Step 1

Upload Your CII XML

Drag and drop your standalone CII XML file into the validator. You can also drop a Factur-X or ZUGFeRD PDF and we will validate its embedded CII.

Step 2

Schema & Schematron Validation

We validate your XML against the CII D16B XSD, then run the full EN 16931 Schematron business-rule set for the detected profile.

Step 3

Get Your Report

See a detailed pass/fail report with the exact business term (BT) and rule ID for every issue, so you can fix your XML before submission.

Frequently Asked Questions

Everything you need to know about validating Cross-Industry Invoice XML.

CII stands for Cross-Industry Invoice, the XML syntax defined by UN/CEFACT. It is one of the two syntaxes (alongside UBL) accepted by the EN 16931 European e-invoicing standard, and it is the structured payload embedded inside every Factur-X and ZUGFeRD hybrid PDF.
We validate against the UN/CEFACT CII D16B XSD schema and the full EN 16931 Schematron rule set, covering all Factur-X and ZUGFeRD profiles from MINIMUM through EXTENDED.
Yes. This validator is built for standalone CII XML. You can also upload a Factur-X or ZUGFeRD PDF and we will extract and validate the embedded CII automatically.
You'll receive a detailed report listing every rule violation, the affected business term (BT), and a clear description of how to fix each issue in your XML.
Basic validation is free for up to 10 invoices at a time. Premium users unlock advanced strictness levels, Chorus Pro-specific rules, and batch processing.
An error is a blocking violation: the file is non-compliant and will be rejected by a Plateforme Agréée or your trading partner's system. A warning is an advisory finding that does not block compliance but flags a best-practice deviation. Your file can pass with warnings but not with errors.

CII is one of the two XML syntaxes the EN 16931 standard accepts. Cross-Industry Invoice (CII) is the UN/CEFACT syntax that sits at the heart of Factur-X and ZUGFeRD. When you generate a hybrid invoice, it is the CII XML, not the PDF page, that a Plateforme Agréée (PDP), Chorus Pro, or your trading partner's accounting system actually reads. Validating that XML before you send it is the single most reliable way to avoid a silent rejection after transmission.


What the CII validator checks

A CII invoice must pass two distinct compliance layers. Our validator runs both automatically and reports each result separately, so you can see exactly where a file falls short.

CII D16B XSD schema - validates the XML against the UN/CEFACT Cross-Industry Invoice D16B schema. This catches structural problems first: missing required elements, incorrect data types in monetary or quantity amounts, malformed date formats (CII dates use format code 102, i.e. YYYYMMDD), and namespace declaration errors. A file that fails the schema can never pass the business rules, so this layer runs before anything else.

EN 16931 Schematron: 200+ business rules - this is where most rejections originate. The rules check VAT arithmetic consistency (BR-CO-14: invoice total VAT must equal the sum of all VAT category amounts), category-specific constraints (BR-S-08: standard-rate lines must carry a rate greater than zero), mandatory fields (BR-01: specification identifier, BR-06: seller name), and payment rules (BR-61: IBAN required when the payment means code is 30 or 58). The specification identifier in your XML declares the profile (MINIMUM, BASIC WL, BASIC, EN 16931, or EXTENDED), and that profile decides which rules are mandatory versus optional.


Common CII validation errors, and what they mean

These are the rule violations we see most frequently on CII XML. If your file fails, one of these is likely the cause.

BR-01 - Specification identifier missing
The GuidelineSpecifiedDocumentContextParameter/ID element is absent or empty. Every CII invoice must declare its EN 16931 profile identifier (for example urn:cen.eu:en16931:2017 or a Factur-X URN such as urn:factur-x.eu:1p0:en16931). Without it the validator cannot decide which profile rules to apply and rejects the file immediately.

BR-CO-14 - VAT total does not match VAT breakdown
The invoice total VAT amount does not equal the sum of all VAT category breakdown amounts. This typically fires when rounding differences between line-level and header-level VAT create a discrepancy of even one cent. Compute the header VAT totals from the breakdown rather than independently.

BR-S-08 - Standard-rate VAT line has zero rate
An invoice line declares VAT category code S (standard rate) but carries a 0% rate. If zero rate is intended, use category code Z (zero-rated) or E (exempt) instead.

BR-AE-05 - Reverse charge line has non-zero VAT rate
When VAT category AE (reverse charge / autoliquidation) is used, the rate must be exactly zero: the buyer is responsible for reporting the tax.

XSD - Invalid date format
A date element carries a format attribute other than 102, or a value that is not a valid YYYYMMDD string. CII represents dates as a DateTimeString with format 102, which is stricter than the ISO format used in UBL.

XSD - Element out of sequence
CII is order-sensitive: child elements must appear in the exact sequence the schema defines. An element placed before a sibling it should follow will fail the XSD even when every value is correct. This is one of the most common surprises when hand-building CII XML.


CII, Factur-X and ZUGFeRD: how they relate

Factur-X (France) and ZUGFeRD (Germany) are not separate XML formats: they are the same CII XML wrapped inside a PDF/A-3b container. A CII file that validates here is exactly what you embed to produce a compliant hybrid invoice for either standard. If you have a standalone CII XML, validate it first, then embed it; if you already have a hybrid PDF, drop it here and we will extract and validate the embedded CII for you.

CII is also one of the two syntaxes Peppol BIS Billing 3.0 supports, alongside UBL. If you need to move between syntaxes, validating the CII first guarantees a clean source before conversion.

Ready for 2026 e-invoicing?

Make every invoice compliant, in one message

Sign up to unlock unlimited tools, selectable compliance profiles and every premium feature.

EN 16931 & PDF/A-3b compliant Results in seconds No installation Data never stored
3 free uses per day · No card required