Dev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunitySubmit a ticketLog In
GitHubNuGetDev CommunitySubmit a ticket


This is article four in a series of five articles:

  1. PunchOut/cXML process and design

  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

  • <<product-name>> Session ID (that is SupplierPartAuxiliaryID)

## PunchOut order message cXML

The following is a sample PunchOut Order Message cXML:



## PunchOut order message data mapping

Below are the specific definitions around important cXML elements/attributes and their use by <<product-name>>:

<table class="TableStyle-Borders" style="margin-left: 0; margin-right: auto; width: 100%;" data-cellspacing="0"> <colgroup> <col style="width: 50%" /> <col style="width: 50%" /> </colgroup> <thead> <tr class="header TableStyle-Borders-Head-Header1"> <th colspan="2" class="TableStyle-Borders-HeadD-Regular-Header1"><p>Field Mapping: PunchOut Order Message cXML</p></th> </tr> <tr class="odd TableStyle-Borders-Head-Header1"> <th class="TableStyle-Borders-HeadE-Regular-Header1"><p>Element/Attribute</p></th> <th class="TableStyle-Borders-HeadD-Regular-Header1"><p>Use</p></th> </tr> </thead> <tbody> <tr class="odd TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;Header&gt;&lt;From&gt;&lt;Credential&gt;&lt;Identity&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>Represents the Client to which the Setup Request is sent. This will always be the Client's name</p></td> </tr> <tr class="even TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;Header&gt;&lt;To&gt;&lt;Credential&gt;&lt;Identity&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>Represents the Customer from which the Setup Request originated. From a business perspective, it will correlate with a client's Bill-To customer.</p> <p>This value will tie back to the Username field on a User record in the <<product-name>> platform.</p></td> </tr> <tr class="odd TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;Header&gt;&lt;Sender&gt;&lt;Credential&gt;&lt;Identity&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>Represents the system sending the message. From a process perspective, it will represent <<product-name>> sending the message.</p></td> </tr> <tr class="even TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;Header&gt;&lt;Sender&gt;&lt;UserAgent&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>The application sending the Setup Request.</p></td> </tr> <tr class="odd TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;Message&gt;&lt;PunchoutOrderMessage&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>The node needs to exist to alert the processor that this will be a PunchOut Order Message.</p></td> </tr> <tr class="even TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;...&gt;&lt;BuyerCookie&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>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.</p></td> </tr> <tr class="odd TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;...&gt;&lt;PunchoutOrderMessageHeader operationAllowed="edit"&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>Ensures that future Setup Requests against the same cart to edit or inspect it will be allowed.</p></td> </tr> <tr class="even TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;...&gt;&lt;PunchoutOrderMessageHeader&gt; &lt;Total&gt;&lt;Money&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>Cart total amount (that is summary of all line item unit prices and quantities)</p></td> </tr> <tr class="odd TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;...&gt;&lt;ItemIn quantity&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>The number of units ordered for the given line</p></td> </tr> <tr class="even TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;...&gt;&lt;ItemIn lineNumber&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>The line number of the cart</p></td> </tr> <tr class="odd TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;...&gt;&lt;ItemIn&gt;&lt;ItemID&gt;&lt;SupplierPartID&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>Client's ERP Part #</p></td> </tr> <tr class="even TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;...&gt;&lt;ItemIn&gt;&lt;ItemID&gt; &lt;SupplierPartAuxiliaryID&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>This is the <<product-name>> 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 <<product-name>> under the edit or inspect operation) to an existing cart that had already been created in <<product-name>>.</p></td> </tr> <tr class="odd TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;...&gt;&lt;ItemIn&gt;&lt;ItemDetail&gt;&lt;UnitPrice&gt; &lt;Money&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>The unit price attached to the given line/item</p></td> </tr> <tr class="even TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;...&gt;&lt;ItemIn&gt;&lt;ItemDetail&gt;&lt;Description&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>The <<product-name>> Short Description attached to the given line/item</p></td> </tr> <tr class="odd TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyE-Regular-Row1"><p>&lt;...&gt;&lt;ItemIn&gt;&lt;ItemDetail&gt;&lt;UnitOfMeasure&gt;</p></td> <td class="TableStyle-Borders-BodyD-Regular-Row1"><p>The Unit of Measure code attached to the given line/item</p></td> </tr> <tr class="even TableStyle-Borders-Body-Row1"> <td class="TableStyle-Borders-BodyB-Regular-Row1"><p>&lt;...&gt;&lt;ItemIn&gt;&lt;ItemDetail&gt;&lt;Classification domain="UNSPSC"&gt;</p></td> <td class="TableStyle-Borders-BodyA-Regular-Row1"><p>The UNSPSC value attached to the given line/item</p></td> </tr> </tbody> </table>