DBC: cXML Punchout

cXML PunchOut Workflow Summary

The cXML PunchOut process allows a buyer’s procurement system (like Ariba, Coupa, or Jaggaer) to "punch out" to a supplier’s website to shop, then bring the cart back into their system to complete the purchase.

Main Steps:

  1. PunchOutSetupRequest
    • The buyer sends a PunchOutSetupRequest to the supplier.
    • The supplier responds with a login URL to start a session.
  2. PunchOut Shopping Session
    • The user is redirected to the supplier site (via the URL in the response).
    • The user shops and builds a cart.
  3. PunchOutOrderMessage
    • When the user "checks out", the supplier sends a PunchOutOrderMessage (the cart) back to the buyer's system.
  4. OrderRequest (optional)
    • If the buyer completes the order, they send an OrderRequest (purchase order) to the supplier.

📥 1. PunchOutSetupRequest (Buyer ➜ Supplier)

<cXML payloadID="123456" timestamp="2025-06-23T15:00:00">
  <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>
        <SharedSecret>mypassword</SharedSecret>
      </Credential>
      <UserAgent>MyERP</UserAgent>
    </Sender>
  </Header>
  <Request deploymentMode="production">
    <PunchOutSetupRequest operation="create">
      <BuyerCookie>cookie-abc-123</BuyerCookie>
      <BrowserFormPost>
        <URL>https://buyer-system.com/receiveCart</URL>
      </BrowserFormPost>
      <SupplierSetup>
        <URL>https://supplier.com/punchout</URL>
      </SupplierSetup>
      <ShipTo>
        <Address addressID="123">
          <Name xml:lang="en">Acme Corp</Name>
          <PostalAddress>
            <Street>1 Main St</Street>
            <City>Townsville</City>
            <State>CA</State>
            <PostalCode>12345</PostalCode>
            <Country isoCountryCode="US">United States</Country>
          </PostalAddress>
        </Address>
      </ShipTo>
    </PunchOutSetupRequest>
  </Request>
</cXML> 

📤 2. PunchOutOrderMessage (Supplier ➜ Buyer)

Sent when the user checks out from the supplier site. It contains the selected items.

<cXML payloadID="abc123" timestamp="2025-06-23T15:15:00">
  <Message>
    <PunchOutOrderMessage>
      <BuyerCookie>cookie-abc-123</BuyerCookie>
      <PunchOutOrderMessageHeader operationAllowed="create">
        <Total>
          <Money currency="USD">199.99</Money>
        </Total>
      </PunchOutOrderMessageHeader>
      <ItemIn quantity="1">
        <ItemID>
          <SupplierPartID>ABC-1001</SupplierPartID>
          <SupplierPartAuxiliaryID>SKU12345</SupplierPartAuxiliaryID>
        </ItemID>
        <ItemDetail>
          <UnitPrice>
            <Money currency="USD">199.99</Money>
          </UnitPrice>
          <Description xml:lang="en">Widget A</Description>
          <UnitOfMeasure>EA</UnitOfMeasure>
          <Classification domain="UNSPSC">12345678</Classification>
          <ManufacturerPartID>XYZ-001</ManufacturerPartID>
          <ManufacturerName>Acme</ManufacturerName>
        </ItemDetail>
      </ItemIn>
    </PunchOutOrderMessage>
  </Message>
</cXML 

🧾 3. OrderRequest (Buyer ➜ Supplier)

If the buyer submits an actual purchase order, this is sent outside of the PunchOut session.

<cXML payloadID="order123" timestamp="2025-06-23T15:30:00">
  <Request>
    <OrderRequest>
      <OrderRequestHeader orderID="PO-10001" orderDate="2025-06-23T15:30:00" type="new">
        <Total>
          <Money currency="USD">199.99</Money>
        </Total>
        <ShipTo>
          <Address addressID="123">
            <Name xml:lang="en">Acme Corp</Name>
            <PostalAddress>
              <Street>1 Main St</Street>
              <City>Townsville</City>
              <State>CA</State>
              <PostalCode>12345</PostalCode>
              <Country isoCountryCode="US">United States</Country>
            </PostalAddress>
          </Address>
        </ShipTo>
        <BillTo>
          <Address addressID="456">
            <Name xml:lang="en">Acme Billing</Name>
            <PostalAddress>
              <Street>100 Billing Rd</Street>
              <City>Townsville</City>
              <State>CA</State>
              <PostalCode>54321</PostalCode>
              <Country isoCountryCode="US">United States</Country>
            </PostalAddress>
          </Address>
        </BillTo>
      </OrderRequestHeader>
      <ItemOut quantity="1" lineNumber="1">
        <ItemID>
          <SupplierPartID>ABC-1001</SupplierPartID>
        </ItemID>
        <ItemDetail>
          <UnitPrice>
            <Money currency="USD">199.99</Money>
          </UnitPrice>
          <Description xml:lang="en">Widget A</Description>
          <UnitOfMeasure>EA</UnitOfMeasure>
        </ItemDetail>
      </ItemOut>
    </OrderRequest>
  </Request>
</cXML>
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.