Economic Order Quantity (EOQ): Formula, Limits and Worked Example
For supply chain analysts, dc managers and logistics finance controllers · Understand the problem

Economic Order Quantity (EOQ): Formula, Limits and Worked Example: Illustrative warehouse rack aisle with segregated tote bin, handheld terminal, and clipboard check sheet; not a client facility.
Quick answer: eoq formula example
Economic order quantity is the order size that minimises yearly ordering plus holding cost: Q equals the square root of 2DS/H, where D is annual demand, S the cost per order and H the yearly cost of holding one unit. With freight weight breaks, recompute Q inside each band using landed unit cost and choose the lowest total annual cost.
TL;DR — what you’ll learn
- The classic formula gives 461 cases for a $40 case with 12,000 cases of yearly demand, $85 per order and a 24% holding rate.
- Value each unit at landed cost, including normal inbound freight, as ASC 330-10-30-1 and Ind AS 2 paragraph 11 require, so freight per unit changes H.
- In the worked US case a 1,600-case truckload beats the 451-case EOQ by $7,360 a year; in India a 16-tonne truck beats part load by ₹5,09,298.
- Doubling or halving the optimum raises ordering-plus-holding cost by only 25%, so freight bands, pack sizes and storage limits usually decide the final quantity.
Topics: eoq formula example · economic order quantity with freight breaks · eoq quantity discount method · when not to use eoq · landed cost holding cost
All quantities, amounts, product codes and events are illustrative teaching examples.
The replenishment screen proposes 451 cases, the buyer accepts it, and the carrier picks up a little over 11,000 lb as a less-than-truckload shipment. Nobody is wrong on the day. Twelve months later the freight analyst counts 27 partial loads for one SKU family that could have travelled in seven or eight trucks, and the planning team defends a number the textbook gave them.
The economic order quantity is a sound starting point, but on its own it ignores the single cost that moves most for heavy, low-value goods: inbound freight priced in weight breaks. This guide shows how to compute EOQ from your own ledgers, how to test it at every freight band using landed unit cost, and how to decide when the formula should be switched off.
- What you will be able to do: find D, S and H from purchase, receiving and finance records; rerun the quantity at each weight break; and compare total annual cost across bands in dollars and rupees.
- What the guide adds: a worked dataset for a US case and an Indian carton, a copy-ready band calculation, a list of conditions that break the model, and a rollout checklist for planning and finance.
Harris's square-root rule and the five inputs it quietly assumes
EOQ balances two costs that move in opposite directions: ordering more often raises order-handling cost, while ordering more at a time raises the cost of carrying stock. The quantity where the two are equal is the cheapest, provided demand is steady and every unit costs the same regardless of how many you buy at once.
Ford W. Harris published the model in 1913 in Factory, The Magazine of Management, framed as a question of how many parts a works should make at once. INFORMS reprinted the paper in Operations Research in 1990 alongside Donald Erlenkotter's history of it. The formula is unchanged, and each of its five inputs carries an assumption a planner should be able to defend in a review:
- Annual demand (D): the model assumes a constant rate, so a year of 12,000 cases means about 1,000 a month with no promotion spikes or seasonal swings.
- Cost per order (S): a fixed amount for each purchase order regardless of size, covering raising the PO, booking the dock, receiving, matching the invoice and paying it.
- Holding rate (i): the yearly cost of keeping one dollar or one rupee of stock, expressed as a percentage of unit value.
- Unit value (c): the cost at which a unit sits in inventory; the classic model treats it as independent of order size.
- Instant replenishment: the whole order arrives at once and no stockout is allowed, so safety stock and lead time sit outside the formula.
The fourth assumption is the one freight breaks violate. When a carrier charges less per hundredweight for 20,000 lb than for 10,000 lb, the landed value of a unit depends on how many you order. The rest of this guide deals with that dependency directly instead of pretending it away.
Finding demand, order cost and holding rate in your own ledgers
Every EOQ input should trace to a record a finance reviewer can open. A holding rate typed in from a training course, or an order cost guessed at $50 because it looks reasonable, produces a quantity no one can audit. The table below names the source and the person who signs off each figure.
Scroll horizontally to see all columns.
| Input | Where the figure comes from | Owner of the data | Who approves the value used |
|---|---|---|---|
| Annual demand D | Twelve months of shipments or forecast consumption for the SKU at that DC | Demand planner | Supply planning manager |
| Cost per order S | Activity costing of PO creation, dock appointment, receiving labour, three-way match and payment run | Logistics finance analyst | Financial controller |
| Purchase price c | Supplier price list or contract, net of recoverable tax | Procurement buyer | Category manager |
| Freight per unit f, by band | Carrier tariff, weight breaks and truck rates loaded in the TMS | Transport procurement | Head of transport |
| Holding rate i | Cost of capital, variable storage cost, obsolescence and insurance history | FP&A or treasury | CFO, reviewed yearly |
| Case pack, pallet and truck limits | Item master dimensions and DC slotting constraints | Master data team | DC operations manager |
Order cost is the figure most often inflated. Include only costs that disappear when you place one fewer order: the buyer's minutes, receiving labour for one more arrival, one more invoice match. Do not divide the purchasing department's annual budget by the number of POs, because most of that spend stays the same whether you raise 4,000 or 5,000 orders.
Holding rate needs its own breakdown so it survives a finance review. For the US example below we use 24% per year: 9% for capital at the company's borrowing rate, 6% for variable storage and handling, 5% for obsolescence and markdown history, and 4% for insurance, shrink and property tax on stock. These figures are illustrative; your FP&A team should supply its own.
Why inbound freight belongs inside the holding-cost unit value
Inbound freight is part of what a unit costs you on the shelf, so it belongs in c before you multiply by the holding rate. The accounting standards in both markets say the same thing, which means the EOQ input can be taken straight from the inventory valuation rather than built separately.
Under US GAAP, ASC 330-10-30-1 measures inventory at the expenditures incurred in bringing an item to its existing condition and location, which includes normal inbound freight. In India, Ind AS 2 paragraph 11 lists transport and handling directly attributable to acquisition as part of the cost of purchase and excludes taxes that are subsequently recoverable. A planner therefore uses purchase price plus freight per unit, net of any GST that is claimed as input tax credit.
EOQ for inbound replenishment should value each unit at landed cost under ASC 330-10-30-1 and Ind AS 2 paragraph 11, so freight per unit moves the holding cost H; a 24% holding rate on a $40 case plus $1.85 freight gives H of $10.04 a year.
The freight term also explains why EOQ results show up slowly in the profit and loss account. Because inbound freight is capitalised, a cheaper truck lowers inventory value first and reaches cost of goods sold only as the stock turns. A team that expects the saving in the same month's freight expense line will think the change did nothing. Our guide to inventory turnover by warehouse explains how capitalised freight moves through the valuation.
- Recoverable GST out: GST charged by a goods transport agency that you claim as credit stays out of c; GST you cannot claim becomes part of cost.
- Abnormal freight out: an expedite caused by a planning miss is a period cost, so it should not lift c for the next EOQ run.
- Duty in, if paid: for imported goods, customs duty that cannot be recovered also sits in landed cost and raises H accordingly.
Re-running the quantity at every freight break, band by band
When freight is priced in bands, compute an EOQ inside each band, push it to the band's limits if it falls outside, and then compare total annual cost across bands. The cheapest band wins even when its quantity is far from the classic answer. This is the standard all-units quantity-discount method, with freight per unit playing the role of the price break.
The procedure needs only a spreadsheet or a few lines in the planning engine. Total annual cost has three parts: what you pay for goods and freight (D times landed cost), what you spend raising orders (D divided by Q, times S) and what you spend holding stock (half of Q times H). Only the last two appear in the textbook formula; the first is the one freight breaks change.
Inputs
D = annual demand (units/year)
S = cost per order ($ or ₹ per PO)
c = purchase price per unit, net of recoverable tax
i = holding rate per year (decimal)
f_k = freight per unit in band k
m_k, M_k = smallest and largest order quantity that prices in band k
For each band k:
H_k = i * (c + f_k) # holding cost per unit-year
Q0_k = sqrt(2 * D * S / H_k) # unconstrained EOQ
Q_k = min(max(Q0_k, m_k), M_k) # push into the band
Q_k = round_up_to_case_pack(Q_k) # respect pack and pallet multiples
TC_k = D * (c + f_k) + (D / Q_k) * S + (Q_k / 2) * H_k
Choose the band with the lowest TC_k.
Tolerance: TC_k totals should agree with the ERP cost roll within 0.5%.
Two practical constraints sit on top of the arithmetic. The quantity must be a whole number of case packs, and ideally of pallet layers, so round up to the pack before costing. The top band is usually capped by what physically fits: weight limit for dense goods, floor positions or cube for light ones. Our comparison of FTL, LTL and PTL pricing explains where those crossovers sit on a lane.
Worked dataset: a heavy case in dollars and a carton in rupees
For heavy, low-value goods the full-truck quantity usually beats the classic EOQ by thousands a year, even though it holds more stock. The two datasets below are illustrative figures chosen to show the method; replace them with your own tariff and ledger values before acting on the result.
The US item is a 25 lb case bought at $40.00, with annual demand of 12,000 cases at one DC, an order cost of $85 and a holding rate of 24%. Ignoring freight, the classic formula gives about 461 cases. Freight is quoted at $9.80 per hundredweight from 5,000 lb, $7.40 from 10,000 lb, a volume quote of $5.20 from 20,000 lb, and $1,450 flat for a 40,000 lb truckload of 1,600 cases.
Scroll horizontally to see all columns.
| Freight band | Freight per case | H per case-year | Unconstrained Q | Q used | Goods plus freight | Ordering cost | Holding cost | Total annual cost |
|---|---|---|---|---|---|---|---|---|
| LTL 5,000-9,999 lb | $2.45 | $10.19 | 448 | 399 | $509,400 | $2,556 | $2,033 | $513,989 |
| LTL 10,000-19,999 lb | $1.85 | $10.04 | 451 | 451 | $502,200 | $2,262 | $2,265 | $506,727 |
| Volume 20,000-39,999 lb | $1.30 | $9.91 | 454 | 800 | $495,600 | $1,275 | $3,965 | $500,840 |
| Truckload, 1,600 cases | $0.91 | $9.82 | 456 | 1,600 | $490,875 | $638 | $7,854 | $499,367 |
The textbook answer sits in the second band at 451 cases and costs $506,727 a year. Ordering a full truck costs $499,367, a saving of $7,360, even though holding cost more than triples. The truckload holds about 49 days of demand and 40 pallets at 40 cases each, which the DC must confirm it can store before the planner changes the order quantity.
The Indian item is a 12 kg carton bought at ₹1,150 net of recoverable GST, with annual demand of 24,000 cartons at a Pune depot, an order cost of ₹1,800 and a holding rate of 20%. Part-load freight is quoted at ₹3.80 per kg (₹45.60 per carton); a 9-tonne truck costs ₹21,000 per trip for 750 cartons and a 16-tonne truck ₹30,000 for 1,333 cartons.
Scroll horizontally to see all columns.
| Truck option | Freight per carton | H per carton-year | Q used | Goods plus freight | Ordering cost | Holding cost | Total annual cost |
|---|---|---|---|---|---|---|---|
| Part load, up to 749 cartons | ₹45.60 | ₹239.12 | 601 | ₹2,86,94,400 | ₹71,880 | ₹71,856 | ₹2,88,38,136 |
| 9-tonne truck, 750 cartons | ₹28.00 | ₹235.60 | 750 | ₹2,82,72,000 | ₹57,600 | ₹88,350 | ₹2,84,17,950 |
| 16-tonne truck, 1,333 cartons | ₹22.51 | ₹234.50 | 1,333 | ₹2,81,40,135 | ₹32,408 | ₹1,56,295 | ₹2,83,28,838 |
EOQ with freight breaks for a Pune depot carton at ₹1,150 shows the 16-tonne truck at ₹2,83,28,838 a year against ₹2,88,38,136 for the 601-carton part-load EOQ, a ₹5,09,298 gap, once Ind AS 2 paragraph 11 landed cost excludes recoverable GST from the unit value.
The ranking flips for valuable goods. Rerun the US case at $400 instead of $40 and the holding cost per case rises roughly tenfold; the 400-case break then beats the full truck by about $44,000 a year. Freight breaks matter most where freight is a large share of landed cost, which is why the same SKU logic should not be applied across a whole catalogue.
How flat the cost curve is and what that buys a planner
Near the optimum, total ordering-plus-holding cost barely changes, so rounding to a pallet or a truck is cheap. Doubling or halving the economic quantity raises that part of cost by 25%; ordering 50% more raises it by about 8%. That flatness is what lets a planner respect physical constraints without losing much money.
The ratio comes straight from the formula: variable cost at any Q divided by variable cost at the optimum equals half of (Q/Q* plus Q*/Q). Because the curve is shallow, freight bands and pack sizes usually decide the final number, and the EOQ calculation serves mainly to show where the shallow bottom lies.
- Rounding to case packs: moving from 451 to 456 cases to complete a layer changes variable cost by a fraction of a percent.
- Rounding to pallets: going from 451 to 480 cases, twelve full pallets, adds roughly 0.2% to ordering-plus-holding cost.
- Jumping to a truck: 1,600 cases is 3.5 times the optimum, which raises variable cost by about 90%, and still wins once freight savings are counted.
- Input errors: because Q varies with the square root of S/H, a 20% error in order cost moves the quantity by only about 10%.
Square-root sensitivity is also a reason not to spend weeks perfecting the holding rate. A sensible figure, documented and reviewed once a year, gives a quantity within a few percent of a perfect one. Effort is better spent on freight bands, storage limits and demand pattern, which move the answer far more.
Situations where an economic order quantity misleads buyers
EOQ fails whenever demand is lumpy, prices or capacities change with quantity, or several items share one truck. In those cases use a lot-sizing method that sees the time-phased plan, or a joint replenishment calculation, and keep EOQ only as a sanity check.
- Lumpy or seasonal demand: a promotion that sells a quarter's volume in two weeks needs time-phased lot sizing from the material or distribution plan, as our comparison of MRP and DRP describes.
- Short shelf life: if a product expires in 60 days, any quantity covering more than about 45 days of demand risks write-offs the holding rate never captured.
- Supplier minimums and price breaks: a supplier's minimum order or quantity discount is another band; treat it exactly like a freight break.
- Shared trucks: when twenty SKUs from one supplier ride on one truck, the order cost and freight belong to the shipment, so compute a joint cycle for the group rather than twenty separate EOQs.
- Constrained space: if the DC is full, storage is no longer a variable cost at the margin; it is a hard limit, and the top band may be infeasible regardless of price.
- Announced price rises: buying ahead of a confirmed increase is a forward-buy decision with its own payback, not an EOQ input.
EOQ also says nothing about when to order. The reorder point, demand during lead time plus safety stock, comes from a separate calculation; our guide to safety stock for distributors with variable lead times covers that buffer, while this page covers only how much to order once the trigger fires.
The partial-load habit, traced from proposal to freight audit
Most EOQ losses do not come from bad arithmetic; they come from a correct formula applied with one input missing. The trace below follows one illustrative replenishment from a planning proposal to the year-end freight review that exposed it.
- Monday 07:40, planning run: replenishment proposal PR-24117 suggests 451 cases for the 25 lb SKU at the Columbus DC, using the EOQ field on the item master calculated from a $40.00 standard cost and no freight.
- Monday 09:15, PO release: the buyer converts it to PO 4500-8812; the TMS rates 11,275 lb in the 10,000-19,999 lb break at $7.40 per hundredweight and tenders it as LTL for $834.35.
- Thursday 14:05, receipt: goods receipt GR-5000-3391 posts 451 cases; freight bill PRO 7718-2201 matches at $834.35 and inbound freight is capitalised to the receipt.
- Year-end, freight review: the analyst finds 27 LTL loads on the SKU in twelve months against 7.5 truckloads needed for the same 12,000 cases, and the band model shows $7,360 a year left on the table.
- Correction: the planner sets a 1,600-case minimum order quantity with an effective date, records the band calculation on the change ticket, and the next PO ships as a $1,450 truckload.
Nothing in that trace would fail a three-way match: the PO, receipt and freight bill all agree. The loss is visible only when someone compares the year's freight pattern with the quantity rule, which is why the freight review should feed the order-quantity review on a fixed calendar.
Which parts of the calculation a planning engine should own
Arithmetic, band selection and rounding should be fixed rules in the planning engine; deciding whether demand is stable enough for EOQ at all, and whether the DC can store a truckload, needs a person. Software can flag those judgements, but it should not make them silently.
Scroll horizontally to see all columns.
| Task | Fixed rule in the engine | Where software or AI only assists | Who decides |
|---|---|---|---|
| Computing Q and total cost for each freight band | Yes: formula, band limits and lowest-cost selection | Not needed | Engine, logged per run |
| Rounding to case pack, layer and pallet | Yes: round up to the item master multiple | Not needed | Engine |
| Detecting a demand pattern unsuited to EOQ | Flag if coefficient of variation of monthly demand exceeds 0.5 | Model highlights promotions, launches and seasonality in the history | Demand planner |
| Reading a carrier's new tariff into band rates | Reject a band table with gaps or overlaps | Extraction tool parses the rate sheet into a draft band table | Transport procurement checks and loads |
| Confirming storage for a larger quantity | Block if pallets exceed free reserve positions | Slotting tool estimates days of cover and position needs | DC operations manager |
| Setting the holding rate | Use only the approved rate with its effective date | Analysis of write-off and markdown history | CFO or FP&A |
EOQ band selection in the planning engine should run as a logged rule that values stock at ASC 330-10-30-1 landed cost, rounds to case-pack multiples, and blocks any quantity needing more than the DC's free reserve positions, while demand-pattern checks above a 0.5 coefficient of variation go to a planner.
Putting EOQ into the reorder policy without breaking audits
Treat the order quantity as a controlled master-data value with an owner, an effective date and a recorded calculation. Changing it should leave the same audit trail as changing a price, because it moves freight spend, inventory value and storage load at once.
Start with the SKUs where freight is a large share of landed cost and demand is steady, prove the saving on a quarter of freight bills, and then widen the scope. The checklist below is the sequence we use with planning and finance teams.
Scroll horizontally to see all columns.
| Step | Check before moving on | Evidence to keep | Owner |
|---|---|---|---|
| Select candidate SKUs | Freight is at least 3% of landed cost and monthly demand variation is under 0.5 | Candidate list with freight share and variation | Supply planning manager |
| Agree inputs | S, i and band tables approved with effective dates | Signed input sheet | Financial controller |
| Run the band model | Totals tie to the cost roll within 0.5% | Model output per SKU-location | Logistics finance analyst |
| Check storage | Peak pallets fit free reserve positions with 10% headroom | Slotting confirmation | DC operations manager |
| Update item master | Order quantity and minimum order quantity carry the change ticket number | Master-data change log | Master data team |
| Measure for one quarter | Freight per unit and days of cover against the model | Freight bills and stock reports | Logistics finance analyst |
| Review yearly or on tariff change | New carrier rates or holding rate trigger a rerun | Review minutes | Head of transport |
For the wider picture of how logistics cost decisions connect, start from the Logistics & Supply Chain hub. If you are choosing planning or freight software that should run the band model, record its decisions and tie them to freight bills, you can describe your network and SKU mix through our request for proposal form.
Discuss this workflow
Describe your current systems, the recurring exception and the outcome you need. Keep shipment, customer and financial records out of the initial message.
Common operational questions
Practical answers for operations, engineering, and finance teams working on eoq formula example in logistics & supply chain.
What is the EOQ formula and what do its variables mean?
How do you include freight weight breaks in an EOQ calculation?
When should a planner not use EOQ?
Should warehouse rent be part of the holding rate?
References
Sources checked 13 November 2026. US and India statutory authorities and vendor documentation support platform facts; the worked examples and diagrams are original.
- INFORMS - Ford W. Harris, How Many Parts to Make at Once, Operations Research 38(6):947-950 (1990 reprint of Factory, The Magazine of Management, 1913)Original publication of the economic order quantity model; bibliographic details checked on the INFORMS issue listing and RePEc. Accessed 13 November 2026.
- INFORMS - Donald Erlenkotter, Ford Whitman Harris and the Economic Order Quantity Model, Operations Research 38(6):937-946 (1990)History of the 1913 model and its attribution. Accessed 13 November 2026.
- FASB - Accounting Standards Codification 330-10-30-1 (Inventory, initial measurement)Codification site requires sign-in; paragraph text checked against the verbatim excerpt in the KPMG Inventory handbook (2023), which reads inbound freight as part of inventory cost. Accessed 13 November 2026.
- KPMG - Handbook: Inventory (2023), Questions 3.2.10 and 3.2.80Reproduced ASC 330-10-30 text and guidance on inbound shipping costs. Accessed 13 November 2026.
- Ministry of Corporate Affairs - Ind AS 2 Inventories, paragraph 11 (costs of purchase)MCA blocks automated access; paragraph text checked against a reproduced copy and ICAI's Educational Material on Ind AS 2. Accessed 13 November 2026.
- ASC X12 — EDI Supply Chain & Transportation Transaction Sets (204/210/214/856/940/945)US standard for electronic data interchange across shippers, 3PLs, and motor carriers.
- FMCSA — 49 CFR Part 395 Hours of Service & Electronic Logging Devices (ELD)US federal motor carrier dispatch and driver duty-status compliance mandate.
- ULIP & NIC GST E-Way Bill Portal — Unified Logistics & Rule 138 ComplianceIndian statutory goods-in-transit and multi-modal logistics verification framework.
