Economic order quantity, or EOQ, is the order size that keeps the total of two costs as low as possible: the cost of placing orders, which falls as orders get bigger and fewer, and the cost of holding stock, which rises as they do. The formula is EOQ = √(2 × yearly demand × cost per order ÷ yearly holding cost per unit). For a bakery using 104 bags of flour a year, with $25 of cost per order and $14 a year to hold a bag, EOQ is about 19 bags. It's a good starting point, but for a small maker two things often override it: shelf life, which caps how much perishable stock you can hold, and supplier minimums. Below is the formula worked through, the cost table behind it, and when to ignore it.
The short version
- EOQ = √(2 × D × S ÷ H): D is yearly use, S is cost per order, H is the yearly cost of holding one unit.
- Cost per order is your time to order and receive, plus any delivery fee.
- Holding cost is often taken as 20% to 30% of the item's cost a year.
- The total cost is flat near the EOQ, so a round number close to it is fine.
- Shelf life caps the order for anything perishable.
- A supplier's minimum or price break can make a bigger order cheaper overall.
- TaroStack orders to the levels you set and rounds to the supplier's terms. More below.
The formula
EOQ = √(2 × D × S ÷ H)
D yearly demand, in units
S cost of placing one order (time to order and receive, delivery fee)
H cost of holding one unit for a year (cash tied up, space, insurance, spoilage)
Holding cost is the one people guess. A common rule of thumb is 20% to 30% of the item's cost a year, covering the cash it ties up, the shelf it takes, insurance and the chance it spoils or gets damaged. Use 25% if you have nothing better.
Worked through: bread flour
Windward Roots, the made-up taro business I use in these examples, uses 104 bags of bread flour a year (2 a week), at $56 a 50 lb bag. Placing and receiving an order costs about $25 in time and the delivery fee, and holding a bag for a year costs 25% of $56, which is $14.
EOQ = √(2 × 104 × $25 ÷ $14)
= √(5,200 ÷ 14)
= √371.4
= 19.3 bags
So order about 19 bags at a time, roughly every 9 or 10 weeks, which is between five and six orders a year.
Why it works: the total-cost table
| Order size | Orders a year | Ordering cost | Holding cost | Total |
|---|---|---|---|---|
| 5 bags | 20.8 | $520 | $35 | $555 |
| 10 bags | 10.4 | $260 | $70 | $330 |
| 19 bags | 5.5 | $137 | $133 | $270 |
| 30 bags | 3.5 | $87 | $210 | $297 |
| 52 bags | 2.0 | $50 | $364 | $414 |
Ordering cost is orders a year × $25; holding cost is half the order (the average on the shelf) × $14. At the EOQ the two are about equal, which is always true at the bottom. Notice how flat it is: 15 or 25 bags costs less than $10 a year more than 19, so round to whatever fits the shelf and the supplier's pallet.
When shelf life overrides EOQ
EOQ assumes stock keeps. Fresh coconut cream doesn't. Suppose the kitchen uses 10 cartons a week, 520 a year, at $4.80, with $15 an order and 25% holding cost ($1.20 a carton a year):
EOQ = √(2 × 520 × $15 ÷ $1.20) = √13,000 = 114 cartons
That's more than 11 weeks of cream with a two-week life. The rule for anything perishable is that an order can't be bigger than what you'll use before its date, less a margin: here, about a week and a half of use, 15 cartons, ordered weekly or twice a week. When shelf life is the limit, the cheaper order size on paper is the one that expires. How quickly stock turns against its shelf life is in inventory turnover example.
When the supplier overrides EOQ
Two more things beat the formula. A minimum order quantity: if the supplier sells nothing under 25 bags, 25 it is. And a price break: if 50 bags come at $52 instead of $56, the $416 a year saved on 104 bags can be worth more than the extra holding cost. Compare total cost per year, including the price, at each option. How that works with a printer's minimum is in minimum order quantity.
EOQ and the reorder point
EOQ says how much to order; the reorder point says when. The reorder point is daily use × (lead time + safety days), and it's worked through in reorder point example. Together: when flour drops to the reorder point, order about 19 bags. The safety stock under both is in safety stock formula.
Where this stops working
EOQ is a one-time calculation on an average. Real use moves: the holidays double flour, a café adds an order, the supplier changes its delivery fee. An order size worked out in January is wrong by June, and for 100 items nobody redoes the sums. Meanwhile the ordering itself still happens when someone notices the bin is low, at whatever size they're used to.
How TaroStack does it
TaroStack turns the order size and the reorder point into the list you order from.
Your levels, per item and site. Set a reorder point, the least to order once you're below it (your EOQ, rounded), and a top level, and the reorder list works from them. Reorder points are suggested from how stock actually moves, so the "when" stays current as use changes. Each item shows its days of cover at the rate it's going out, with a red line where an order placed today would arrive too late, using how long that supplier's deliveries really take.
Suggested orders on the supplier's terms. The reorder list suggests how much to order: enough to get back up to your level, counting what's already on order, rounded up to whole packs and the supplier's minimum. It shows when the terms rounded it up, and warns when an order would take you past your top level. Order a whole supplier's worth in one go, and the prices come from their price list.
Shelf life comes first. Planning is shelf-life aware: its exceptions say in plain words what will expire before it's used, and it rounds suggested purchases to the minimum and order multiple you set. TaroStack forecasts which lots will expire before they're used and what they cost, so a cream order that's too big shows up as money, early.
| The job | On a spreadsheet | In TaroStack |
|---|---|---|
| How much to order | An EOQ worked out once | Your level, rounded to the supplier's terms |
| When to order | When the bin looks low | Reorder point from real use, days of cover |
| Perishables | The same formula, then waste | Expiry forecast, shelf-life aware planning |
| Supplier minimums | Remembered, sometimes | Built into the suggested order |
The reorder list, suggested reorder points, suppliers with their minimums, purchase orders and the expiry forecast are on every plan, from $49 a month; planning is on Standard at $99. The first 30 days are free, with no credit card. If you'd like a hand setting up, ask, and we'll do it with you.
