ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

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 invoice-ubl-2.1.xml
<?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 UBLRôleÉquivalent EDIFACT
CatalogueCatalogue produits / tarifsPRICAT
OrderCommande d'achatORDERS
OrderResponseRéponse à commande (acceptation / modification)ORDRSP
DespatchAdviceAvis d'expéditionDESADV
ReceiptAdviceAccusé de réception de marchandisesRECADV
InvoiceFactureINVOIC
CreditNoteAvoirINVOIC (type 381)
StatementRelevé de compteSTATAC
ApplicationResponseStatut métier d'un document reçuAPERAK / 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

VersionAnnéeApport
UBL 1.02004Premiers documents (commande, facture).
UBL 2.02006Bibliothèque élargie à ~30 documents.
UBL 2.12013~65 documents, publiée comme ISO/IEC 19845:2015. La version de référence pour la facturation européenne.
UBL 2.22018Documents de passation de marchés (tender, ESPD).
UBL 2.32021Documents logistiques et de transport additionnels.
UBL 2.42024Extensions 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