Economic order quantity (EOQ) for a Shopify store — the formula, a worked example, and when to ignore it
The economic order quantity formula on a real Shopify store — where each input comes from, when to trust EOQ, and when order-up-to beats it.
InventoryX is in development and not available today. ClearStock is the live Shopify app.
Economic order quantity (EOQ) is the order size that minimizes the total of two opposing costs: what you pay to place orders and what you pay to hold the stock you ordered. The formula is EOQ = √(2DS ÷ H), where D is annual demand in units, S is the cost of placing one order, and H is the annual cost of holding one unit (the formula dates to Ford W. Harris's 1913 factory-production paper, with the assumptions worked through in standard operations-management texts such as Silver, Pyke & Thomas — accessed October 2026). Plugging in real numbers takes about ten minutes with data you already have. Whether you should obey the answer is a different question — EOQ's assumptions rarely hold for a store with 300 SKUs, seasonal demand, and a supplier who quotes lead times loosely. This article shows the calculation on a realistic SKU, tells you where each input comes from, and gives you the honest decision rule for when to use EOQ and when a simpler order-up-to target wins.
The EOQ formula and what each letter actually costs you
EOQ = √(2DS ÷ H)
- D — annual demand. Units sold per year. If your store sells 4.4 units/day, D = 4.4 × 365 ≈ 1,606. Pull this from your sales data, and adjust it upward if the SKU went dark at any point in the last year — a plain average counts days with zero inventory as zero demand and quietly deflates D. If you know the SKU sat at zero for two weeks in March, add those missed sales back by hand before running the math.
- S — cost per order. Not the price of the goods — the cost of ordering them. Add up what one purchase order actually costs you: the time to build and send it, the email chasing, receiving and put-away labor, and any fixed freight or handling fee per order that doesn't scale with quantity. For a small store this is commonly $20–$60 per order. Estimate yours honestly; this is a planning input, not a measurement.
- H — annual holding cost per unit. Your unit's landed cost multiplied by your carrying rate. If you've already worked out your carrying cost rate — the percentage your stock costs you per year just to exist — H is unit cost × that rate. Don't rebuild the component math here; the carrying-cost article owns it. H is where EOQ gets its teeth: the more expensive it is to hold stock, the smaller the optimal order.
EOQ answers exactly one question: how much to order. When to order is a separate mechanism — the reorder point answers that one, and the two work as a pair without either needing to know the other's math.
Worked example: a phone-stand SKU
Say you sell a phone stand, SKU STND-DK-01, that moves 4.4 units/day steadily — call it 1,606/year. Landed cost is $5.80/unit. Your carrying rate is 22% (your own build — rent share, credit line, shrinkage, markdowns). Ordering a batch from your supplier costs you about $35 all-in: an hour of your time, receiving, and a fixed $12 documentation fee per shipment.
- D = 1,606
- S = $35
- H = $5.80 × 0.22 = $1.28/year
EOQ = √((2 × 1,606 × 35) ÷ 1.28) = √(112,420 ÷ 1.28) = √87,828 ≈ 296 units
Read that as: ordering ~296 units at a time, roughly 5–6 times a year, minimizes the combined ordering-plus-holding cost under the formula's assumptions. At that quantity, average stock sits around 148 units, tying up about $858 at cost — roughly $189/year of carrying cost — and you pay for about 5.4 orders a year.
Now test the edges, because EOQ is famously flat near its optimum. Order 220 instead: holding cost drops, ordering cost rises, and total cost moves by a few dollars a year. Order 288 (a supplier's case pack, say) and the penalty is still small. This flatness is the formula's most useful, least-taught property: you have wide latitude to bend EOQ toward real-world constraints — case packs, MOQs, freight breakpoints — without meaningfully costing yourself. The optimum is a region, not a number.
Where EOQ's assumptions break for a store your size
EOQ was built for a world of constant demand, instant replenishment, one product at a time, and costs that stay put. Your store violates most of that:
- Demand isn't flat. A steady 4.4/day in October can be 9/day in December. An EOQ computed on annual averages will under-order the peak and over-order the trough.
- Suppliers offer quantity breaks. A real price list often discounts the 500-unit order enough to beat EOQ's arithmetic. EOQ in its textbook form assumes unit cost never changes with quantity — false for almost every quote you've received.
- Cash and shelf space are finite. EOQ has no opinion about your credit line or your storage room. It will cheerfully tell you to order a quantity you can't afford or can't house.
- Freight dominates. For an importer, the real cost driver per order is often freight, which scales in steps (a pallet, a container), not smoothly.
None of this makes EOQ useless. It makes it a starting point rather than an oracle.
When to respect EOQ, when to order up instead
A workable rule set:
| Situation | What to do |
|---|---|
| Steady seller, stable supplier, no quantity breaks | Run EOQ, round to the nearest case pack |
| Supplier gives a quantity discount | Compute EOQ, then price out the discounted tier and compare total annual cost (goods + ordering + holding) — take the bigger order only if the discount beats the extra holding cost at your rate |
| Seasonal SKU | Re-run the math per season with that season's demand, or use EOQ off-season and order-up-to into the peak |
| You're ordering the top 20 SKUs every week anyway | Skip EOQ; an order-up-to target is simpler and adapts weekly |
| MOQ exceeds EOQ | You're already over-ordering by definition — weigh the MOQ against your real numbers or negotiate |
The honest truth: for a 300-SKU store, order-up-to ordering — replenish to a target that covers lead-time demand plus a buffer — does 90% of EOQ's job and adapts as demand shifts. EOQ earns its keep in three spots: setting a sane default quantity for new SKUs with no order history, sanity-checking whether your habitual case count is wildly off, and quantifying the trade when a supplier offers a discount for a bigger buy. Treat it as a benchmark, not a law.
One operational note: whichever quantity rule you use, it only works if the timing is right. The quantity math and the trigger math are separate — if your reorder trigger ignores your real supplier lead time, a perfect EOQ just gets you the wrong amount of stock, later than you needed it.
Where this fits in your stack
None of the tools we checked — native Shopify and the main forecasting apps — computes EOQ for you as of October 2026; native Shopify handles purchase orders, counts, and supplier records (Shopify Help Center, inventory and purchases, accessed October 2026), but order-quantity decisions stay with you, in your spreadsheet or your head. InventoryX's weekly Buying List sizes reorders against in-stock-only velocity and your lead times — an order-up-to approach, not an EOQ engine — so if you use both, the spreadsheet EOQ is your quantity benchmark and the Buying List is your weekly trigger.
Common questions
What is the EOQ formula? EOQ = √(2DS ÷ H), where D is annual unit demand, S is the cost of placing one order, and H is the annual cost of holding one unit. It finds the order size where ordering costs and holding costs balance. For a SKU selling 1,600/year with $35 orders and $1.28/unit holding cost, EOQ is about 296 units.
What is a good EOQ example for a small store? A phone stand selling 4.4 units/day (D ≈ 1,606/year), $35 to place an order, $5.80 unit cost at a 22% carrying rate gives H = $1.28 and EOQ ≈ 296 units. Because the cost curve is flat near the optimum, rounding to 300 or to the supplier's 288-unit case pack costs you almost nothing.
What are the limitations of EOQ? It assumes constant demand, fixed unit costs, unlimited cash and storage, and smooth ordering costs — none of which hold for most small stores. Quantity discounts, seasonality, and freight breakpoints all break it. Use it as a starting point or sanity check, and adjust for real-world constraints rather than obeying the raw output.
What's the difference between EOQ and reorder point? They answer different questions. The reorder point tells you when to order — it's a stock level trigger based on lead-time demand. EOQ tells you how much to order once triggered. They're complementary: trigger at the reorder point, order the EOQ quantity.
Is EOQ worth calculating for a small Shopify store? For a handful of high-volume SKUs, yes — it takes ten minutes and catches habitual over- and under-ordering. For your full catalog, no: a simple order-up-to target maintained weekly fits a 300-SKU store better. Use EOQ where it's cheap to compute and use the savings where they're real.
Next step
Pick your single fastest-moving SKU and run the formula tonight — D from last year's true sales, S estimated at $35, H from your unit cost and carrying rate. Compare the answer to what you actually ordered last time. If they differ by more than ~40%, you've either been paying an ordering or holding penalty, or a constraint (MOQ, case pack, discount tier) is doing the deciding for you — and now you'll know which.