Punchout, so enterprise buyers can order without leaving their procurement system
The situation
A large customer says they can only buy through Ariba or Coupa, and procurement will not raise manual purchase orders. Without punchout the account either does not open or quietly shrinks to whatever can be bought off-contract. Someone forwards a copy of the cXML specification and it looks like a fortnight of work.
How I'd approach it
Three flows, not one. The setup request arrives server to server and is authenticated on a shared secret; the buyer then shops in your catalogue under an identity derived from that request; the cart returns as a form post through their browser. Separately — and this is the part that gets missed — the actual purchase order arrives later as a cXML OrderRequest once their internal approval clears. Buyer-specific contract pricing and catalogue restriction usually need building too, because a storefront written for public retail pricing cannot express either.
What usually bites
The edit operation. Buyers reopen requisitions to change them, and the setup request comes back carrying the previously returned lines. Rebuilding that cart from current prices rather than the prices originally quoted produces a silently different requisition and breaks the buyer’s approval trail. It is almost never caught before joint UAT, which is the most expensive place to find it.
What I'd cut first
Live inventory in the punchout catalogue. Approval takes days regardless, so stock at requisition time is not the number that matters, and the dependency buys nothing. Handle availability when the order actually arrives.
When I'd tell you not to
If one customer is asking and the contract is small, a hosted catalogue file may satisfy them for a fraction of the effort. Punchout earns its cost when several enterprise buyers want it, or when the account is large enough that procurement friction is costing real revenue.
