← Back to Blog
Inventory StrategyMay 22, 20268 min read

Economic Order Quantity (EOQ): Formula, Examples, and When It Helps

Economic Order Quantity is one of the oldest formulas in inventory management — and one of the most misunderstood. It answers a single question: how much should you order at a time? Order too little and you place orders constantly, racking up ordering costs. Order too much and you drown in carrying costs. EOQ finds the quantity that minimizes the two combined. This guide covers the formula, a worked example, and — just as important — when EOQ actually helps and when it does not.

What Is Economic Order Quantity?

EOQ is the order quantity that minimizes total inventory cost — specifically, the sum of two opposing costs. Ordering cost is what it costs to place and receive an order: purchasing labor, receiving, paperwork, freight handling. The more often you order, the more you spend here. Carrying cost is what it costs to hold inventory: storage, insurance, capital, shrinkage. The more you order at once, the more you spend here. EOQ is the sweet spot where the two are balanced and the total is lowest.

The EOQ Formula

The classic EOQ formula is:

EOQ = √(2 × D × S ÷ H)

Where:

  • D = annual demand (units per year)
  • S = ordering cost (cost to place one order)
  • H = annual holding cost per unit (carrying cost rate × unit cost)

The square root is what makes EOQ behave sensibly: doubling demand does not double the order quantity, it multiplies it by about 1.4. EOQ scales gently, which is why it does not produce wild order sizes.

A Worked EOQ Example

A distributor sells 3,600 units of a SKU per year. Each order costs $40 to place and receive. The unit costs $25, and the annual carrying cost rate is 25%, so holding cost per unit is $25 × 0.25 = $6.25.

EOQ = √(2 × 3,600 × 40 ÷ 6.25) = √(288,000 ÷ 6.25) = √46,080 ≈ 215 units

So the cost-minimizing order size is about 215 units. At 3,600 units of annual demand, that means roughly 17 orders per year — about one every three weeks. Order much smaller and ordering costs pile up; order much larger and carrying costs do. 215 is the balance point. You can run this calculation instantly with our EOQ calculator.

The Assumptions EOQ Makes (and When They Break)

EOQ is elegant because it assumes a clean world. That clean world is also where it fails:

  • Constant, known demand. EOQ assumes demand is steady. For erratic or seasonal SKUs, a single annual demand figure is a poor input.
  • Fixed ordering and holding costs. Real ordering costs vary; real carrying costs shift with warehouse utilization.
  • No quantity discounts. Basic EOQ ignores vendor price breaks — a discount at 500 units can make the "wrong" EOQ the right buy.
  • Instant replenishment, no lead time variability. EOQ says nothing about when to order — that is the job of the reorder point.

EOQ vs Reorder Point

These two are often confused but answer different questions. Reorder point answers when to order — the stock level that triggers a purchase. EOQ answers how much to order once that trigger fires. A complete reorder policy needs both: a reorder point that accounts for lead time and safety stock, and an order quantity that balances ordering against carrying cost. EOQ is half the answer, not the whole one.

When EOQ Actually Helps Distributors

EOQ is most useful for steady, predictable A-class and B-class SKUs with stable demand — there, the assumptions roughly hold and EOQ produces sensible, cost-efficient order sizes. It is least useful for erratic, seasonal, or long-tail SKUs, where demand is too lumpy for an annual average to mean much. The modern approach treats EOQ as a starting point, then adjusts for vendor price breaks, demand variability, and lead time — which is what AI-driven reorder planning does automatically. Use EOQ to understand the cost trade-off; do not treat it as gospel for every SKU.

Order the Right Quantity, Every Time

Tru-Stock AI sets order quantities per SKU — balancing demand, lead time, and carrying cost, adjusted for the variability EOQ ignores. Upload a CSV for a free analysis.