LUCENTCOMMERCEGET A FREE STORE AUDITFREE AUDIT

B2B · WHOLESALE · OPS · 19 JUNE 2026 · 8 MIN READ

Wholesale catalogues, minimums and case packs

Shopify enforces minimums, maximums and increments per variant, not per order. That single detail decides whether your case-pack specification works or generates support tickets.

A wholesale order form beside its negotiated price list

Case packs and minimums are quantity rules, set inside a B2B catalogue against a product or variant. A rule has three parts — an increment, a minimum and a maximum — and the critical detail is that Shopify applies them per variant: its own documentation gives the example that customers "can't combine 5 gray hats and 5 blue hats to meet an increment of 10 hats". Volume pricing is a separate feature, allowing up to ten price breaks per product, with break quantities that must exceed the minimum and be multiples of the increment. An order-level minimum spend is not a quantity rule and needs a cart and checkout validation function.

IN SHORT

  • Quantity rules are configured per catalogue in Markets → Catalogs → Manage products and pricing, and can be imported by CSV.
  • A rule is an increment, a minimum and a maximum; the increment defaults to 1 and must be a positive whole number.
  • Rules apply per variant rather than across a product, so a case of twelve means twelve of one colour, not twelve of the product.
  • Volume pricing allows up to ten price breaks per product, and break quantities must exceed the minimum order quantity and be multiples of the increment.
  • Once volume pricing is applied to a product, Shopify documents that the price becomes fixed and any overall adjustment discount set on the catalogue will not apply.
  • A minimum order value is not a native quantity rule; it is a cart and checkout validation function, of which a store can activate a maximum of 25.

Where the rules live, and what a rule is

Both quantity rules and volume pricing are properties of a catalogue, configured under Markets → Catalogs → the catalogue → Manage products and pricing. They can also be imported by CSV, which is the only sane route for a catalogue of any size — nobody is typing case sizes for four thousand variants into an admin screen.

A quantity rule has three parts, and the API names them exactly as the admin does. In the Admin GraphQL API a QuantityRule carries increment ("The value that specifies the quantity increment between minimum and maximum of the rule"), minimum ("The value that defines the lowest allowed quantity purchased by the customer"), an optional maximum ("An optional value that defines the highest allowed quantity purchased by the customer"), an originType recording whether the values were explicitly set, and the productVariant the rule applies to.

The increment defaults to 1 and must be a positive whole number. That default is why every variant technically has a rule whether or not anyone configured one, and why originType exists — it is how you tell a deliberate rule from an inherited default when you are auditing a catalogue you did not build.

The per-variant rule that breaks most specifications

This is the single most important thing on this page, and it is where wholesale briefs and Shopify’s behaviour most often part company.

Rules apply per variant, not across variants of the same product. Shopify’s own example: customers "can't combine 5 gray hats and 5 blue hats to meet an increment of 10 hats". Volume pricing behaves the same way — the quantity threshold must be met per variant to qualify for the break.

Read a typical wholesale brief against that and the mismatch is immediate. "Minimum order of 24 units per style" usually means twenty-four across the size run, because that is how the warehouse and the buyer both think about it. Shopify will read it as twenty-four of each size, which for a ten-size range is a minimum ten times larger than intended, and the buyer will simply not place the order.

There are three honest responses. The first is to accept the platform’s model and set the rule at the level it actually enforces — a smaller per-variant minimum that produces roughly the order size you want. The second is to make the case a product in its own right: a "Case of 24, assorted sizes" variant with its own SKU, which the ERP and the picker both understand, and which sidesteps the question entirely. The third is a cart validation function that enforces the cross-variant total.

Of the three, the assorted-case SKU is underrated. It is more work in the catalogue and less work everywhere else, it gives you a real inventory position for the thing you actually ship, and it does not depend on a function nobody on the client team can maintain. If the business already picks and ships assorted cases, model the case.

Volume pricing and the trap inside it

Volume pricing is the incentive half: up to ten price breaks per product, giving a better unit price at higher quantities of the same variant. The constraints Shopify documents are sensible and worth knowing before you write the price grid — break quantities must exceed the minimum order quantity and be multiples of the increment. A case size of twelve with a break at ten is an unreachable break, and the specification will be written that way at least once.

The trap is what volume pricing does to everything else. Shopify documents that "after you apply volume pricing to a product the price becomes fixed. Any overall adjustment discount set on the catalog won't apply."

That matters because the usual way to run a B2B price list is a percentage adjustment off retail — it derives automatically and survives every catalogue price change. Apply volume pricing to a product inside that catalogue and the derivation stops for that product. The price is now a number somebody has to maintain, and when retail prices move at the next cost increase, that product quietly stops tracking them.

So volume pricing is not a free addition to a percentage-based catalogue. It converts the products it touches into a fixed-price data set. If you want volume breaks across a whole catalogue, you are choosing fixed pricing for that catalogue, and the right next question is where those prices are maintained — almost certainly in the system where your commercial team negotiates them, pushed into Shopify, rather than typed into the admin twice.

Minimum order value is a different mechanism

Quantity rules are about quantities. A great many wholesale arrangements are expressed in money — "minimum order £500", "carriage paid over £1,000" — and that is not what quantity rules do.

