CII (Cross Industry Invoice)
UN/CEFACT XML syntax for invoices — one of the two accepted formats for EN 16931-compliant e-invoices and the technical foundation of ZUGFeRD.
Also known as: UN/CEFACT CII, Cross Industry Invoice, CrossIndustryInvoice
Short definition
CII (Cross Industry Invoice) is an XML syntax for invoices published by UN/CEFACT — the UN body for trade and economic standards. CII is designed to be cross-industry: one syntax that works for manufacturing, trade, the public sector and services alike.
Together with UBL, CII forms the technical foundation of the European standard EN 16931 for e-invoices.
Structure of a CII document
A CII document has three main sections under the root element CrossIndustryInvoice:
<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100">
<rsm:ExchangedDocumentContext>
<!-- profile, business process -->
</rsm:ExchangedDocumentContext>
<rsm:ExchangedDocument>
<!-- invoice number, date, type -->
</rsm:ExchangedDocument>
<rsm:SupplyChainTradeTransaction>
<!-- line items, contract data, payment terms -->
</rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>
The actual structure is noticeably more nested than UBL — CII consistently uses typed namespaces (ram:, udt:, qdt:) and separates document context from the underlying business transaction.
CII vs. UBL
Both syntaxes carry the same Business Term (BT) fields from EN 16931 — they are equivalent in content. Differences:
| CII | UBL | |
|---|---|---|
| Publisher | UN/CEFACT | OASIS |
| Style | verbose, strongly typed | flatter, tag-oriented |
| Commonly used in | DE/AT/CH, France | Benelux, Nordics, Peppol |
| Basis for | ZUGFeRD, Factur-X | Peppol BIS Billing 3.0 |
Where CII is used
- ZUGFeRD (all versions) and Factur-X — the embedded XML in hybrid PDFs is CII
- XRechnung — CII is one of the two accepted syntaxes
- Peppol — technically possible, in practice almost always UBL
Generating CII invoices with the Dokmatiq API
curl -X POST https://api.dokmatiq.com/v1/einvoice/xrechnung \
-H "Authorization: Bearer $DOKMATIQ_KEY" \
-H "Content-Type: application/json" \
-d '{
"syntax": "CII",
"invoice": { "id": "2026-0042", "issueDate": "2026-04-17", ... }
}'
The API returns EN 16931-compliant CII XML validated against the official Schematron. If UBL is required, switch to "syntax": "UBL" — the semantic definition stays identical, only the XML mapping differs.
Common pitfalls
- BT fields incomplete — CII is strongly typed and missing mandatory fields surface immediately during validation
- Missing namespace prefixes — many parsers only accept the official prefixes (
rsm:,ram:,udt:,qdt:) - Profile confusion — the CII in ZUGFeRD MINIMUM carries fewer fields than EN 16931, even though the structure looks the same
Ready to use it via API?
Get started for free. No credit card. 100 documents per month included.