Skip to content

Economic Order Quantity (EOQ), Worked Through for Makers

The economic order quantity formula worked through on flour, the total-cost table behind it, and where shelf life and supplier minimums override it.

By Koa Sterling. Product specialist at TaroStack and small business owner. Yes, I am a real human, and I actually sit in front of a computer and write these articles. Reviewed October 12, 2026 · 6 min read

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.

Questions people also ask

What is the EOQ formula?

EOQ = √(2 × D × S ÷ H), where D is yearly demand, S is the cost of placing one order and H is the yearly cost of holding one unit. In the example, √(2 × 104 × $25 ÷ $14) = 19.3 bags.

What is an example of economic order quantity?

A bakery using 104 bags of flour a year, with $25 per order and $14 a year to hold a bag, has an EOQ of about 19 bags, ordered five or six times a year.

Does EOQ work for perishable goods?

Only as a starting point. An order can't be bigger than what you'll use before its date. In the example, fresh coconut cream's EOQ is 114 cartons, but with a two-week life the order is about 15.

What are the limitations of EOQ?

It assumes steady demand, fixed costs and stock that keeps, and it ignores price breaks and supplier minimums. Use it to set a sensible order size, then adjust for shelf life, minimums and space.

We use AI to help with the research for these articles. Every one is read, checked against its sources and edited by Koa before it's published. Spot a mistake? Tell us and we'll fix it and say so. How we write these.

Let’s get your stack in order.

Get TaroStack

Sign up now for your free 30 day trial. No credit card required.