ai.commercestudio.b2b.pricing
Draft, version 2026-10-19. Extends dev.ucp.shopping.checkout and dev.ucp.shopping.cart (UCP 2026-08-25). Schema: https://b2b.commercestudio.ai/ucp/schemas/pricing.json.
B2B buyers rarely pay the list price. Each company has a contract price list, negotiated in advance. Procurement wants to see what the contract saves against list.
This extension shows which price list applies, and each line's contract price next to its list price. The agent can then say "at your contract price, saving $1,954.90 against list" and catch a line whose price looks wrong.
Principles
- UCP's own price fields carry the price the buyer pays.
line_items[].item.priceandtotalsare the contract price, or a quoted price when an accepted quote applies.- An agent that doesn't negotiate this extension still sees, and pays, the right price.
- Prices are per buyer. The business resolves them for the signed-in company user on every request, and never shares them across buyers or companies.
- List price is for comparison only. It's never charged.
Response field: b2b_pricing
Present on every cart and checkout when the extension is negotiated.
| Field | Meaning |
|---|---|
price_list |
{ id, name }: the contract price list in effect, e.g. "Bushwood Country Club Preferred Pricing" |
lines[] |
One per line item: line_item_id (matches line_items[].id), contract_price, list_price, and quoted_price when an accepted quote applies |
list_total |
Sum of list price × quantity |
contract_total |
Sum of contract price × quantity |
quoted_total |
Sum of quoted price × quantity, when an accepted quote applies |
savings |
list_total minus what the buyer pays (the line items' subtotal) |
All amounts are unit or total prices in ISO 4217 minor units, like every UCP amount.
When ai.commercestudio.b2b.quote is also negotiated and a quote is accepted, contract_price stays the buyer's contract price, and quoted_price is what they pay. Without an accepted quote, contract_price equals line_items[].item.price.
Catalog
The extension adds no field to catalog responses. When the buyer is linked, catalog search, lookup and product responses already show the buyer's contract price as the price, and add list_price (or list_price_range) where it differs. A buyer who isn't linked sees list prices.
Callisto on BigCommerce
- Contract price. BigCommerce's Pricing API (
POST /v3/pricing/products) supplies it, with the buyer's customer group and the agent order channel. This resolves the company's B2B price list, including price-list rules and variant-level prices. - List price. The catalog variant price.
- Price list name. Read from the customer group's price list.
- Orders at the agreed price. When the order is placed, each cart line's price is pinned to the agreed price (contract or quoted). The order is refused if BigCommerce's total differs from the checkout's.
- Verified on Wildleaf: Bushwood Country Club's FootJoy hoodie is $100.00 contract against $125.00 list. The hero reorder came to $7,819.35 contract against $9,774.25 list, so
savingswas $1,954.90.