The supported route is a cart and checkout validation function. Errors surface in two places, the storefront cart template and checkout, and Shopify documents that "errors from validation functions are exposed to the Storefront API's Cart object", which matters if any part of your B2B front end is custom. The limit is documented: "You can activate a maximum of 25 validation functions on each store." One note if you were planning to look the threshold up from an external system at validation time — the fetch target "is limited to custom apps installed on Enterprise stores".

Before building it, though, consider whether a hard block is the right commercial behaviour. A validation function that stops a buyer at £480 against a £500 minimum does not produce a £500 order; it produces an abandoned cart and, if you are lucky, an email to your account manager. A softer design — show the shortfall in the cart, suggest what closes the gap, and let the order through with a carriage charge — converts better and is less work to build. Enforce hard minimums where they reflect a real constraint, like a pallet or a production run. Where the minimum is a commercial preference, price the small order rather than refusing it.

How many catalogues you actually need

Catalogue count grows without anyone deciding to grow it. Every account that asks for something slightly different becomes a catalogue, and eighteen months later nobody can explain why a given buyer sees a given price.

Start from the commercial model rather than the account list. Most wholesale businesses have three or four genuine pricing tiers — trade, distributor, key accounts, maybe an export tier — and everything else is a negotiated exception that could be a line-level override or a quote. Model the tiers as catalogues and handle the exceptions where they belong.

The pressure to add catalogues usually comes from case sizes and minimums rather than from price, which is a shame because those are properties of the product, not of the customer. If every account buys the same case of twelve, the case size belongs on the product across the board, not duplicated into six catalogues where five copies will drift.

Standing orders are not a quantity rule either

A recurring wholesale arrangement — the same pallet every month, a seasonal replenishment schedule — looks superficially like something the B2B features should handle, and they do not. It is a subscription problem, and it comes with a documented constraint that catches sales-assisted operations specifically: "Subscriptions can't be used with draft orders."

That is the exact combination a wholesale team reaches for. The natural workflow is a sales person building the standing order as a draft in the admin and setting it to repeat, and it is not available. If recurring B2B ordering is part of the offer, design it deliberately — through a subscription platform that supports the B2B customer model, through a scheduled order generated by your ERP and pushed in, or through the honest low-tech version, which is a reminder to the buyer and a saved cart.

The low-tech version wins more often than it should lose. A buyer who reviews and confirms their replenishment each month catches the discontinued line and the seasonal change; an automated standing order ships them twelve units of something they stopped selling in March, and the credit note costs more than the automation saved.

What to check before launch

Configuration errors in this area are invisible in the admin and obvious to the buyer. Four checks, none of which takes long.

  • Log in as a contact at a representative location and try to build a realistic order. Not a test order — the order that account actually places, across the size run.
  • Confirm every volume break is reachable: above the minimum, and a multiple of the increment.
  • List the products carrying volume pricing and confirm someone owns their prices now that the catalogue adjustment no longer applies to them.
  • Take an order through checkout, not just to the cart. Quantity rules are re-validated at checkout, so a cart that assembles is not proof of an order that completes.

The position worth holding

Wholesale specifications arrive as a description of how the business currently works, usually written by someone describing a spreadsheet. The useful part of the project is the translation, and most of the translation is deciding which of those rules the platform should enforce and which are conversations between a buyer and an account manager.

Enforce the ones with a physical cause: case packs, pallet quantities, minimum production runs. Leave the commercial preferences soft. A B2B store that blocks fewer orders and charges correctly for the awkward ones will take more revenue than one that models every rule in the sales manual, and it will be a great deal cheaper to change when the sales manual does.

Questions this raises

How do you handle B2B minimums and case packs on Shopify?

With quantity rules inside a B2B catalogue. A rule sets an increment, a minimum and an optional maximum against a variant — an increment expresses a case pack, a minimum expresses a minimum order quantity. They are configured per catalogue under Markets → Catalogs → Manage products and pricing, and can be imported by CSV.

Do quantity rules apply across all variants of a product?

No, and this is the detail that breaks most wholesale specifications. Rules apply per variant. Shopify's documented example is that a customer cannot combine five grey hats and five blue hats to meet an increment of ten hats. A minimum written as "24 per style across the size run" does not translate directly.

How many volume price breaks can you set?

Up to ten per product, applying to each variant. Break quantities must exceed the minimum order quantity and be multiples of the increment, so breaks that sit below the minimum or off the increment are unreachable.

Does volume pricing affect a percentage-based price list?

Yes. Shopify documents that once volume pricing is applied to a product the price becomes fixed, and any overall adjustment discount set on the catalogue will not apply to it. Those products stop tracking your retail prices and become a data set somebody has to maintain.

Can you set a minimum order value rather than a minimum quantity?

Not with quantity rules. A minimum spend is a cart and checkout validation function, whose errors surface in the cart template and at checkout and are exposed to the Storefront API cart object. A store can activate a maximum of 25 validation functions. Consider whether a hard block or a carriage charge on small orders is the better commercial outcome.

Can a wholesale standing order be set up as a subscription from a draft order?

No. Shopify documents that subscriptions cannot be used with draft orders, which rules out the natural sales-assisted workflow. Recurring B2B ordering needs a deliberate design — a subscription platform that supports the B2B model, orders generated from your ERP, or a reminder and a saved cart the buyer confirms.

NEXT STEP

Free store audit

A senior Shopify engineer reviews your storefront, theme performance and checkout, then sends a prioritised list of fixes.