ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.
cxml — data architecture in transit

cXML

Commerce eXtensible Markup Language. The open XML B2B procurement protocol published by Ariba in 1999 and now maintained by SAP Business Network.

What is cXML?

cXML is an XML protocol designed for indirect purchasing between a buyer platform (Ariba, Coupa, Jaggaer, OpenText) and its suppliers. Where EDIFACT and X12 express themselves as tagged segments separated by reserved characters, cXML borrows XML grammar: a document is a tree of nested elements, validated against an official DTD published by Ariba/SAP. It is today the reference format for punchout (catalogs hosted by the supplier, accessible from the buyer's ERP) and for the purely transactional flows that follow (order, confirmation, ship notice, invoice, payment).

cXML has not replaced EDIFACT or X12 on classical industrial orders — it complements them on the indirect procurement segment, where XML's ease of implementation, the Ariba/SAP ecosystem, and a web-first orientation made the difference.

Anatomy of a cXML document

Every cXML document carries the <cXML> root and nests two blocks: a <Header> identifying the three parties (<From>, <To>, <Sender>) via their <Credential>, then — depending on context — a <Request>, a <Response> or a <Message>. The From is the business issuer (the buyer for an order), the To is the business recipient (the supplier), and the Sender identifies the application transmitting the message — frequently a B2B gateway distinct from the From. A minimal didactic OrderRequest looks like this:

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+00: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+00:00"
                          type="new">
        <Total><Money currency="USD">19.98</Money></Total>
      </OrderRequestHeader>
      <ItemOut quantity="2" lineNumber="1">
        <ItemID><SupplierPartID>SKU-123</SupplierPartID></ItemID>
        <ItemDetail>
          <UnitPrice><Money currency="USD">9.99</Money></UnitPrice>
          <Description xml:lang="en">Black ballpoint pen</Description>
          <UnitOfMeasure>EA</UnitOfMeasure>
        </ItemDetail>
      </ItemOut>
    </OrderRequest>
  </Request>
</cXML>

Three attributes are required on the root: payloadID (globally unique identifier), timestamp (ISO 8601 with timezone) and version (the DTD version in use). The SYSTEM DTD (SYSTEM "…/cXML.dtd") points to the version against which the document validates.

Versions

cXML has followed a stable lineage since its publication. The current version embedded in the official DTD is 1.2.069 (the cxml.version entity in cXML.dtd). Note a minor documentary discrepancy: ediverse's first editorial roadmap referred to 1.2.061, the value immediately preceding the current one.

VersionYearNotes
1.01999First Ariba release.
1.12000Punchout and authentication-protocol expansion.
1.2.x2001 →Stable lineage, near-monthly increments.
1.2.0612024Version historically referenced by some integrators.
1.2.0692026Current version at xml.cxml.org/current/cXML.dtd.

Use cases

  • Punchout — the buyer fires a <PunchOutSetupRequest> from its ERP; the supplier replies with a StartPage URL where the user browses the hosted catalog; at checkout, the supplier posts back a <PunchOutOrderMessage> that returns the cart to the ERP, ready to be turned into a formal order.
  • Catalogs — catalog publication via the Catalog.dtd DTD, complementing or replacing punchout for suppliers with stable assortments.
  • Commercial transactions<OrderRequest> for the order, <ConfirmationRequest> for the acknowledgment, <ShipNoticeRequest> for the despatch advice, <InvoiceDetailRequest> for the invoice (dedicated DTD InvoiceDetail.dtd), <PaymentRemittanceRequest> for the remittance advice (DTD PaymentRemittance.dtd).
  • Quotes<QuoteRequest> and <QuoteMessage> for price requests (DTD Quote.dtd).

Tools

  • cXML Validator — validation against the 1.2.069 DTD and tree inspection, 100% client-side (publication in progress).

Further reading