UBL — Universal Business Language
La bibliothèque XML universelle des documents commerciaux : facture, commande, avis d'expédition, catalogue… Une grammaire unique, libre de droits, sur laquelle reposent PEPPOL, la norme européenne EN 16931 et la majorité des systèmes nationaux de facturation électronique.
Qu'est-ce qu'UBL ?
UBL (Universal Business Language) est une bibliothèque de documents commerciaux XML standardisée par OASIS. Là où EDIFACT et X12 décrivent des messages à segments, UBL décrit des documents XML au vocabulaire explicite et lisible. Son ambition d'origine : fournir un jeu de documents royalty-free, réutilisable d'un secteur et d'un pays à l'autre, pour remplacer les formats propriétaires de l'e-commerce.
UBL ne se limite pas à la facture. La bibliothèque couvre l'ensemble du processus procure-to-pay et order-to-cash : catalogue, devis, commande, réponse à commande, avis d'expédition, accusé de réception, facture, avoir, relevé, rappel… Chaque document est un schéma XSD indépendant, mais tous partagent les mêmes briques élémentaires.
Les deux namespaces : cbc et cac
Toute la cohérence d'UBL tient dans deux espaces de noms réutilisés par chaque document :
-
cbc— Common Basic Components : les éléments simples, atomiques (un identifiant, une date, un montant, un code). Exemple :cbc:IssueDate,cbc:PayableAmount. -
cac— Common Aggregate Components : les éléments composés, qui regroupent d'autres composants (une partie, une adresse, une ligne de facture). Exemple :cac:AccountingSupplierParty,cac:InvoiceLine.
Cette séparation rend UBL hautement réutilisable : le composant
cac:Party (avec son nom, son adresse, ses identifiants fiscaux) est le
même dans une commande, un avis d'expédition et une facture. Apprendre les
composants une fois suffit à lire tous les documents.
Anatomie d'une facture UBL
Une facture UBL est un fichier XML dont la racine est <Invoice>.
L'en-tête déclare la version (cbc:UBLVersionID) et le profil sémantique
(cbc:CustomizationID) ; viennent ensuite les parties
(cac:AccountingSupplierParty / AccountingCustomerParty), les
totaux de TVA et monétaires, puis le détail des lignes.
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>
<cbc:ID>F-2026-00187</cbc:ID>
<cbc:IssueDate>2026-06-23</cbc:IssueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyName><cbc:Name>Atelier Marchand SARL</cbc:Name></cac:PartyName>
<cac:PostalAddress>
<cbc:CityName>Lyon</cbc:CityName>
<cac:Country><cbc:IdentificationCode>FR</cbc:IdentificationCode></cac:Country>
</cac:PostalAddress>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyName><cbc:Name>Coopérative Textile Nord</cbc:Name></cac:PartyName>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">432.00</cbc:TaxAmount>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">2160.00</cbc:LineExtensionAmount>
<cbc:PayableAmount currencyID="EUR">2592.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="MTR">120</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">2160.00</cbc:LineExtensionAmount>
<cac:Item><cbc:Name>Toile écrue 220 g/m²</cbc:Name></cac:Item>
<cac:Price><cbc:PriceAmount currencyID="EUR">18.00</cbc:PriceAmount></cac:Price>
</cac:InvoiceLine>
</Invoice>
On retrouve les deux namespaces partout : cbc pour les valeurs
simples, cac pour les regroupements. Un attribut currencyID
qualifie chaque montant, et chaque ligne (cac:InvoiceLine) porte sa
quantité, son article (cac:Item) et son prix unitaire.
La bibliothèque de documents
Les documents UBL les plus utilisés dans la chaîne commerciale :
| Document UBL | Rôle | Équivalent EDIFACT |
|---|---|---|
| Catalogue | Catalogue produits / tarifs | PRICAT |
| Order | Commande d'achat | ORDERS |
| OrderResponse | Réponse à commande (acceptation / modification) | ORDRSP |
| DespatchAdvice | Avis d'expédition | DESADV |
| ReceiptAdvice | Accusé de réception de marchandises | RECADV |
| Invoice | Facture | INVOIC |
| CreditNote | Avoir | INVOIC (type 381) |
| Statement | Relevé de compte | STATAC |
| ApplicationResponse | Statut métier d'un document reçu | APERAK / CONTRL |
CustomizationID, CIUS et extensions
UBL est volontairement permissif : la plupart de ses éléments
sont optionnels. Pour qu'un échange soit réellement interopérable, on restreint
UBL via une CIUS (Core Invoice Usage Specification) ou une
extension, signalée par cbc:CustomizationID :
- EN 16931 — le tronc sémantique européen :
urn:cen.eu:en16931:2017. Il impose les termes métier (BT-*) et les règles (BR-*) obligatoires. - PEPPOL BIS Billing 3.0 — une CIUS d'EN 16931 ajoutant les règles propres au réseau PEPPOL.
- CIUS nationales — la Serbie (SEF), l'Albanie, les Pays-Bas (SI-UBL / NLCIUS), Singapour (SG PEPPOL) ou le Danemark (OIOUBL) définissent chacun leur restriction d'UBL.
Versions
| Version | Année | Apport |
|---|---|---|
| UBL 1.0 | 2004 | Premiers documents (commande, facture). |
| UBL 2.0 | 2006 | Bibliothèque élargie à ~30 documents. |
| UBL 2.1 | 2013 | ~65 documents, publiée comme ISO/IEC 19845:2015. La version de référence pour la facturation européenne. |
| UBL 2.2 | 2018 | Documents de passation de marchés (tender, ESPD). |
| UBL 2.3 | 2021 | Documents logistiques et de transport additionnels. |
| UBL 2.4 | 2024 | Extensions sectorielles ; rétro-compatible 2.1. |
En pratique, l'écrasante majorité des intégrations e-invoicing 2026 ciblent UBL 2.1, car c'est la version sur laquelle EN 16931 et PEPPOL BIS sont alignés.
UBL dans son écosystème
UBL fournit la syntaxe ; d'autres couches fournissent le sens et le transport :
- Sémantique : EN 16931 définit les termes et règles métier que le XML UBL doit respecter.
- Réseau : PEPPOL transporte les documents UBL via AS4 sur son réseau à quatre coins.
- Alternative CII : Factur-X / ZUGFeRD utilise la syntaxe UN/CEFACT CII plutôt qu'UBL pour le même modèle EN 16931.
- Validation : le validateur PEPPOL vérifie un UBL contre les règles EN 16931 / PEPPOL.
Pour aller plus loin
- UBL 2.1 — OASIS Open Standard (publication 2013, copyright OASIS Open).
- ISO/IEC 19845:2015 — la transposition ISO d'UBL 2.1.
- PEPPOL BIS Billing 3.0 — l'implémentation européenne la plus diffusée d'UBL.