cXML en un minuto
cXML se creó a finales de los años noventa, originalmente por Ariba, para que los sistemas de compras y los proveedores intercambiaran documentos comerciales en un formato común. Se publica en cxml.org como un conjunto de tipos de documentos XML con una DTD pública, y sigue siendo el lenguaje utilizado por la mayoría de los sistemas de compras cloud.
Todos los documentos cXML tienen la misma estructura: un sobre con un payloadID y una marca temporal, un Header que indica quién lo envía, a quién y con qué credenciales, y después un Request, un Response o un Message con el contenido comercial.
cXML frente a XML
| XML | cXML | |
|---|---|---|
| Qué es | Un formato general para datos estructurados | Un conjunto específico de documentos XML para compras |
| Reglas | Cualquier esquema que defina | DTD fija publicada en cxml.org |
| Utilizado para | Cualquier ámbito | PunchOut, pedidos, confirmaciones, avisos de envío y facturas |
Los mensajes cXML que recibe un proveedor
| Mensaje | Qué hace | En PunchOut Rocket |
|---|---|---|
| PunchOutSetupRequest | El cliente abre su tienda | Sí |
| PunchOutOrderMessage | El carrito vuelve al cliente | Sí |
| OrderRequest | Pedido de compra aprobado | Plan Premium |
| ConfirmationRequest | Confirmación de pedido | Opción OC & ASN |
| ShipNoticeRequest | Aviso de envío (ASN) | Opción OC & ASN |
| InvoiceDetailRequest | Factura | Bajo petición |
Para PunchOut, los tres primeros son los relevantes: abren la sesión, devuelven el carrito y entregan el pedido. Las confirmaciones, avisos de envío y facturas son flujos independientes que algunos clientes exigen tras la puesta en marcha: PunchOut Rocket importa pedidos de compra con el plan Premium, envía confirmaciones y avisos de envío con su opción OC & ASN y presupuesta las facturas bajo petición.
Ejemplo · PunchOutSetupRequest (abreviado)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.069/cXML.dtd">
<cXML payloadID="1729332000.4711@buyer.example.com" timestamp="2026-10-19T10:00:00+02:00">
<Header>
<From><Credential domain="NetworkID"><Identity>AN01000000001</Identity></Credential></From>
<To><Credential domain="NetworkID"><Identity>AN01000000002</Identity></Credential></To>
<Sender>
<Credential domain="NetworkID">
<Identity>AN01000000001</Identity>
<SharedSecret>••••••••</SharedSecret>
</Credential>
<UserAgent>Buyer procurement system</UserAgent>
</Sender>
</Header>
<Request>
<PunchOutSetupRequest operation="create">
<BuyerCookie>8f2c41d0a9</BuyerCookie>
<BrowserFormPost><URL>https://buyer.example.com/punchout/return</URL></BrowserFormPost>
<SupplierSetup><URL>https://gateway.example.com/setup</URL></SupplierSetup>
</PunchOutSetupRequest>
</Request>
</cXML>Credenciales y shared secrets
Cada documento cXML incluye tres credenciales en su cabecera: From (de quién procede), To (a quién se dirige) y Sender (el sistema que lo envía realmente, con un SharedSecret). En SAP Business Network las identidades son Ariba Network ID (ANID); otros sistemas utilizan números DUNS o identificadores propios. El shared secret se acuerda con el cliente y nunca debe aparecer en emails ni capturas de pantalla.
¿Qué es un catálogo cXML?
El término se utiliza para dos cosas distintas:
Catálogo estático (CIF o índice cXML)
Un archivo que carga en el sistema del cliente. Los precios y artículos no cambian hasta la siguiente carga.
Catálogo PunchOut
El cliente abre su tienda en tiempo real mediante cXML. Los precios, existencias y configuraciones siempre están actualizados.
Siguiente: comparativa entre cXML y OCI de SAP.
PunchOut en la tienda que ya tiene
PunchOut Rocket conecta WooCommerce, Magento, PrestaShop y nopCommerce con SAP Ariba, Coupa y SAP mediante cXML u OCI. Desde 163 €/mes por sitio, prueba gratuita de 30 días.