Economic order quantity is the order size that minimizes the sum of two costs pulling against each other: ordering cost (fixed cost per purchase order, so fewer, bigger orders look attractive) and holding cost (cost per unit sitting in stock, so smaller, frequent orders look attractive). EOQ is where the two curves cross, and even sellers who never plug in the formula profit from its logic.
The formula and a worked example
EOQ = sqrt( (2 x D x S) / H )
- D = annual demand in units
- S = cost per order (admin time, shipping minimums, handling)
- H = holding cost per unit per year (storage, capital, insurance, obsolescence risk, commonly 20-30 percent of unit cost)
Example: a SKU sells 1,200 units a year (D). Placing and receiving an order costs about $40 all-in (S). The unit costs $10 and you estimate holding at 25 percent, so H = $2.50.
EOQ = sqrt( (2 x 1200 x 40) / 2.5 ) = sqrt(38,400) = about 196 units per order, roughly six orders a year.
What the formula actually teaches
Order size grows with the square root of demand. Double the sales and the right order size grows about 1.4x, not 2x. The instinct to scale purchase orders linearly with growth systematically overstocks, dead stock’s favorite origin story.
Holding cost is real even when invisible. The 25 percent estimate is the formula’s way of charging you for shelf-sitting cash, turnover math is the same lesson from the other side.
Cheap ordering changes everything. If ordering is nearly free (a supplier portal, no minimums), S collapses and EOQ shrinks: order small, order often, hold little. Much of modern lean purchasing is just engineered-down S.
Where EOQ bends in real ecommerce
The textbook assumptions (steady demand, fixed costs, no discounts) bend everywhere in practice, and the formula still helps if you bend it consciously:
- Quantity discounts: compare total annual cost at EOQ versus at the discount tier, including the extra holding. Sometimes the discount wins; the point is to run the comparison instead of grabbing the discount reflexively.
- Seasonal demand: use seasonal D per period rather than a flat annual number, or plan season buys as their own exercise.
- Shipping brackets and MOQs: real orders snap to carton sizes, container fractions, and supplier minimums; treat EOQ as the target and snap to the nearest sane bracket.
- Shelf life and trend risk: perishable or fashion-adjacent goods deserve an H estimated honestly high, obsolescence is a holding cost.
EOQ and the reorder point: partners, not rivals
The two formulas answer different questions on the same timeline: the reorder point fires the order at the right moment (demand during lead time plus safety stock); EOQ sizes the order it fires. Multichannel sellers feed both the same input, combined cross-channel velocity per SKU, which is why continuously computed per-SKU demand (days-of-cover data) quietly powers the whole purchasing loop.
Common questions
Is EOQ worth computing for every SKU?
No. Run it for A-items and any SKU with painful ordering or holding economics; the C-tail does fine on simple batch rules.
How do I estimate cost per order honestly?
Count the touches: time to place and confirm, receiving and shelving labor, inbound shipping minimums, payment fees. Most small sellers land between $20 and $80, precision matters less than not pretending it is zero.
What holding-cost percentage should I use?
20-30 percent of unit cost per year is the standard band; go higher for bulky, fragile, trend-exposed, or perishable goods.
Does EOQ apply to made-to-order or dropship models?
Not really, both models outsource holding. EOQ is a stocked-inventory tool; its cousin lessons (batch sanity, setup-cost awareness) still travel.
Size the order with data you already have
Cross-channel demand computed continuously from $49/month with unlimited orders, with per-SKU demand, live cover and reorder signals, the inputs EOQ and reorder points both eat, on the plans above. See pricing.