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.
cxml — architecture de données en transit

cXML

Commerce eXtensible Markup Language. Le protocole XML open du procurement B2B publié par Ariba en 1999 et maintenu aujourd'hui par SAP Business Network.

Qu'est-ce que cXML ?

cXML est un protocole XML conçu pour l'achat indirect entre une plateforme acheteuse (Ariba, Coupa, Jaggaer, OpenText) et ses fournisseurs. Là où EDIFACT ou X12 s'expriment en segments tagués séparés par des caractères réservés, cXML emprunte la grammaire XML : un document est un arbre d'éléments imbriqués, validé contre un DTD officiel publié par Ariba/SAP. C'est aujourd'hui le format de référence pour le punchout (catalogues hébergés chez le fournisseur, accessibles depuis l'ERP de l'acheteur) et pour les flux purement transactionnels qui le suivent (commande, confirmation, expédition, facture, paiement).

cXML n'a pas remplacé EDIFACT ou X12 sur les commandes classiques entre industriels — il les complète sur le segment du procurement indirect où la facilité d'implémentation XML, l'écosystème Ariba/SAP et l'orientation web ont fait la différence.

Anatomie d'un document cXML

Tout document cXML porte la racine <cXML> et imbrique deux blocs : un <Header> qui identifie les trois parties prenantes (<From>, <To>, <Sender>) avec leurs <Credential>, puis selon le contexte un <Request>, un <Response> ou un <Message>. Le From est l'émetteur métier (l'acheteur pour une commande), le To est le destinataire métier (le fournisseur), et le Sender identifie l'application qui transmet techniquement le message — souvent une passerelle B2B distincte du From. Voici un OrderRequest didactique minimal :

xml order-request.cxml.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.069/cXML.dtd">
<cXML payloadID="260513.acme.0001@buyer.example"
      timestamp="2026-05-13T14:30:00+02:00"
      version="1.2.069">
  <Header>
    <From>
      <Credential domain="DUNS"><Identity>123456789</Identity></Credential>
    </From>
    <To>
      <Credential domain="DUNS"><Identity>987654321</Identity></Credential>
    </To>
    <Sender>
      <Credential domain="DUNS"><Identity>123456789</Identity></Credential>
      <UserAgent>ediverse-example/1.0</UserAgent>
    </Sender>
  </Header>
  <Request>
    <OrderRequest>
      <OrderRequestHeader orderID="PO78901"
                          orderDate="2026-05-13T14:30:00+02:00"
                          type="new">
        <Total><Money currency="EUR">19.98</Money></Total>
      </OrderRequestHeader>
      <ItemOut quantity="2" lineNumber="1">
        <ItemID><SupplierPartID>SKU-123</SupplierPartID></ItemID>
        <ItemDetail>
          <UnitPrice><Money currency="EUR">9.99</Money></UnitPrice>
          <Description xml:lang="fr">Stylo bille noir</Description>
          <UnitOfMeasure>EA</UnitOfMeasure>
        </ItemDetail>
      </ItemOut>
    </OrderRequest>
  </Request>
</cXML>

Trois attributs sont obligatoires sur la racine : payloadID (identifiant unique mondialement), timestamp (ISO 8601 avec fuseau) et version (la version de DTD utilisée). Le DTD système (SYSTEM "…/cXML.dtd") pointe la version par laquelle valider le document.

Versions

cXML a suivi une lignée stable depuis sa publication. La version courante embarquée dans le DTD officiel est 1.2.069 (entité cxml.version de cXML.dtd). À noter une légère discordance documentaire : la première feuille de route éditoriale d'ediverse mentionnait 1.2.061, qui était la valeur immédiatement précédente.

VersionAnnéeNotes
1.01999Première publication par Ariba.
1.12000Élargissement du punchout et des protocoles d'authentification.
1.2.x2001 →Lignée stable, incréments quasi-mensuels.
1.2.0612024Version pointée historiquement par certains intégrateurs.
1.2.0692026Version courante de xml.cxml.org/current/cXML.dtd.

Cas d'usage

  • Punchout — l'acheteur lance un <PunchOutSetupRequest> depuis son ERP ; le fournisseur répond avec une StartPage URL où l'utilisateur navigue dans le catalogue hébergé ; au checkout, le fournisseur poste un <PunchOutOrderMessage> qui rapatrie le panier dans l'ERP, prêt à être transformé en commande formelle.
  • Catalogues — publication de catalogues via le DTD Catalog.dtd, en complément ou en remplacement du punchout pour les fournisseurs au catalogue stable.
  • Transactionnel commercial<OrderRequest> pour la commande, <ConfirmationRequest> pour l'accusé, <ShipNoticeRequest> pour l'avis d'expédition, <InvoiceDetailRequest> pour la facture (DTD dédié InvoiceDetail.dtd), <PaymentRemittanceRequest> pour l'avis de paiement (DTD PaymentRemittance.dtd).
  • Devis<QuoteRequest> et <QuoteMessage> pour les demandes de prix (DTD Quote.dtd).

Outils

  • Validateur cXML — validation contre le DTD 1.2.069 et inspection de l'arbre, 100% client-side (en cours de publication).

Pour aller plus loin