EOQ Formula and Calculator
EOQ = √(2DS ÷ H). Selling 24,000 units a year at $450 an order and $3.00 a unit a year to hold, EOQ = √7,200,000 ≈ 2,683.28, so order 2,684 units.
Price breaks, cost tolerance and calendar
The price breaks are example figures. Leave a break blank to switch it off.
Formula with your numbers√(2 × 24,000 × 450.00 ÷ 3.00) = √7,200,000 ≈ 2,683.28 → 2,684 units
Order options compared
| Option | Order qty | Orders a year | Ordering | Holding | Goods | Total a year | vs EOQ |
|---|---|---|---|---|---|---|---|
| EOQ in whole units | 2,684 | 8.94 | $4,024 | $4,026 | $288,000 | $296,050 | — |
| Rounded to packs of 48, MOQ 1,000 | 2,688 | 8.93 | $4,018 | $4,032 | $288,000 | $296,050 | +under $1 |
| Price break 1: 5,000+ at $11.82 | 5,040 | 4.76 | $2,143 | $7,447 | $283,680 | $293,269 | −$2,780 (−0.94%) |
| Price break 2: 12,000+ at $11.70 | 12,000 | 2.00 | $900 | $17,550 | $280,800 | $299,250 | +$3,200 (+1.08%) |
The highlighted row is the cheapest option that respects your pack size and minimum. Goods cost uses the unit cost that applies at that quantity.
Cost of ordering more or less
| Order size | Units | Ordering | Holding | Ordering + holding | Extra vs EOQ |
|---|---|---|---|---|---|
| 0.50 × EOQ | 1,342 | $8,047.69 | $2,013.00 | $10,060.69 | +24.98% |
| 0.75 × EOQ | 2,013 | $5,365.13 | $3,019.50 | $8,384.63 | +4.16% |
| 1.00 × EOQ | 2,684 | $4,023.85 | $4,026.00 | $8,049.85 | +0.00% |
| 1.25 × EOQ | 3,355 | $3,219.08 | $5,032.50 | $8,251.58 | +2.51% |
| 1.50 × EOQ | 4,025 | $2,683.23 | $6,037.50 | $8,720.73 | +8.33% |
| 2.00 × EOQ | 5,367 | $2,012.30 | $8,050.50 | $10,062.80 | +25.01% |
The calculation runs in your browser. EOQ rounds up to a whole unit; the pack row takes the cheaper full pack either side. The tolerance range rounds its lower limit up and its upper limit down, so every quantity in it qualifies.
How to Calculate EOQ in 5 Steps
- Pick one SKU and one year. EOQ works per item. A product family hides the differences that matter.
- Get annual demand, D. Units sold in the last 12 months, adjusted for growth you can already see.
- Price one order, S. Add every cost that happens once per order, whatever its size.
- Price holding one unit for a year, H. Capital, storage, insurance, shrinkage and obsolescence, per unit.
- Apply the formula and round up. EOQ = √(2 × D × S ÷ H), then round up to a whole unit and to your pack size.
| Symbol | Meaning | Unit | Where the number comes from | Most common mistake |
|---|---|---|---|---|
D | Annual demand | Units a year | Order history for this SKU, all channels that draw on the same stock. | Using revenue instead of units. |
S | Cost per order | USD per order | Admin, brokerage, receiving and fees for one inbound order. | Including the cost of the goods. |
H | Annual holding cost per unit | USD per unit a year | Your holding rate times unit cost, or a measured dollar figure. | Counting only the storage line. |
EOQ | Economic order quantity | Units per order | The output: where ordering and holding cost balance. | Ordering the decimal instead of rounding to packs. |
A Dallas, Texas Brand Importing One SKU
A kitchenware brand ships from a warehouse in Dallas, Texas and buys one hero SKU from an overseas supplier. These are the calculator's default inputs.
| Cost per order (S) | Example |
|---|---|
| Purchase order adminRaising, approving and chasing the PO | $55 |
| Customs entry and brokerageOne entry per inbound shipment | $175 |
| Receiving and putawayDock, count and putaway for one delivery | $120 |
| Payment and bank feesOne international transfer | $35 |
| Pre-shipment inspectionOne inspection visit per order | $65 |
| S | $450 |
| Holding rate (H) | Example |
|---|---|
| Cost of capitalWhat the cash tied up in stock would earn or cost elsewhere | 10% |
| StoragePallet or bin charges for the space the stock occupies | 8% |
| Shrinkage and obsolescenceDamage, write-offs and markdowns on aging stock | 5% |
| InsuranceCover on stored inventory | 2% |
| Rate × $12 unit cost | 25% = $3.00 |
| Output | Arithmetic | Result |
|---|---|---|
| EOQ | √(2 × 24,000 × 450 ÷ 3.00) = √7,200,000 | 2,683.28 → 2,684 units |
| Orders a year | 24,000 ÷ 2,683.28 | 8.94 |
| Days between orders | 365 ÷ 8.94 | 40.8 days |
| Annual ordering cost | 8.94 × $450 | $4,024.92 |
| Annual holding cost | (2,683.28 ÷ 2) × $3.00 | $4,024.92 |
| Ordering + holding | √(2 × 24,000 × 450 × 3.00) | $8,049.84 |
- Rounded to cartons of 48, the cheaper multiple is 2,688 units, 56 cartons. The 1,000-unit minimum does not bind.
- Any order from 2,198 to 3,276 units stays within 2% of the minimum ordering and holding cost.
- The 5,000-unit break at $11.82 means ordering 5,040 units. It saves $2,780 a year in total cost against EOQ.
- The 12,000-unit break at $11.70 costs $3,200 a year more than EOQ. The extra holding cost outweighs the lower price.
Ordering Cost and Holding Cost Meet at EOQ
Order more often and you pay the fixed cost more times. Order less often and you carry more stock. On the example, the total is lowest where the two lines cross.
| Order quantity | Orders a year | Ordering cost | Holding cost | Ordering + holding |
|---|---|---|---|---|
| 1,000 units | 24.00 | $10,800.00 | $1,500.00 | $12,300.00 |
| 2,000 units | 12.00 | $5,400.00 | $3,000.00 | $8,400.00 |
| 2,684 units (EOQ) | 8.94 | $4,023.85 | $4,026.00 | $8,049.85 |
| 3,500 units | 6.86 | $3,085.71 | $5,250.00 | $8,335.71 |
| 5,000 units | 4.80 | $2,160.00 | $7,500.00 | $9,660.00 |
A built-in check
At EOQ, ordering cost equals holding cost. If your two figures are far apart, the quantity is not the optimum.
A shortcut for the total
Ordering plus holding cost at EOQ is √(2DSH), which is twice either half.
A direction
If ordering cost is the larger half, order more each time. If holding cost is larger, order less.
Being a Little Off EOQ Is Cheap
For an order of r times EOQ, ordering plus holding cost is (r + 1 ÷ r) ÷ 2 times the minimum. D, S and H cancel out, so these percentages hold for every SKU.
| Order size | Extra ordering + holding cost | Units on the example | What it means |
|---|---|---|---|
| 0.50 × EOQ | +25.00% | 1,342 | Half the order costs as much extra as double the order. |
| 0.75 × EOQ | +4.17% | 2,013 | A quarter under EOQ: noticeably more ordering cost. |
| 0.90 × EOQ | +0.56% | 2,415 | A 10% round-down to a pack or pallet. |
| 1.00 × EOQ | +0.00% | 2,684 | The bottom of the curve. |
| 1.10 × EOQ | +0.45% | 2,952 | A 10% round-up to a pack or pallet. |
| 1.25 × EOQ | +2.50% | 3,355 | Rounding up a quarter costs less than going a quarter under. |
| 1.50 × EOQ | +8.33% | 4,025 | Half again as much stock. |
| 2.00 × EOQ | +25.00% | 5,367 | Double the order: the same penalty as halving it. |
Round to the packaging
Even a 25% round-up to a full pallet adds only this much. Clean handling is usually worth it.
Round to the calendar
8.94 orders a year runs better as 9 orders of 2,667 units. On the example that costs this much extra.
Stop refining S
If S is 20% too high, EOQ moves 9.5% and the cost penalty is this small. Estimate once, then move on.
EOQ With Supplier Price Breaks
Classic EOQ ignores the unit price. When a supplier cuts the price at a volume, purchase cost enters the comparison and the answer can jump to the break.
- Compute EOQ at each price. If H is a percentage of unit cost, it falls with the price, so each tier has its own EOQ.
- Lift it to the break. If a tier's EOQ is below its minimum, use the minimum, rounded up to a full pack.
- Add the goods. Total cost = D × price + ordering cost + holding cost.
- Take the lowest total. Compare every tier, including the base price, and order that quantity.
| Tier on the example | Unit cost | Order qty | Ordering + holding | Goods a year | Total a year | vs EOQ |
|---|---|---|---|---|---|---|
| Base price, pack-rounded | $12.00 | 2,688 | $8,050 | $288,000 | $296,050 | +under $1 |
| From 5,000 units | $11.82 | 5,040 | $9,589 | $283,680 | $293,269 | −$2,780 (−0.94%) |
| From 12,000 units | $11.70 | 12,000 | $18,450 | $280,800 | $299,250 | +$3,200 (+1.08%) |
EOQ vs MOQ vs Reorder Point vs Safety Stock
| Term | Answers | Set by | How it relates to EOQ |
|---|---|---|---|
| EOQ | How much to order | You, from D, S and H | The cost-minimizing order size. |
| MOQ | The least you may order | The supplier | If MOQ is above EOQ, order the MOQ. |
| Reorder point | When to order | Lead-time demand plus safety stock | Triggers each EOQ-sized order. |
| Safety stock | How much buffer to hold | Demand and lead-time variability | Sits under the EOQ cycle and adds to average stock. |
| Cycle stock | What you carry on average | Order quantity ÷ 2 | 1,342 units at EOQ on the example. |
Set the trigger with the reorder point calculator, size the buffer with the safety stock calculator, and build H with the carrying cost calculator.
What Belongs in S and What Belongs in H
Ask one question of every cost line: would it change if the order doubled? If not, it is S. If it scales with the stock you carry, it is H.
Belongs in S (per order)
- Raising and approving the purchase order
- Freight booking fees and minimum charges
- Customs entry and broker fees per declaration
- Receiving, count and quality check per delivery
- Bank transfer or letter-of-credit charges
- Inspection or lab testing per production run
Belongs in H (per unit, per year)
- Cost of capital on the cash tied up in stock
- Storage charges for the space the stock uses
- Insurance on stored inventory
- Shrinkage, damage and miscounts
- Obsolescence and markdowns on aging stock
- Cycle counts and relocations caused by holding it
EOQ Formula in Excel or Google Sheets
There is no EOQ function, but six cells rebuild this calculator. The formulas work the same in Google Sheets.
| Cell | Holds | Formula or value | Example result |
|---|---|---|---|
| B1 | Annual demand | 24000 | 24,000 |
| B2 | Cost per order | 450 | $450 |
| B3 | Holding cost per unit a year | =12*25% | $3.00 |
| B4 | EOQ, whole units | =ROUNDUP(SQRT(2*B1*B2/B3),0) | 2,684 |
| B5 | Orders a year | =B1/B4 | 8.94 |
| B6 | Ordering + holding cost | =B1/B4*B2+B4/2*B3 | $8,049.85 |
What the EOQ Model Assumes
| The model assumes | What actually happens | What to do about it |
|---|---|---|
| Demand is steady and known | Promotions and seasons move it. | Use EOQ for the average order size and hold safety stock for the swings. |
| Cost per order is fixed | Freight steps up at container and weight breaks. | Check EOQ against the shipping breaks and test the nearest one. |
| One price at any quantity | Suppliers offer price breaks. | Enter the breaks above and compare total cost. |
| The whole order lands at once | Own production arrives gradually. | Use the production order quantity model, which allows a larger batch. |
| No planned stockouts | Some slow movers run on backorder. | A planned-backorder model allows a larger order. |
Short life cycles
Fashion drops and seasonal one-offs have one selling window, not a repeating cycle.
No demand history
A new SKU gives D nothing to stand on. Start from a plan, then switch to EOQ.
Shelf life or cash caps
When expiry or a working-capital limit caps the order, EOQ is not the binding number.
Six EOQ Mistakes
Mixing monthly and annual
A monthly H with annual D gives 9,296 units on the example instead of 2,684.
Counting only storage in H
An H of $0.90 (storage alone, example) gives 4,899 units. At the true $3.00, that order costs 18.7% more to order and hold.
Putting goods cost in S
S is the cost of the transaction. The price of the goods belongs only in the price-break comparison.
Ordering the decimal
Nobody ships 2,683.28 units. Round up to a unit, then to the cheaper full pack.
Taking every price break
The 12,000-unit break on the example looks cheaper per unit but costs $3,200 a year more in total.
Setting it once
Re-run EOQ when demand, freight or the supplier changes, and on a regular review.
Related Inventory Planning Tools
See all free logistics tools, or read how Locad handles warehousing and ecommerce fulfillment for the stock each order creates.
EOQ Formula Questions
Need Somewhere for Each Order to Land?
Talk to Locad about receiving, storage and fulfillment for the stock your order plan creates.