The PunchOutSetupRequest payload initiates a punchout session to your eCommerce platform. For standard integrations that receive cXML payloads, the TradeCentric platform transforms the buyer's PunchOutSetupRequest into our standard cXML format. Then, our platform delivers the payload to your endpoint.
For punchout sessions to start successfully, your eCommerce platform must accept our standard cXML format and respond with a start URL. This article describes the standard cXML request and response formats.
Jump to:
Request payload (from TradeCentric)
The code block below shows an example PunchOutSetupRequest payload in our standard cXML format:
<?xml version="1.0"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd">
<cXML payloadID="ABCD1234efg567@buyer.com" timestamp="2025-09-25T00:00:00Z">
<Header>
<From>
<Credential domain="DUNS">
<Identity>BuyerID</Identity>
</Credential>
</From>
<To>
<Credential domain="NetworkID">
<Identity>SupplierID</Identity>
</Credential>
</To>
<Sender>
<Credential domain="NetworkID">
<Identity>Buyer Corp.</Identity>
<SharedSecret>password</SharedSecret>
</Credential>
<UserAgent>TradeCentric PunchOut</UserAgent>
</Sender>
</Header>
<Request deploymentMode="production">
<PunchOutSetupRequest operation="create">
<!-- Unique session identifier -->
<BuyerCookie>SESSION-123456</BuyerCookie>
<!-- Standard extrinsic field, if applicable -->
<Extrinsic name="unique">contact.name</Extrinsic>
<!-- Custom extrinsic fields -->
<Extrinsic name="pos">ABCD1234efg567</Extrinsic>
<Extrinsic name="organisation_name">Buyer Corp.</Extrinsic>
<Extrinsic name="organisation_id">123</Extrinsic>
<!-- Where to send PunchOut response -->
<BrowserFormPost>
<URL>https://connect.tradecentric.com/gateway/link/api/id/ABCD1234efg567</URL>
</BrowserFormPost>
<!-- Buyer contact info -->
<Contact role="endUser">
<Name xml:lang="en">Contact Name</Name>
<Email>contact@buyer.com</Email>
</Contact>
<!-- Shipping address -->
<ShipTo>
<Address addressID="Main" isoCountryCode="US">
<Name xml:lang="en">Main Office</Name>
<PostalAddress name="Test Corp.">
<DeliverTo>Contact Name</DeliverTo>
<Street>3445 Seminole Trail #218</Street>
<City>Charlottesville</City>
<State>VA</State>
<PostalCode>22911</PostalCode>
<Country isoCountryCode="US">United States</Country>
</PostalAddress>
</Address>
</ShipTo>
<!-- Selected item(s) to preload -->
<SelectedItem>
<ItemID>
<SupplierPartID>45L017</SupplierPartID>
<SupplierPartAuxiliaryID>CART12-ITEM123</SupplierPartAuxiliaryID>
</ItemID>
</SelectedItem>
</PunchOutSetupRequest>
</Request>
</cXML>
Request element details
A standard cXML PunchOutSetupRequest payload has a root element, a Header element, and a Request element. The subsections below explain each element and its fields.
cXML root
Applies identifying information to the entire payload
<cXML payloadID="ABCD1234efg567@buyer.com" timestamp="2025-09-25T00:00:00Z"> ... </cXML>
Header
Identifies the organizations involved in the punchout session
<Header>
<From>
<Credential domain="DUNS">
<Identity>BuyerID</Identity>
</Credential>
</From>
<To>
<Credential domain="NetworkID">
<Identity>SupplierID</Identity>
</Credential>
</To>
<Sender>
<Credential domain="NetworkID">
<Identity>Buyer Corp.</Identity>
<SharedSecret>password</SharedSecret>
</Credential>
<UserAgent>TradeCentric PunchOut</UserAgent>
</Sender>
</Header>
Request
Provides the punchout session details, which are described in the subsections below
Session identification
Provides identifying information about the request and punchout session
<Request deploymentMode="production">
<PunchOutSetupRequest operation="create">
<BuyerCookie>SESSION-123456</BuyerCookie>
Extrinsic information
Provides other identifying information, which may vary depending on the integration's requirements, such as about the user and buyer organization
<Extrinsic name="unique">contact.name</Extrinsic> <Extrinsic name="pos">ABCD1234efg567</Extrinsic> <Extrinsic name="organisation_name">Buyer Corp.</Extrinsic> <Extrinsic name="organisation_id">123</Extrinsic>
Return cart URL
Provides the URL that your eCommerce platform should send the return cart to
<BrowserFormPost> <URL>https://connect.tradecentric.com/gateway/link/api/id/ABCD1234efg567</URL> </BrowserFormPost>
User contact information
Provides contact details for the user punching out
<Contact role="endUser"> <Name xml:lang="en">Contact Name</Name> <Email>contact@buyer.com</Email> </Contact>
Shipping information
Provides a shipping address for the punchout session
<ShipTo>
<Address addressID="Main" isoCountryCode="US">
<Name xml:lang="en">Main Office</Name>
<PostalAddress name="Test Corp.">
<DeliverTo>Contact Name</DeliverTo>
<Street>3445 Seminole Trail #218</Street>
<City>Charlottesville</City>
<State>VA</State>
<PostalCode>22911</PostalCode>
<Country isoCountryCode="US">United States</Country>
</PostalAddress>
</Address>
</ShipTo>
Selected item
Provides one or more items to start the punchout session with a premade cart
<SelectedItem>
<ItemID>
<SupplierPartID>45L017</SupplierPartID>
<SupplierPartAuxiliaryID>CART12-ITEM123</SupplierPartAuxiliaryID>
</ItemID>
</SelectedItem>
Response payload (to TradeCentric)
Once your eCommerce platform processes the PunchOutSetupRequest, it should return a PunchOutSetupResponse cXML payload. This payload should provide either a URL to start the punchout session or an error message.
The code block below shows an example PunchOutSetupResponse payload in our standard cXML format:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.2.020/cXML.dtd">
<cXML xml:lang="en-US" payloadID="ID" timestamp="2016-04-03T08:45:48-05:00">
<Response>
<Status code="200" text="Ok"/>
<PunchOutSetupResponse>
<StartPage>
<URL>https://connect.punchout2go.com/gateway/punchout/start/id/ABCD1234efg567</URL>
</StartPage>
</PunchOutSetupResponse>
</Response>
</cXML>
Response element details
A standard cXML PunchOutSetupResponse payload has a root element and a Response element. The subsections below explain each element and its fields.
cXML root
Applies identifying information to the entire response payload
<cXML xml:lang="en-US" payloadID="ID" timestamp="2016-04-03T08:45:48-05:00"> ... </cXML>
Response
Provides the success or error details, which are described in the subsections below
Success response
Indicates that the eCommerce platform processed the request successfully and provides the URL to start the punchout session
<Response>
<Status code="200" text="Ok"/>
<PunchOutSetupResponse>
<StartPage>
<URL>https://connect.punchout2go.com/gateway/punchout/start/id/ABCD1234efg567</URL>
</StartPage>
</PunchOutSetupResponse>
</Response>
Error response
Indicates that the eCommerce platform failed to process the request and provides an error message
<Response> <Status code="400" text="Bad request">Unable to authenticate the user</Status> </Response>