Glossary

PunchOut catalog

A PunchOut catalog is a supplier-hosted catalog that a buyer reaches from inside their own procurement system, such as SAP Ariba, Coupa, or Jaggaer, instead of loading a static price file. The procurement system opens an authenticated session on the distributor's site. The buyer builds a cart, and the cart returns to the procurement system as a requisition line for approval and PO issue.

How a cXML PunchOut session works

cXML (commerce XML) is the message format behind most PunchOut integrations. A session is a short, ordered exchange of documents between the buyer's procurement system and the supplier's site.

DocumentDirectionWhat it carries
PunchOutSetupRequestBuyer → supplierIdentity and shared secret, a buyer cookie, and the URL the cart should post back to
PunchOutSetupResponseSupplier → buyerA one-time start URL for this session
PunchOutOrderMessageSupplier → buyerThe cart: one line per item, with part ID, description, price, UOM, UNSPSC
OrderRequestBuyer → supplierThe approved PO, after the requisition clears internal approval

Three things follow from that flow. The session is authenticated, so the pricing shown is that buyer's contract pricing, not list. Nothing is ordered at cart return. The line sits in a requisition until someone approves it. And the OrderRequest you receive later has to reconcile against the part IDs and units you sent in the cart, or the PO fails at your end.

What the cart line has to carry

Each line in the PunchOutOrderMessage is a small, strict record. Here are the fields the buyer's system validates on arrival, with a hex cap screw as the example:

cXML elementExample valueRule
SupplierPartIDHCS-38162-G8ZMust match the ID on the OrderRequest you get back
SupplierPartAuxiliaryIDZINC-YLW-BX100Carries the variant and pack context; omit it and the line loses which variant was bought
Description3/8"-16 x 2" Grade 8 hex cap screw, zinc-yellowGets truncated to the buyer's field length, so front-load the identifying spec
UnitOfMeasureBXMust be a UN/CEFACT code such as EA, BX, or CA, not the word "box"
UnitPrice42.60 USDMust be price per the UOM sent, or the invoice mismatches
Classification domain="UNSPSC"31161500 (bolts)Must be an 8-digit commodity code; shallower codes usually pass validation but misroute the spend

UNSPSC is the field that catches distributors out. The buyer wants an 8-digit commodity code per SKU for spend analysis and category routing. A blanket 31000000 on every fastener will usually pass validation, and then the buyer's spend report rolls every fastener you sell into one line.

PunchOut, hosted catalog, and Level 2

Buyers use three arrangements, and large accounts often run more than one at once.

ModelWhere the data livesWhat it demands of you
Hosted / CIF catalogUploaded into the buyer's system as a flat fileEvery line pre-classified, priced, and unit-coded; refresh on a cycle
Level 1 PunchOutYour site, reached from the procurement systemA working session, contract pricing, a clean cart return
Level 2 PunchOutBoth: an index file in the buyer's system, deep-linking into your siteAn index of items with UNSPSC and UOM, plus everything Level 1 requires

Level 2 is where the attribute burden shows up. The buyer searches your items inside Coupa or Ariba before ever reaching your site, so your item index becomes their search experience. If that index says only "hex bolt," nobody finds the Grade 8 zinc-yellow one by thread pitch.

Where PunchOut catalogs break

The integration is rarely the problem after go-live. The data is. Common failures, roughly in the order they surface:

  • UNSPSC at the wrong depth. Segment-level codes across tens of thousands of SKUs, because nobody classified below the 2-digit segment during onboarding. 31000000 is a segment code, not a commodity code.
  • UOM drift. The site sells per box of 100, the cart sends EA, and the invoice mismatches by two orders of magnitude.
  • Descriptions that identify nothing. "Hex cap screw" survives truncation; the diameter, thread pitch, grade, and finish do not.
  • Search inside the PunchOut that ignores specs. A maintenance buyer needs a UL listed 600V wire connector for 12-10 AWG. If gauge range and voltage rating are not filterable attributes, they call your branch instead, and PunchOut was supposed to stop that call.
  • Part ID drift. The cart's SupplierPartID no longer matches your ERP item after a renumbering, so OrderRequest documents fail silently.
  • New items missing from the PunchOut entirely. They exist in the ERP, but were never classified or attributed well enough to expose.

Keeping the catalog PunchOut-ready

The attributes you send in the cart are the attributes your buyer's category manager reports on. Your largest accounts see your UNSPSC codes, your unit codes, and your specs inside their own spend reports, and the gaps become their problem before they become yours.

A PIM is where UNSPSC, UOM, and the attribute set live. What it does not do is fill the empty UNSPSC cells across a catalog, normalize BX / Box / box of 100 down to one code, or read a manufacturer's spec sheet to find the thread pitch that belongs in a filterable field.

That completion work is what Anglera does, alongside the PIM you already run.

Frequently asked questions

What is the difference between a PunchOut catalog and a hosted catalog?

A hosted catalog is a file you upload into the buyer's procurement system; they search a copy of your data there. A PunchOut catalog keeps the data on your site. The buyer's system opens an authenticated session, they shop your live catalog at their contract pricing, and the cart returns as a requisition. PunchOut stays current; hosted catalogs go stale between refreshes.

Do I need UNSPSC codes for PunchOut?

Effectively yes. Ariba, Coupa, and Jaggaer expect a UNSPSC classification on every cart line, and buyers use it for spend analysis and approval routing. A segment or family code usually passes schema validation, but the line then lands wrong in their reporting and routing. Practically, you need an 8-digit commodity code per SKU, which means classifying the whole catalog, not just the SKUs that move.

What is Level 2 PunchOut?

In Level 1 PunchOut, the buyer clicks into your site and searches there. In Level 2, you also supply an index of items that lives inside the buyer's procurement system, so they can search your products from their own UI and deep-link straight to an item page. Level 2 needs the same UNSPSC and UOM discipline as a hosted catalog, on top of the session itself.

Why does my PunchOut cart fail validation in Coupa or Ariba?

Rejections usually trace to three fields: a unit of measure that is not a valid UN/CEFACT code, a UNSPSC classification that is missing entirely, or a unit price expressed per each when the UOM says box. A fourth cause shows up later: a SupplierPartID in the cart that no longer matches your ERP item, which breaks the OrderRequest.

What is cXML?

cXML (commerce XML) is the XML message format Ariba, Coupa, and Jaggaer use for PunchOut sessions and purchase orders. A session is a sequence of cXML documents: a PunchOutSetupRequest to open it, a PunchOutSetupResponse carrying the session start URL, a PunchOutOrderMessage carrying the cart back to the buyer, and an OrderRequest carrying the approved PO to the supplier.

Related terms

See it on your own SKUs.

A 30-minute walkthrough on your categories and your supplier data.

Book a demo