Volume pricing is the core of wholesale. Buy 10, pay one price; buy 50, pay less; buy 200, pay less again. Shopify B2B supports exactly this through quantity price breaks on a catalog's price list — and supports it one variant at a time, through a modal, per catalog.
Three tiers across 300 variants and four catalogs is 3,600 numbers. That is not an admin task, it is a spreadsheet.
How Shopify models this
The chain runs: Company → Company Location → Catalog → Price List. The price list holds a fixed price per variant and, optionally, quantity price breaks sitting underneath it. A company location is assigned to a catalog, and that is how a specific buyer gets a specific tier table.
One thing worth knowing up front, because it catches people out: customer tags are not part of this. B2B catalogs are assigned by market and company location only. If your wholesale pricing is gated on a customer tag, that is a discount mechanism, not a catalog — see wholesale pricing without Plus for that route.
What the sheet looks like
SheetSync builds two tabs:
- Catalog Pricing — one row per variant. Fixed columns for Product ID, Product Name, Variant ID, Variant Name, SKU and Base Price, then a block of columns for each catalog: its price, plus a quantity and price pair for each volume tier.
- Catalog Reference — one row per catalog, listing its ID, title, status, price list ID, currency and what it is assigned to. This is where you check you are editing the catalog you think you are.
Each catalog gets three tiers by default — wide enough for the overwhelming majority of wholesale tier tables, narrow enough that the sheet stays readable and sortable.
What this makes easy
A consistent discount ladder. Decide the shape once — catalog price, then 5% off at 25 units, 10% off at 100 — and express it as three formulas off the catalog price column. Fill down. Every variant in the catalog now has a coherent tier table instead of whatever was typed in that week.
Tiers that respect your margin. Put landed cost next to the deepest tier and conditionally format anything that breaks your floor. The deepest tier is exactly where margin quietly disappears, and it is the hardest one to eyeball in admin.
Different ladders per customer. A distributor earns a steeper curve than a small independent. Two catalogs, two multipliers, both visible in the same row so you can see the gap.
Minimum order quantities that match reality. If a product ships in cases of 12, the tier breakpoints should be 12, 48, 120 — not 10, 50, 100. Sorting by product type and filling down per group gets that right in minutes.
An audit of what you actually offer. Sort by the deepest-tier column and you will find the account that somehow gets 40% off a product line. That is very hard to notice in admin and very obvious in a sheet.
Step by step
- Open the B2B catalog pricing sheet in SheetSync and export.
- Check the Catalog Reference tab so you know which column block belongs to which catalog and currency.
- Set each catalog's price, then fill the tier quantity and price pairs.
- Paste formulas as values.
- Sync back and read the log — the planner reports errors per row before anything is written.
- Open a company location in admin and confirm the tier table matches the row.
The rules the planner enforces
Tier tables have more ways to be malformed than a flat price does, so these are checked before anything reaches Shopify:
- A tier needs both a quantity and a price. Fill in one and leave the other blank and that row is reported as an error rather than half-written. Leaving both blank is fine — that is just an unused tier.
- Two tiers cannot share a quantity. "50 units costs 8.00 and also 7.50" has no meaning, so it is rejected.
- Tiers need a catalog price to sit under. Volume breaks with no base catalog price in that row is an error — there is nothing for the break to discount.
- Tiers are sorted by quantity for you, so you can enter them in any order.
- A blank catalog price deletes that catalog price, along with its breaks. The company location then falls back to your retail price — it does not stop selling. This is the deliberate way to remove a variant from a catalog's pricing, and worth being careful with.
- A variant missing from the sheet is left alone, exactly as in every other SheetSync sheet. Deleting a row does nothing.
- A cell that is not a number is rejected, never coerced.
Designing a tier table worth having
Three practical rules, learned the expensive way by most wholesalers:
- Breakpoints should match how the product ships. A tier at 100 units on a product that cases in 12 just produces odd orders and manual adjustments.
- The gap between tiers should be worth the stock risk. A 2% saving will not persuade anyone to quadruple their order; it only costs you margin on buyers who were going to order that much anyway.
- Keep the ladder consistent across a product line. Buyers notice when one SKU breaks at 50 and its sibling breaks at 60, and it generates exactly the kind of email no one wants to answer.
Build your tier table in a sheet
Export every catalog and its volume tiers, edit them together, and sync back to Shopify.
Try SheetSync today