Set up a punchout
This is the setup for one punchout customer. Punchout is set up per contract rather than once per platform: a second customer means a second channel, a second assortment and a second set of credentials.
1. Create the channel
- Go to Configuration › Channels.
- Select New channel.
- Set a code you will recognise in a log a year from now:
punchout-acmerather thanchannel3. The code is what everything else scopes on. - Set the type to PunchOut.
- Assign the market. The market carries the currency, the locales and the tax classes this buyer will see. A customer ordering in CHF needs a Swiss market, not a discount on a EUR price.
- Set Unassigned rows in this channel to Hidden until assigned. This is the important one: it means the channel shows only what you explicitly put in it.
2. Assign the assortment
Assign the agreed products to the channel. For a negotiated range this is normally a filtered selection from the product grid rather than a per-article click: a product group, a manufacturer, or the articles on the contract list.
Then check it from the other end: filter the product grid by this channel and count. If the contract says roughly 2,400 articles and you see 18,000, something is assigned that should not be.
3. Make the data procurement-ready
Procurement systems reject lines that a web page would happily render. Before going live, confirm for every article in this channel:
| Field | Requirement |
|---|---|
| Unit of measure | Present, and a code their system accepts rather than free text |
| Order quantity step / packaging unit | Present, so 1 does not mean a pallet |
| Manufacturer part number | Present and distinct from your own article number |
| Tax class | Set, and correct for the market |
| Short description | Plain text, within their length limit |
Use completeness filtered on this channel to produce the work list. This step is where punchout projects lose their weeks, so do it before the connection rather than during the test round.
4. Set the prices
The buyer must see the price their contract says. Confirm that the customer's conditions (contract prices, scale prices and currency) resolve for this channel before anyone external tests it. A punchout that shows list prices to a contract customer is the fastest way to lose the project. See How pricing works.
5. Create the connection and credentials
There is no single "Punchout" screen. A punchout is assembled from three pieces: the channel from step 1, a credential, and a connector or workflow that handles the round trip.
- Go to Integrations › Credentials and create a credential for this
customer. Name it after the channel (
punchout-acme) so a run log is readable. Put the shared secret or password in Integrations › Secrets and reference it.- For OCI, the customer's system calls you with a username and password in the call URL.
- For cXML, you exchange an identity, a domain and a shared secret. Those values come from the customer's setup sheet and must match exactly, including case.
- Install or configure the punchout connector from Extend and Develop › Marketplace, or build the round trip as a workflow. It needs to know three things: the standard (OCI 4, OCI 5 or cXML), the channel from step 1, and the customer organisation this contract belongs to. That last link is what makes an incoming session resolve to the right assortment and the right prices.
- Set the session timeout. Ninety minutes is a reasonable default: long enough for a buyer to be interrupted, short enough to expire.
- Configure the cart return: for OCI the
HOOK_URLtheir system supplies at call time, for cXML thePunchOutOrderMessagetarget. Check the field mapping for the returned lines: which of your fields fillsNEW_ITEM-MATNR,NEW_ITEM-VENDORMAT,NEW_ITEM-UNITand the rest. - Configure the order transmission separately: a connector, or a workflow
triggered by the
order.placedevent. The punchout hands over a cart; the purchase order arrives afterwards as its own message. - Send the customer their setup URL and credentials, through a channel that is not plain email.
6. Test against their real system
Your own test call proves your endpoint answers. It proves nothing about their installation, which is customised.
- Ask their technical contact to punch out from their test environment.
- Watch the session resolve: correct customer, correct assortment, correct prices.
- Have a buyer, rather than an administrator, build a cart of at least three lines, including one with an awkward unit of measure.
- Transfer the cart and let them confirm what arrived in the requisition, field by field.
- Take the requisition all the way through approval to a purchase order, and confirm the order reaches you in the agreed format. The punchout and the order transmission are two different messages, and this step is the one that gets skipped.
What to check
- The buyer never sees a login screen.
- The article count in the punchout matches the contract.
- Prices match the contract, including scale prices.
- Every transferred line carries a unit of measure and a manufacturer part number.
- The purchase order arrives and can be processed without retyping.
Next
- Monitor your syncs: including punchout sessions.
- Common sync errors: what the usual failures mean.