Case-pack maths is one of those problems that looks like a rounding error and behaves like a margin leak. Stock lands in cartons of 12. A customer orders 7. Someone opens the box, picks 7, and you now hold 5 units that are harder to sell, in packaging that is no longer sealed.
The rule you want is an increment, not a minimum
Merchants often reach for a minimum here, and it only half works. A minimum of 12 stops an order for 7 — and permits an order for 19, which breaks a carton just as thoroughly.
What you actually want is an increment: quantities must be multiples of the pack size. Shopify's quantity rules documentation describes exactly this, using boxes of ten as the example — set the increment to 10 and customers must buy 10, 20 or 30. It also notes that "the default increment that a product can be purchased in is 1", and that "increment rules apply to product variants", so a product whose variants ship in different pack sizes can carry different increments.
Increments and minimums compose: an increment of 12 with a minimum of 24 means the smallest order is two cartons, and every order after that moves in whole cartons.
Where Shopify has this natively
Increment rules are part of B2B catalogs. You set them in the Catalogs section of the admin, per product or per individual variant, and Shopify supports setting them by CSV import — which is the only sane route if you carry thousands of SKUs with different pack sizes.
The limitation is the same one that applies to every native quantity rule: it belongs to a B2B catalog, and the Help Centre notes that "Shopify B2B features are included on plans that support B2B capabilities." If you sell case packs to retail customers, or to wholesale buyers you identify with a customer tag rather than formal company accounts, the native path is closed.
Per-variant is usually the real requirement
Pack size rarely stays constant across a product. The same tea might ship 12 to a carton in 100g and 6 in 250g. Shopify's native rules handle this — the documentation states that "increment rules apply to product variants", and rules can be set for all variants of a product or for a specific one — and any replacement needs to as well. A rule applied at product level to a product whose variants disagree will be wrong for most of the catalogue.
Tell the customer before the cart
Increment rules are the least intuitive limit type. "Minimum 12" is instantly legible; "must be a multiple of 12" is not, and a customer who types 20 and gets refused at checkout has learned your rule the expensive way.
Shopify exposes a quantity_rule Liquid object so a theme can display the increment, minimum and maximum on the product page. Use it, or whatever equivalent your app provides. Displaying the rule is not enforcement — theme code runs in the browser — but it converts a rejection into an expectation, and that is most of the conversion damage avoided.
Then enforce it somewhere the browser can't reach
The enforcement layer is a validation function, which Shopify describes as running "on Shopify's servers" and providing enforcement that "can't be bypassed by customers" in its cart and checkout validation documentation. Since January 2024, merchants on any plan can use one supplied by a public App Store app.
For case packs specifically, that server-side layer earns its keep in one place: Buy Now. It skips the cart entirely, so a limit that lives on your cart page never runs — and a single Buy Now order for 7 units is all it takes to open a carton.


