UN/CEFACT CII Invoice Viewer
CrossIndustryInvoiceOpen a UN/CEFACT Cross Industry Invoice — the syntax behind Factur-X and French e-invoicing — and read it as a document, alongside the raw XML and the parsed model.
Your document never leaves your device — the file is read and parsed in this browser tab.
Drop an XML document here, or choose a file
Read in your browser. Never uploaded. Up to 12.0 MB.
What this viewer does
A Cross Industry Invoice is dense. Element names such as SpecifiedTradeSettlementHeaderMonetarySummation and ApplicableHeaderTradeAgreement are precise but hard to read at speed, and the information you want is often four levels down. This tool resolves the document into the business objects underneath those names and shows them as an invoice, with the source and the parsed model one tab away.
CII is not UBL with different names
The two syntaxes express the same semantic model but arrange it differently, and this viewer does not pretend otherwise. A few of the real differences:
- VAT identifiers. UBL nests a
cac:TaxSchemeelement inside the party. CII usesram:SpecifiedTaxRegistrationwith aschemeIDofVAfor VAT orFCfor a local tax number. - Allowances and charges. UBL writes a boolean
cbc:ChargeIndicator. CII wraps it:ram:ChargeIndicatorcontains audt:Indicatorelement. - Due date. UBL has a header-level
cbc:DueDate. CII has none — the due date lives on the payment terms, asram:SpecifiedTradePaymentTerms/ram:DueDateDateTime. - Dates. UBL uses ISO calendar dates. CII uses a string plus a UN/EDIFACT format qualifier, so
20260615withformat="102"is 15 June 2026. - Currency. In UBL almost every amount carries
currencyID. In CII most amounts omit it and inheritram:InvoiceCurrencyCode.
Where a field genuinely means the same thing in both syntaxes it is mapped to a common model so the two viewers look alike. Where it does not, the difference is preserved and visible in the parsed data view.
Which UN/CEFACT release is my file?
The viewer deliberately declines to answer that. D16B, D22B and the other releases all use the namespace urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100. The release is a property of the schema a document was built against, not something recorded in the instance, so it cannot be read out of your file. What the viewer does show is the guideline identifier the document declares — for example urn:cen.eu:en16931:2017 or a Factur-X profile URN — which is a claim by the producer, not a verdict.
Namespaces, not prefixes
As with the UBL viewer, every element is resolved by namespace URI and local name. The rsm:, ram: and udt: prefixes are conventions; a conformant document may use any prefixes it likes and this viewer reads it identically.
Related reading
For the document structure see UN/CEFACT Cross Industry Invoice; for the hybrid PDF format built on it see Factur-X; and for the semantic model behind both syntaxes see EN 16931. If your file is UBL, use the UBL viewer.
Frequently asked questions
Is my invoice uploaded anywhere?
No. The file is read by your browser and parsed with the browser’s own XML parser. It is never sent to a server, never stored, and never included in analytics. Open your browser’s network panel while loading a file and you will see no request.
Is this D16B or D22B?
The viewer will not tell you, because the document does not say. Every UN/CEFACT release of the Cross Industry Invoice — D16B, D22B and others — uses the same namespace URI (…:CrossIndustryInvoice:100). The release is a property of the schema a document was built against, not something recorded inside the instance. Guessing it would be the exact kind of error that leads to validating a document against the wrong artefacts.
What is the difference between CII and Factur-X?
Factur-X is a PDF/A-3 file with a CII invoice embedded inside it as an attachment. The XML in a Factur-X file is a Cross Industry Invoice, so once extracted it opens in this viewer. The guideline identifier in the document declares which Factur-X profile — MINIMUM, BASIC WL, BASIC, EN 16931 or EXTENDED — the producer claims to follow.
Why does the viewer show both a raw and a normalised date?
CII writes dates as a string with a UN/EDIFACT format qualifier: 20260615 with format="102" means 15 June 2026. The viewer shows the normalised date for readability and the raw value beside it, so you can see what your file actually contains. If the qualifier is one the viewer does not interpret, it says so rather than guessing.
Why do most amounts have no currency attribute?
That is normal in CII. EN 16931 only requires currencyID on the tax total in the accounting currency; every other amount inherits ram:InvoiceCurrencyCode. The parsed data view records, per amount, whether the currency came from the element itself or from the document — which is often the detail you need when reconciling with a UBL equivalent.