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 2.1 OASIS Universal Business Language; XML syntax for EN 16931
CII UN/CEFACT Cross Industry Invoice (D16B); XML syntax for EN 16931
Both bound to EN 16931 Yes — officially bound in Part 2 (CII) and Part 3 (UBL) of the standard
Typical use UBL: Peppol, many EU portals; CII: ZUGFeRD/Factur-X embedding

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.