Shopify B2B price lists, catalogs & volume pricing.
How catalogs, price lists, quantity rules, and volume pricing fit together in Shopify B2B, what the hard limits are, and where management gets painful at scale.
Shopify B2B pricing is built on catalogs: each catalog pairs a publication (which products a company can see) with a price list (what that company pays). A price list sets fixed prices per variant or a percentage adjustment across the whole catalog, and carries quantity rules plus up to 10 volume price breaks per product. Basic, Grow, and Advanced plans get 3 active catalogs across all B2B markets; Shopify Plus gets unlimited catalogs and can assign them directly to companies and company locations.
Every wholesale price a buyer sees on Shopify traces back to one object: the catalog. There is no separate "wholesale price" field on a product. Instead, Shopify resolves what a logged-in B2B buyer pays by walking through the catalogs assigned to their company location. Understanding that resolution order, and the limits around it, is most of what it takes to run Shopify B2B pricing well. This chapter covers the mechanics; for the wider feature set, start at the Shopify B2B overview.
What is a catalog in Shopify B2B?
A catalog determines the products and pricing a B2B customer can access. Structurally it has three parts:
| Part | What it controls |
|---|---|
| Context | Who the catalog applies to: a B2B market, a company location, or an app |
| Publication | Which products are included or excluded |
| Price list | What those products cost: fixed prices, a percentage adjustment, quantity rules, volume pricing |
Assignment is where plans diverge. Every plan can assign catalogs to B2B markets. Only Shopify Plus can assign catalogs directly to specific companies and company locations, which is what true customer-level pricing requires.
Two resolution rules matter in practice. First, when multiple catalogs on the same location contain the same product, the lowest price displays to the customer. Second, a catalog assigned directly to a company location overrides a B2B market catalog: Shopify's own documentation gives the example of a $9 company-location price winning over a $7 market price, because the more specific assignment wins.
The lowest-price rule cuts one way. You cannot force a higher price by adding another catalog. With multiple catalogs on one location, the lowest price always displays, quantity rules come from the lowest-price catalog, and ties resolve to the first-created catalog. Catalog sprawl silently becomes margin leakage.
How do price lists work: fixed prices vs percentage adjustments?
A price list overrides default product prices in one of two ways, and they interact:
- Fixed prices are set per product (all variants at once) or per individual variant. Compare-at prices are supported, so buyers can see the list price next to their contract price.
- Percentage adjustments apply a single increase or decrease to every product in the catalog. In the API this is the
PriceListParentadjustment with typePERCENTAGE_INCREASEorPERCENTAGE_DECREASE.
The interaction rule: variants published to the catalog without a fixed price automatically get the percentage adjustment, and once a fixed price is assigned, the catalog's overall adjustment no longer applies to that variant. You cannot stack "contract price, then 5% off on top" inside one price list.
Currency is per price list. Each price list carries exactly one currency for its fixed prices, the currency a buyer sees is determined by their market, and a market catalog's price list must match the market's currency: you cannot map a USD price list to a CAD market catalog. If a catalog has no price list at all, customers receive the base variant prices converted to the market currency.
How do quantity rules work?
Quantity rules enforce how much of a variant a buyer can order. There are three rule types, applied per variant on the price list:
- Minimum order quantity: the floor for a single variant in the cart.
- Maximum order quantity: the ceiling.
- Increment: the case-pack step. Defaults to 1 and must be a positive whole number of 1 or more.
You can apply any combination of these. The catch merchants hit first: rules apply strictly per product variant. A buyer cannot combine the blue and the green variant to satisfy a minimum or an increment. If your real-world rule is "24 units per case, any mix of colors," native quantity rules cannot express it. Shopify also validates rules against each other: the increment must divide evenly into the minimum and maximum, and the minimum cannot exceed the maximum.
How does Shopify volume pricing work?
Volume pricing (Shopify also calls these quantity price breaks) offers lower prices to customers who purchase in larger quantities. The mechanics:
- Up to 10 price breaks per product, applied to each variant.
- Buyers must meet the required quantity per variant to qualify, same constraint as quantity rules.
- Once a break applies, that price is fixed: the catalog's overall percentage adjustment does not apply on top of it.
- A break's minimum quantity must sit within the variant's quantity-rule range and be a multiple of its increment.
Both quantity rules and volume pricing are available on all four plans (Basic, Grow, Advanced, and Plus), configured in the Catalogs section of admin or by CSV import.
One disambiguation worth making: searches for "shopify quantity breaks" and "shopify bulk pricing" mostly surface D2C discount apps that bundle products or discount carts for retail shoppers. Native B2B volume pricing is a different mechanism: it lives on the catalog, is scoped to companies, and renders in the theme through documented Liquid objects (variant.quantity_rule and variant.quantity_price_breaks), so a B2B buyer sees their break table directly on the product page. For the buying experience on top of these rules, see quick order lists and bulk buying.
How do you publish products to a catalog?
Product availability per catalog is controlled by the publication: include or exclude products per catalog, so a distributor sees the full range while a specialty account sees a curated assortment. Via CSV, a Published column takes TRUE or FALSE, and only the first variant row of a product is reviewed for inclusion. Via the API, publicationCreate with defaultState: ALL_PRODUCTS creates the publication, then publicationUpdate adds or removes publishables.
At scale, Shopify documents a pattern that keeps catalog counts sane: pricing-only catalogs and publication-only catalogs can be mixed on the same location. Fifty pricing tiers and ten product assortments become 60 catalogs (50 pricing-only plus 10 publication-only) instead of 500 full catalogs covering every combination. If a B2B catalog ends up with no publication associated, logged-in buyers for that location see no products at all, which is a common go-live surprise.
What are the limits on Shopify B2B catalogs and price lists?
| Limit | Value |
|---|---|
| Active catalogs, Basic / Grow / Advanced | 3 across all B2B markets |
| Active catalogs, Shopify Plus | Unlimited |
| Catalogs per company location | 25 |
| Catalogs per store | 10,000 |
| Volume price breaks | 10 per product, applied per variant |
| Quantity rule increment | Whole number, 1 or more |
priceListFixedPricesAdd | 250 prices per request |
priceListFixedPricesByProductUpdate | 10,000 prices-to-add limit |
| Concurrent bulk mutation operations | 5 per shop (API 2026-01+), 1 before |
And the structural constraints that no setting changes:
- Direct catalog assignment to companies and locations: NOT NATIVE on Basic, Grow, or Advanced. It is Plus-only.
- Combining variants to satisfy a minimum, maximum, or increment: NOT NATIVE. Rules are strictly per variant.
- Stacking the catalog percentage adjustment on top of a fixed price or a reached volume break: NOT NATIVE. Fixed prices and break prices suppress the adjustment.
- Region catalogs and company-location catalogs cannot be added to a B2B market.
- Scheduling a price list to activate or expire on a date: Shopify documentation does not describe any native start or end date on a price list, so seasonal or contract-window pricing means manual swaps or API automation.
The full gap list across all of B2B lives in the Constraints Ledger.
How do you manage B2B price lists at scale?
Two surfaces exist: CSV and the GraphQL Admin API.
CSV covers the whole model. Imports require Catalog Title, Option1 Name, and Option1 Value columns, and support fixed prices, Quantity Increment, Minimum and Maximum Order Quantity, and Quantity Break 1 through 10 with matching Price Break columns. Exports can target all products, included products only, fixed prices only, or quantity rules only. One sharp edge: fixed price is a required column on import, and leaving it blank removes pricing.
The API is built for volume. priceListFixedPricesAdd takes up to 250 prices per request and acts as add-and-replace; quantityRulesAdd manages min/max/increment; quantityPricingByVariantUpdate changes fixed prices, quantity rules, and price breaks for multiple variants in one atomic operation, with no partial updates: if any change fails, none apply. For genuinely large syncs, bulkOperationRunMutation runs fixed-price adds and deletes asynchronously from a JSONL file, and API 2026-01 raised the ceiling to 5 concurrent bulk operations per shop.
Here is where the operational pain concentrates. A wholesaler with 200 accounts, a dozen price tiers, and 5,000 SKUs is maintaining tens of thousands of price rows across catalogs, with the lowest-price rule waiting to expose any stale row. When the real source of truth is contract pricing in an ERP, static price lists become a continuous synchronization job rather than a setup task. That problem has its own chapter, contract and live pricing beyond price lists, and its own fix: the B2B Supercharge ERP & CRM module keeps Dynamics 365, NetSuite, and Sage as the source of truth with two-way sync, and the Buying Tools live pricing API lets punchout and procurement systems query each buyer's real price in real time. See the ERP/CRM sync fix for how that works.
Do discount codes work with B2B catalogs?
Not until you ask. Discounts are turned off by default for B2B; the store or organization owner must contact Shopify Support to activate them. Once active, automatic discounts and discount codes apply as additional discounts on top of catalog price adjustments. In blended stores, discounts eligible for all customers, specific customers, or customer segments apply to both B2B and D2C by default; to target specific B2B customers, create a B2B market and use it in the discount's eligibility.
Last verified 2026-07-12 against Shopify documentation.
Frequently asked questions
How many catalogs can you have in Shopify B2B?
Basic, Grow, and Advanced plans allow up to 3 active catalogs across all B2B markets, while Shopify Plus allows unlimited catalogs. Each company location can carry at most 25 catalogs, and a store can hold at most 10,000 catalogs total.
What is the difference between a catalog and a price list?
A catalog is the container that targets a context (a B2B market, company location, or app) and holds two parts. The publication controls which products are visible, and the price list controls what those products cost.
Can Shopify B2B do customer-specific pricing?
Yes, at the company-location level on Shopify Plus, where catalogs are assigned directly to companies and locations so each can carry its own fixed prices or percentage adjustment. Non-Plus plans can only price by B2B market.
How many volume price breaks does Shopify B2B support?
Up to 10 price breaks per product, applied to each variant. Buyers must reach the break quantity per variant, and once a break applies the price is fixed, so the catalog's overall adjustment does not stack on top.
Do order minimums apply per product or per variant?
Per variant. Minimum, maximum, and increment rules each apply to a single variant, and customers cannot combine different variants to satisfy them.
What happens when a company location has multiple catalogs with the same product?
The customer sees the lowest price among the applicable catalogs, with quantity rules taken from the lowest-price catalog. A catalog assigned directly to the company location beats a B2B market catalog.
Can you bulk update Shopify B2B prices?
Yes. Admin supports CSV import and export covering fixed prices, quantity rules, and up to 10 price break columns, while the API takes up to 250 prices per priceListFixedPricesAdd request and runs larger jobs asynchronously through bulk operations.
Do discount codes work for B2B customers on Shopify?
Not by default. Discounts are turned off for B2B until the store or organization owner asks Shopify Support to activate them, after which automatic discounts and codes apply on top of catalog pricing.
Sources · verified 2026-07-12
Pricing that actually lives in your ERP?.
B2B Supercharge syncs Dynamics 365, NetSuite, and Sage both ways, and its live pricing API serves each buyer's contract price in real time. See it on your catalog: book a demo.