UBL vs CII: the two XML syntaxes of EN 16931
UBL 2.1 (OASIS) and UN/CEFACT CII are the two official XML syntaxes for EN 16931 invoices. Differences, adoption, and when each is used.
UBL and CII are the two XML syntaxes officially bound to the EN 16931 standard. They carry the same semantic data model (about 170 business terms) but differ in structure, origin and adoption.
Comparison
| Attribute | UBL 2.1 | UN/CEFACT CII |
|---|---|---|
| Publisher | OASIS | UN/CEFACT |
| EN 16931 binding | Standard Part 3 | Standard Part 2 |
| Structure | standalone XML elements | deeply nested (SCRDM) |
| Common in | Peppol BIS, many EU portals | ZUGFeRD/Factur-X, XRechnung CII |
| Data model | EN 16931 (identical) | EN 16931 (identical) |
Which syntax
The choice usually follows the target system: Peppol BIS requires UBL 2.1; ZUGFeRD/Factur-X always embeds CII. XRechnung allows both. Because both express the same EN 16931 model, lossless conversion between UBL and CII is generally possible.
How invowerk helps
invowerk reads and validates both syntaxes against EN 16931, explains every BR error code in plain language (see /codes) and converts between UBL and CII — handy when sender and recipient expect different syntaxes.