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 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.
| Version | Year | Notes |
|---|---|---|
1.0 | 1999 | First Ariba release. |
1.1 | 2000 | Punchout and authentication-protocol expansion. |
1.2.x | 2001 → | Stable lineage, near-monthly increments. |
1.2.061 | 2024 | Version historically referenced by some integrators. |
1.2.069 | 2026 | Current version at xml.cxml.org/current/cXML.dtd. |
Use cases
- Punchout — the buyer fires a
<PunchOutSetupRequest>from its ERP; the supplier replies with aStartPageURL 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.dtdDTD, 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 DTDInvoiceDetail.dtd),<PaymentRemittanceRequest>for the remittance advice (DTDPaymentRemittance.dtd). - Quotes —
<QuoteRequest>and<QuoteMessage>for price requests (DTDQuote.dtd).
Tools
- cXML Validator —
validation against the
1.2.069DTD and tree inspection, 100% client-side (publication in progress).
Further reading
- xml.cxml.org/current/
— the reference DTDs:
cXML.dtd,Fulfill.dtd,InvoiceDetail.dtd,Catalog.dtd,PaymentRemittance.dtd,Quote.dtd. - cXML Reference Guide (PDF) — Ariba's user guide published on the historic portal.
- cXML License Agreement — conditions for redistributing the DTD itself.