cXML

commerce eXtensible Markup Language · since 1999

cXML (commerce eXtensible Markup Language) is an XML-based protocol for exchanging procurement documents between procurement systems and suppliers. Ariba published it in 1999, and it has belonged to SAP since SAP acquired Ariba in 2012; the specification is freely available on cxml.org. cXML covers the punchout (PunchOutSetupRequest, PunchOutOrderMessage), the purchase order (OrderRequest), the order confirmation, the ship notice and the invoice, among others.

Last updated:

Publisher
Ariba (1999), now SAP
Current version
1.2, continually revised
Transfer
XML documents by HTTPS POST
Buyer systems
SAP Ariba, Coupa, Jaggaer, Oracle iProcurement and many more
Related
Punchout, SAP OCI

Structure of a cXML document

Every cXML document starts with the cXML element, which carries a unique payloadID and a timestamp. The header names sender and receiver (From, To, Sender) with their identities, such as an Ariba Network ID, and holds the shared secret (SharedSecret) the sender authenticates with. Below it comes either a Request, which the receiver answers with a Response and a status code, or a Message, which needs no answer.

Punchout with cXML

For a punchout, the procurement system sends a PunchOutSetupRequest to the supplier's shop. It contains a BuyerCookie that identifies the session and the BrowserFormPost address for the return. The shop answers with a PunchOutSetupResponse, whose StartPage URL the buyer's browser opens.

When shopping is done, the browser posts the cart as a PunchOutOrderMessage to the BrowserFormPost address, in the form field cxml-urlencoded or cxml-base64. Each item appears there as an ItemIn with part number (SupplierPartID), quantity, price, unit and description.

Order, confirmation, shipping, invoice

The procurement system sends the approved order to the supplier as an OrderRequest over HTTPS, and the supplier confirms receipt with a Response. The supplier can then send back an order confirmation (ConfirmationRequest), a ship notice (ShipNoticeRequest) and an invoice (InvoiceDetailRequest). That way cXML covers the process from catalog to invoice in one standard.

cXML, SAP OCI, openTRANS and IDoc

SAP OCI covers only the catalog call and the return of the cart, as form fields. cXML covers the punchout and the documents that follow it together. openTRANS and IDoc ORDERS05 are order formats like cXML: openTRANS is an open standard that matches the BMEcat catalog format, IDoc ORDERS05 the format in which SAP systems send purchase orders.

cXML with orcamultimedia and punchout.dev

orcamultimedia implements cXML in three interfaces: cXML Punchout Transaction for procurement systems such as Coupa, Jaggaer and Oracle iProcurement, SAP Ariba PunchOut with Level 2, and cXML Purchase Order for incoming orders. punchout.dev offers cXML punchout without a plugin, through a single script tag.

Who uses cXML?

cXML is used by procurement systems such as SAP Ariba, Coupa, Jaggaer and Oracle iProcurement, and by the suppliers connected to these systems.

Is cXML the same as PunchOut?

cXML is not the same as PunchOut: PunchOut is the procedure in which the buyer switches from their procurement system to the supplier's shop, and cXML is one of the protocols for it. cXML also describes the purchase order, order confirmation, ship notice and invoice.

Which cXML version is current?

cXML is continually revised within the 1.2 version series; a new release changes details, not the structure. The specification and the DTDs of every version are on cxml.org.

Contact

Questions about your integration?

Get in touch and request detailed information. Or open the sandbox and try it yourself.