Available now · Pro plan or above

Convert UN/CEFACT CII to UBL 2.1

Peppol network delivery (Belgium, Nordics, and most B2B receivers) expects UBL, not CII.

Deadline: Ongoing — required whenever a CII-native sender needs to reach a Peppol-only receiver.

Some ERPs (particularly SAP- and Sage-based back-ends common in France and Germany) produce CII natively. If a downstream receiver — most Peppol-network participants — only accepts UBL, you need syntax conversion, not just re-validation.

The conversion goes through the same canonical model as every other pair: parse the CII into every EN 16931 business term, then serialize as UBL. The result is validated against the official EN 16931 UBL Schematron before InvoiceHub returns it.

Try it

curl -X POST https://api.invoicehub.dev/api/v1/convert \
  -H "Authorization: Bearer ih_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"from": "UN_CEFACT_CII", "to": "UBL_2.1", "document": "<source document>"}'

Real UBL 2.1 output

Excerpt from actual, verified conversion output — not a mocked example.

<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" ...>
  <cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>
  <cbc:ID>INV-2026-0142</cbc:ID>
  <cbc:IssueDate>2026-06-19</cbc:IssueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
  <cac:AccountingSupplierParty>...</cac:AccountingSupplierParty>
  <cac:LegalMonetaryTotal>
    <cbc:PayableAmount currencyID="EUR">1190.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
  <cac:InvoiceLine>...</cac:InvoiceLine>
</Invoice>

Common validation errors

Get an API key

Free tier includes unlimited validation and UBL 2.1 generation. This conversion requires the Pro plan or above.

Other conversions