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
/01
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.
/02
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.
/03
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.
/04
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.
/05
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.
/06 questions
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.
