MOQ and Pack Size: What a Minimum Order Actually Costs per Unit
The price in a supplier file is quoted for the quantity the supplier wants to sell, not the quantity you want to buy. When those two disagree — a pack of 100 against demand of ten a month, a $500 invoice minimum against a $320 replenishment — the difference doesn't show up anywhere in your cost field. It shows up months later as capital sitting on a shelf, and as a discount that turned out to be worth almost nothing.
Three constraints, three different costs
"MOQ" gets used for three unrelated things, and they behave differently enough that lumping them together produces the wrong decision:
- Minimum order value. A floor on the invoice — $250, $500, $1,000 — regardless of what's on it. It constrains how often you order.
- Minimum order quantity per line. A floor on each SKU: you can't buy fewer than 6 of this part, even on a big order. It constrains which lines you can restock.
- Standard pack. You must buy in multiples of the inner pack — 12, 25, 100. It constrains how much you carry, and it's the one with the real per-unit cost attached.
Minimum order value is usually the cheapest to satisfy and the one people complain about most. Standard pack is the expensive one, and it's almost never discussed.
The formula
Buying in packs bigger than your demand means carrying inventory you don't need yet. That carrying cost is real money — capital, space, insurance, the risk the item stops selling — and it converts cleanly to cents per unit:
effective unit cost = c + (Q ÷ 2 × c × h) ÷ D
c = unit cost from the price file
Q = pack size (what you're forced to order at once)
h = annual carrying rate (0.20 is a common working figure)
D = annual demand in units
The Q ÷ 2 is average cycle stock: you receive Q units, you sell down to zero, so on average you're holding half a pack. Multiply by unit cost and the carrying rate to get dollars per year, divide by annual demand to get the penalty per unit sold.
Worked: the discount that wasn't
One part. Demand 120 units a year, retail $14.95, carrying rate 20%. The supplier offers four pack options.
| Pack | Unit price | Orders/yr | Avg stock | Carrying/yr | Effective/unit |
|---|---|---|---|---|---|
| 12 | $6.75 | 10.0 | $40.50 | $8.10 | $6.82 |
| 25 | $6.40 | 4.8 | $80.00 | $16.00 | $6.53 |
| 100 | $5.85 | 1.2 | $292.50 | $58.50 | $6.34 |
| 250 | $5.40 | 0.5 | $675.00 | $135.00 | $6.53 |
The 250-pack is 20% off the 12-pack price and lands at exactly the same effective cost as the 25-pack. All the discount went into carrying 25 months of supply. And the winner — the 100-pack, priced 8.6% under the 25-pack — wins by twenty cents a unit:
An 8.6% cut in the list price bought 1.3 margin points, and the 20% cut bought nothing at all. This is the general shape: pack discounts have a peak, and past it the carrying cost eats the concession faster than the concession grows.
Worked: the tail SKU that MOQ ruins
The arithmetic turns much less friendly at the bottom of the catalog. A slow line: 14 units a year, cost $18.00, retail $39.95, sold only in packs of 25.
average stock = 25 ÷ 2 × $18.00 = $225.00
carrying = $225.00 × 20% = $45.00/yr
per unit sold = $45.00 ÷ 14 = $3.21
effective cost = $18.00 + $3.21 = $21.21 (+17.9%)
Eight margin points, invisible in every report you have, because the cost field holds $18.00. And the carrying number understates it: 21 months is long enough for the part to be superseded, for the packaging to change, for the model it fits to leave the road. That risk is nominally inside the 20% rate, but a rate calibrated on your average SKU is the wrong rate for a line with two years of supply on the shelf.
The honest conclusion for a line like this is usually not "negotiate the pack." It's that the pack has answered the question about whether the line belongs in the catalog — the full test is in when to drop a product line. If the item is a genuine attach item that carries other sales, keep it and price it at $21.21, not at $18.00.
Minimum order value is cheaper than it feels
A $500 invoice minimum against a natural monthly replenishment of $320 sounds like a tax. Price it and it mostly isn't. Ordering every seven weeks instead of monthly puts about $517 on each invoice, across roughly 7.4 orders a year:
average cycle stock, monthly at $320 = $160
average cycle stock, 7-weekly at $517 = $259
extra carrying = ($259 − $160) × 20% = $20/yr
Twenty dollars. The real cost of a minimum order value isn't carrying, it's service: longer gaps between orders mean a stock-out anywhere in that supplier's lines waits longer for a fix, so you need more safety stock on the fast movers to hold the same fill rate. That's the number to size, and it lands on a handful of A-lines rather than spread across the order.
The failure mode to avoid is padding. Adding $180 of items you didn't need to clear a $500 threshold, twelve times a year, is $2,160 of purchasing decided by a rule rather than by demand. Ordering less often is nearly free; buying filler is not.
Pack size hides price changes
This is where pack economics stops being a purchasing question and becomes a price-file question. Suppliers quote sometimes per unit, sometimes per pack, and the two look identical in a spreadsheet column headed "Price."
The mirror case is just as common and only annoying rather than expensive: the pack goes from 25 to 30 with no price change per unit, so nothing about your margin moves, but your order value and months of supply both rise 20% and your reorder points are quietly stale.
Three defences, in order of effort:
- Store the pack quantity next to the price, from the file, every time. If the supplier's file has a pack, UOM or "sold in" column, capture it. If it doesn't, ask for it — it's on the short list of things a supplier will add for free, along with the other file requests in negotiating as a small account.
- Normalise to per-unit before you compare anything. Both files reduced to cost per selling unit, then diffed. A per-pack price compared against a per-unit price is the single most common way a price review produces confident nonsense — one of several traps in reading a supplier price list.
- Treat a pack change as an event in its own right, even when the unit cost is flat. It changes your order value, your months of supply, and often your landed cost per unit through freight and handling.
What to ask the supplier
Pack terms are more negotiable than price, for the same reason terms and freight are: they cost the supplier handling rather than margin.
- Split case, and what it costs. Many distributors will break a pack for a per-line fee. On a 12-pack where you need 5, a $4.50 split fee adds $0.90 a unit — worth it if the alternative is seven units sitting for a year, not worth it on anything that moves.
- An inner pack you didn't know about. Master carton 100, inner 25. The file often lists only the master.
- Pack-size stability. Ask to be told when a pack changes. This is the same ask as increase notice, and it's granted about as often.
- A second source with a different pack. Sometimes the fix isn't the pack at all — it's a supplier whose standard pack matches your demand shape. Compare them delivered rather than on list price, as in second-sourcing a SKU.
A working rule
Set a ceiling on months of supply per pack and let it decide, rather than reading the discount column:
| Line type | Max months of supply in one pack | Why |
|---|---|---|
| Fast movers, stable spec | 2–3 | Cash matters more than the discount; you reorder often anyway |
| Mid-range, stable spec | 4–6 | Where pack discounts genuinely pay |
| Tail, stable spec | up to 12 | Accept it, but price at effective cost |
| Anything dated, seasonal or supersession-prone | 3–4 | Obsolescence dominates the carrying rate |
Then check the exceptions deliberately: a deep pack discount above the ceiling is worth taking only when you can show the effective cost still wins, which — as the 250-pack above demonstrates — is rarer than the price list suggests.
One last structural point. Everything here is a per-unit cost that the supplier's price file does not contain and Shopify's cost field cannot hold, because that field is one number per variant with no history and no context attached. Whichever way you resolve that — file cost in the field and effective cost in your own model, or effective cost in the field and a note explaining why it doesn't match any invoice — make it a rule you write down, so that next year's margin report is comparable to this year's.
Check the file against your real margins
Drop a supplier price list and your Shopify product export into the free Supplier Price Margin Checker: cost movement per SKU, margin at your current retail, and a suggested price to hold your target — matched by SKU, entirely in your browser.
Open the free checker ↗