PunchOut order message (that is cart information)

This is article four in a series of five articles:

  1. PunchOut/cXML Process and Design Overview
  2. PunchOut/cXML Configuration and Data Requirements
  3. PunchOut Setup Request and Response
  4. PunchOut Order Message (that is Cart Information)
  5. Order Request (that is Purchase Order)

The PunchOut Order Message is sent to the Customer's procurement system once the User chooses to complete their cart in the site. In addition to sending the cart information via cXML, this action also closes the User's site session.

The PunchOut Order Message cXML contains the following:

  • Customer that the cart is being sent to
  • Unique request ID used to tie together original Setup Request (that is Buyer Cookie)
  • Cart total
  • Line item data: Line #, Client's Product ERP #, Quantity, Short Description, Unit Price, Unit of Measure, UNSPSC
  • ISC Session ID (that is SupplierPartAuxiliaryID)

PunchOut order message cXML

The following is a sample PunchOut Order Message cXML:

            <?xml version="1.0"?>
<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.2.011/cXML.dtd">
<cXML payloadID="[email protected]" timestamp="2013-03-26T11:06:56-05:00" xml:lang="en-US">
  <Header>
    <From>
      <Credential domain="NetworkId">
        <Identity>ClientName</Identity>
      </Credential>
    </From>
    <To>
      <Credential domain="DUNS">
        <Identity>PunchOutCustomer_ISCUserName</Identity>
      </Credential>
    </To>
    <Sender>
      <Credential domain="UserSiteNetworkUserId">
        <Identity>www.ClientSite.com</Identity>
      </Credential>
      <UserAgent>www.ClientSite.com<UserAgent>
    </Sender>
  </Header>
  <Message>
    <PunchoutOrderMessage>
      <BuyerCookie>34234234ADFSDF234234</BuyerCookie>
      <PunchoutOrderMessageHeader operationAllowed="edit">
        <Total>
          <Money currency="USD">44.00</Money>
        </Total>
      </PunchoutOrderMessageHeader>
      <ItemIn quantity="1" lineNumber="1">
        <ItemID>
          <SupplierPartID>[Client Initials] Material Number 1</SupplierPartID>
          <SupplierPartAuxiliaryID>ISCPunchOutSessionId</SupplierPartAuxiliaryID>
        </ItemID>
        <ItemDetail>
          <UnitPrice>
            <Money currency="USD">20.00</Money>
          </UnitPrice>
          <Description xml:lang="en">ISC ShortDescription 1</Description>
          <UnitOfMeasure>EA</UnitOfMeasure>
          <Classification domain="UNSPSC">24122002</Classification>
        </ItemDetail>
      </ItemIn>
      <ItemIn quantity="2" lineNumber="2">
        <ItemID>
          <SupplierPartID>[Client Initials] Material Number 2</SupplierPartID>
          <SupplierPartAuxiliaryID>ISCPunchOutSessionId</SupplierPartAuxiliaryID>
        </ItemID>
        <ItemDetail>
          <UnitPrice>
            <Money currency="USD">12.00</Money>
          </UnitPrice>
          <Description xml:lang="en">ISC ShortDescription 2</Description>
          <UnitOfMeasure>EA</UnitOfMeasure>
          <Classification domain="UNSPSC">24122002</Classification>
        </ItemDetail>
      </ItemIn>
    </PunchoutOrderMessage>
  </Message>
</cXML>

PunchOut order message data mapping

Below are the specific definitions around important cXML elements/attributes and their use by ISC:

Field mapping: PunchOut order message cXML

Element/Attribute

Use

<Header><From><Credential><Identity>

Represents the Client to which the Setup Request is sent. This will always be the Client's name

<Header><To><Credential><Identity>

Represents the Customer from which the Setup Request originated. From a business perspective, it will correlate with a client's Bill-To customer.

This value will tie back to the Username field on a User record in the B2B platform.

<Header><Sender><Credential><Identity>

Represents the system sending the message. From a process perspective, it will represent B2B sending the message.

<Header><Sender><UserAgent>

The application sending the Setup Request.

<Message><PunchoutOrderMessage>

The node needs to exist to alert the processor that this will be a PunchOut Order Message.

<...><BuyerCookie>

The data that allows the Customer's Procurement System to tie together multiple outstanding PunchOut requests. Ties back to the original Setup Request BuyerCookie value.

<...><PunchoutOrderMessageHeader operationAllowed="edit">

Ensures that future Setup Requests against the same cart to edit or inspect it will be allowed.

<...><PunchoutOrderMessageHeader> <Total><Money>

Cart total amount (that is summary of all line item unit prices and quantities)

<...><ItemIn quantity>

The number of units ordered for the given line

<...><ItemIn lineNumber>

The line number of the cart

<...><ItemIn><ItemID><SupplierPartID>

Client's ERP Part #

<...><ItemIn><ItemID> <SupplierPartAuxiliaryID>

This is the B2B PunchOut Session ID that is unique to the given cart. The same value is assigned to each line in the cart message. This data will be used to tie back a new PunchOut Setup Request (coming to B2B under the edit or inspect operation) to an existing cart that had already been created in ISC.

<...><ItemIn><ItemDetail><UnitPrice> <Money>

The unit price attached to the given line/item

<...><ItemIn><ItemDetail><Description>

The B2B Short Description attached to the given line/item

<...><ItemIn><ItemDetail><UnitOfMeasure>

The Unit of Measure code attached to the given line/item

<...><ItemIn><ItemDetail><Classification domain="UNSPSC">

The UNSPSC value attached to the given line/item