Punchout Catalogs
Punchout catalogs use cXML and create a direct link between the customer's Coupa instance and the supplier's ecommerce website.
Introduction
With a punchout, Coupa users follow a link to the supplier’s ecommerce website, where they shop as normal. When a user goes to check out, they’re brought back to Coupa, with the items they chose in their Coupa cart. Users can then submit a requisition in Coupa, using the items, costs, and details from the supplier’s website.
Buyer Benefits
- Low effort to set up and maintain
- All items offered by the seller are available for purchase
- Easy configuration/customization of items like laptops or business cards
Supplier Benefits
- Immediate changes to catalog items
- No need to maintain catalogs for different customers
If you plan on implementing a punchout, you’ll want to fill out the Coupa cXML Supplier Questionnaire and give it to your customer.
How It Works
You’ll need to set up your punchout to recognize Coupa users. You’ll also need to be set up in Coupa, and have a contract with your customer. Before your customer can get you set up, you’ll need to provide your customer with the following information:
Item | Description |
---|---|
Company logo | The logo will act as a link to your punchout. It will appear on the Coupa home screen under the Shop Online section. The image should be a JPG or PNG that’s 150 x 50 pixels in size. |
Punchout URL | The full routing URL required to receive purchase orders in Coupa. |
Customer domain and identity | Usually a DUNS or NetworkID. |
Supplier domain and identity | Usually a DUNS or NetworkID. |
Shared secret | A password that validates the buyer with the supplier. This is a required credential. |
Once you provide the punchout information, your customer can set up the punchout in Coupa.
Normally, suppliers provide two sets of information: one set for testing, and one set for production.
The basic punchout sequence is as follows:
- When a Coupa user clicks the supplier’s punchout link, Coupa sends a PunchoutSetupRequest cXML document containing the buyer’s ID (From, Sender, and SharedSecret).
- The punchout authenticates the user and returns a PunchoutSetupResponse cXML document with the landing page URL.
- When the user checks out, the punchout sends a PunchoutOrderMessage cXML document to Coupa, with the items the user added to their shopping cart.
- Coupa creates a requisition from the information contained in the order message.
Supported cXML
cXML Document | Description |
---|---|
PunchOutSetupRequest |
Include the following elements:
We support create and inspect only. |
PunchOutSetupResponse |
Post your cXML back to Coupa when you receive PunchOutSetupRequest . This document includes the landing page URL. |
PunchOutOrderMessage |
Post your cXML back to the <BrowserFormPost> in PunchoutSetupRequest . |
cXML Term | Definition |
---|---|
<BuyerCookie> |
The first time a user punches out to a supplier's punchout site, Coupa creates a BuyerCookieID that is unique to each user and supplier punchout site combination. This value never changes. The BuyerCookieID is used to validate that when the user checks out of the supplier punchout site and returns to Coupa with the PunchOutOrderMessage , the BuyerCookieID matches what was sent as part of the PunchOutSetupRequest. This field is not passed in the purchase order (aka: OrderRequest ). |
<cXML Payload ID> |
A Suppliers do not need to reference Suppliers do need to reference
|
<SupplierPartAuxiliaryID> |
This is an optional tag at the line item level in Suppliers can pass any value for
|
Examples
Sample Punchout Setup Request
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd">
<cXML xml:lang="en-US" payloadID="1591126611.9325364@stg1302app4.int.coupahost.com" timestamp="2020-06-02T14:36:51-05:00">
<Header>
<From>
<Credential domain="DUNS">
<Identity>COUPA1</Identity>
</Credential>
</From>
<To>
<Credential domain="DUNS">
<Identity>079928354</Identity>
</Credential>
</To>
<Sender>
<Credential domain="DUNS">
<Identity>COUPA1</Identity>
<SharedSecret>ALD</SharedSecret>
</Credential>
<UserAgent>Coupa Procurement 1.0</UserAgent>
</Sender>
</Header>
<Request>
<PunchOutSetupRequest operation="create">
<BuyerCookie>99ea3c4c8cf9f6dc905a6b6772daa0d1</BuyerCookie>
<Extrinsic name="FirstName">Mary Anne</Extrinsic>
<Extrinsic name="LastName">Krzeminski</Extrinsic>
<Extrinsic name="UniqueName">maryanne.krzeminski@coupa.com</Extrinsic>
<Extrinsic name="UserEmail">maryanne.krzeminski@coupa.com</Extrinsic>
<Extrinsic name="User">maryanne.krzeminski@coupa.com</Extrinsic>
<Extrinsic name="BusinessUnit">COUPA</Extrinsic>
<BrowserFormPost>
<URL>https://mwilczek-demo.coupacloud.com/punchout/checkout?id=2</URL>
</BrowserFormPost>
<Contact role="endUser">
<Name xml:lang="en-US">maryanne.krzeminski@coupa.com</Name>
<Email>maryanne.krzeminski@coupa.com</Email>
</Contact>
<SupplierSetup>
<URL>https://uttest.free.beeceptor.com</URL>
</SupplierSetup>
</PunchOutSetupRequest>
</Request>
</cXML>
Sample Punchout Setup Response
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.1.010/cXML.dtd">
<cXML version="1.1.007" xml:lang="en-US" payloadID="200303450803006749@b2b.euro.com" timestamp="2020-06-02T14:36:53-05:00">
<Response>
<Status code="200" text="OK" />
<PunchOutSetupResponse>
<StartPage>
<URL>https://mygreatpunchoutsite.com/punchoutLogin.asp</URL>
</StartPage>
</PunchOutSetupResponse>
</Response>
</cXML>
Sample Punchout Order Message
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd">
<cXML payloadID="9949494@cxml.Comergent.com" xml:lang="en-US" timestamp="--T+00:00" version="1.2.0.14">
<Header>
<From>
<Credential domain="NetworkID">
<Identity />
</Credential>
</From>
<To>
<Credential domain="NetworkId">
<Identity>user@coupa.com</Identity>
</Credential>
</To>
<Sender>
<Credential domain="NetworkID">
<Identity />
</Credential>
<UserAgent />
</Sender>
</Header>
<Message deploymentMode="production">
<PunchOutOrderMessage>
<BuyerCookie>f5d75ddbc9e75b6346b36ee5c28c5e8b</BuyerCookie>
<PunchOutOrderMessageHeader operationAllowed="edit" quoteStatus="final">
<Total>
<Money currency="USD">271.88</Money>
</Total>
<Shipping>
<Money currency="USD">0.00</Money>
<Description xml:lang="en-US">Unknown</Description>
</Shipping>
<Tax>
<Money currency="USD">21.88</Money>
<Description xml:lang="en-US">Unknown</Description>
</Tax>
</PunchOutOrderMessageHeader>
<ItemIn quantity="1">
<ItemID>
<SupplierPartID>AM2692</SupplierPartID>
<SupplierPartAuxiliaryID>A_B:5008937A_B:</SupplierPartAuxiliaryID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="USD">250.00</Money>
</UnitPrice>
<Description xml:lang="en-US">ANTI-RNase (15-30 U/ul)</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
<Classification domain="UNSPSC">41106104</Classification>
<ManufacturerPartID>AM2692</ManufacturerPartID>
<ManufacturerName xml:lang="en">Acme Inc.</ManufacturerName>
<ManufacturerName />
<LeadTime>0</LeadTime>
</ItemDetail>
</ItemIn>
</PunchOutOrderMessage>
</Message>
</cXML>