August 14, 2026 · CostSentry

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 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.

PackUnit priceOrders/yrAvg stockCarrying/yrEffective/unit
12$6.7510.0$40.50$8.10$6.82
25$6.404.8$80.00$16.00$6.53
100$5.851.2$292.50$58.50$6.34
250$5.400.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:

Margin at $14.95 retail · (price − cost) ÷ price
25-pack · $6.53 effective56.3%
100-pack · $6.34 effective57.6%
250-pack · $6.53 effective (deepest discount)56.3%

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.

Ordering cost belongs to the order, not the pack. The obvious objection to the 12-pack is ten receipts a year — but receiving, putaway and invoice handling are paid per purchase order, not per line. If that part ships on a PO you'd place anyway alongside forty other lines, the incremental cost is close to zero. Order frequency is a supplier-level decision; pack size is a line-level one. Mixing them produces an argument for over-buying everything.

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%)
14 units/year · pack of 25 · $39.95 retail
Margin at the file cost of $18.0054.9%
Margin at the effective cost of $21.2146.9%
Months of supply in one pack21.4

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 invisible increase. Last file: $160.00 per pack, pack of 25 → $6.40 a unit. This file: $160.00 per pack, pack of 20 → $8.00 a unit. The price column did not move. Your cost went up 25%. Any diff that compares the price column and ignores the pack column reports "no change" on this line, and every margin report downstream is wrong until someone notices by hand.

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:

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.

A working rule

Set a ceiling on months of supply per pack and let it decide, rather than reading the discount column:

Line typeMax months of supply in one packWhy
Fast movers, stable spec2–3Cash matters more than the discount; you reorder often anyway
Mid-range, stable spec4–6Where pack discounts genuinely pay
Tail, stable specup to 12Accept it, but price at effective cost
Anything dated, seasonal or supersession-prone3–4Obsolescence 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 ↗
Runs in your browser. Nothing uploaded, no account.