operations-quality · supply-chain · inventory-management

EOQ Calculator

Computes the economic order quantity that minimises ordering and holding cost, with the reorder point and quantity price breaks. Use it to set order sizes for inventory.

Last updated
Formula Focus

Calculator overview

Inputs and outputs

This summary comes from the calculator's published input and output contract.

Inputs

Shortage Cost Per Unit Per Year
About this input

The cost of being one unit short for one year, used by the planned-backorder extension. Enter 0 to disable the extension entirely: the backorder quantity and maximum planned shortage then read zero by design rather than signalling an error.

Unit currency Default 15 Range At least 0
Ordering Cost Per Order
About this input

The fixed cost of placing and receiving one order, in dollars, regardless of how many units it contains. Include purchasing effort, setup and inbound handling, not the price of the goods.

Unit currency Default 50 Range At least 0
Working Days Per Year
About this input

The number of operating days in a year, in days. It converts annual demand to a daily rate for the reorder point and cycle length.

Unit days Default 250 Range 1 to 366
Unit Cost
About this input

The purchase price of one unit, in dollars. It is used to value inventory and, when the holding cost is set as a rate, to derive the holding cost per unit.

Unit currency Default 12 Range At least 0
Lead Time
About this input

The time from placing an order to receiving it, in days. It sets the reorder point, the stock level at which the next order should be placed.

Unit days Default 14 Range At least 0
Holding Cost Method
About this input

How the annual holding cost per unit is set: entered directly as a currency amount, or computed as a percentage of unit cost. It selects which of the two inputs below is read.

Default Percentage of unit cost Allowed Cost per unit per year, Percentage of unit cost
Annual Demand
About this input

The quantity of the item consumed or sold over a year, in units per year. It drives the order quantity, so use a representative annual figure rather than a single month.

Unit units/yr Default 10000 Range At least 0
Holding Rate Conditional
About this input

The annual cost of holding stock as a percent of unit cost, covering capital, storage, insurance and obsolescence. Read only when the holding cost method is a rate.

Unit % of unit cost Default 25 Range At least 0
Holding Cost Per Unit Per Year Conditional
About this input

The cost of keeping one unit in stock for a year, in dollars, entered directly. Read only when the holding cost method is the direct amount.

Unit currency Default 5 Range At least 0

Outputs

Orders Per Year
About this output

How many orders are placed in a year at the economic order quantity, in orders: annual demand divided by the order quantity.

Unit orders
Penalty For Ordering 20 Above Optimum
About this output

The extra ordering-plus-holding cost from ordering 20 percent more than the optimum, in percent. It shows how flat the cost curve is near the optimum, so a rounded order size costs little.

Unit %
Maximum Planned Shortage
About this output

The largest deliberate shortage carried during a cycle when backorders are planned, in units, before replenishment arrives.

Unit units
Model Status
About this output

The overall check on your entries, shown above the results. It reads OK when the inputs are usable, NOT VALID with a reason when an entry makes the model meaningless, or CHECK with a reason when a result is valid but worth a second look. Read it before you trust the numbers below.

No unit declared
Quantity With Planned Backorders
About this output

The order quantity when shortages are allowed and backordered, in units, generally larger than the plain economic order quantity. Meaningful only when a shortage cost is entered.

Unit units
Total Annual Cost Excluding Purchase
About this output

The sum of annual ordering and holding cost, in dollars, without the cost of the goods themselves. This is the quantity the order size minimises.

Unit currency
Total Annual Cost Including Purchase
About this output

The total annual cost including the purchase of the goods, in dollars: ordering plus holding plus annual demand times unit cost.

Unit currency
Reorder Point
About this output

The stock level at which a new order should be placed, in units, so that supply arrives as stock runs out: daily demand times lead time.

Unit units
Saving Against The First Tier
About this output

How much the best price-break quantity saves each year against ordering at the first-tier price, using the illustrative Data-sheet tiers. A positive figure here is a property of that table; it is not a warning about your inputs.

Unit currency
Average Inventory
About this output

The average number of units on hand across a cycle, in units. With no backorders it is half the order quantity.

Unit units
Best Order Quantity With Price Breaks
About this output

The order quantity with the lowest total annual cost across the ILLUSTRATIVE five-tier price-break table on the Data sheet. Edit that table in the downloaded workbook to reflect your supplier's actual breaks; on this page it is a worked demonstration, not your tariff.

Unit units
Annual Holding Cost
About this output

The total cost of holding average inventory over a year, in dollars. At the economic order quantity it equals the annual ordering cost.

Unit currency
Annual Ordering Cost
About this output

The total ordering cost over a year, in dollars: orders per year times the cost per order.

Unit currency
Cycle Length
About this output

The time between orders, in days: the working year divided by the number of orders per year.

Unit days
Its Total Annual Cost
About this output

The total annual cost including purchase, in dollars, at the best order quantity with price breaks. It uses the fixed illustrative price-break table built into the workbook, not prices you supplied.

Unit currency
Its Unit Price
About this output

The unit price, in dollars, that applies at the best order quantity with price breaks. It comes from the fixed illustrative price-break table built into the workbook, not from a price you supplied.

Unit currency
Economic Order Quantity
About this output

The order quantity that minimises the sum of ordering and holding cost, in units. At this quantity annual ordering cost equals annual holding cost.

Unit units
Holding Cost In Use
About this output

The holding cost per unit per year actually used in the calculation, in dollars per unit per year, whether entered directly or derived from the rate and unit cost.

Unit currency/unit/yr

What it is

The Economic Order Quantity Calculator works out how much to order at a time so that the combined cost of placing orders and holding stock is as low as possible. It reports that quantity, the reorder point at which the next order should be placed, the annual ordering and holding costs, and how the answer changes when the supplier offers quantity price breaks.

The trade-off it resolves is a simple one. Ordering in large quantities means fewer orders and less ordering cost, but more stock sitting in the warehouse and more holding cost. The economic order quantity is the point where the two are equal, which is also where their sum is lowest.

It assumes demand is steady and known. Where demand is seasonal or volatile the quantity is indicative only, and safety stock is a separate calculation this tool does not perform.

Methodology

Purpose and model boundary

This model calculates the classical deterministic economic order quantity (EOQ), its ordering and holding costs, a lead-time reorder point, and two extensions: planned backorders and an illustrative quantity-price-break comparison. It supports an inventory replenishment decision for one item with stable annual demand. It does not forecast demand, optimize a multi-item or capacity-constrained system, or determine supplier prices.

The spreadsheet remains the calculation authority. The page sends the named inputs to the workbook and presents the returned values and status without recreating the equations in browser code.

Inputs and units

Input Meaning and unit
Annual demand, D Units required per year.
Ordering cost, S Currency per order.
Unit cost, c Currency per unit.
Holding cost method Selects a direct annual cost per unit or a percentage of unit cost.
Direct holding cost, H_direct Currency per unit per year; used only for the direct-cost method.
Holding rate, r Percent of unit cost per year; used only for the percentage method.
Lead time, L Days from order placement to receipt.
Working days, W Operating days per year, constrained to 1 through 366.
Shortage cost, p Currency per unit per year for the planned-backorder extension. Zero disables that extension.

Governing relationships

The holding cost used by the model is:

H = H_direct for the direct method, or H = c × r / 100 for the percentage method.

For positive D, S, and H, the plain EOQ is:

Q* = sqrt(2 × D × S / H)

At any order quantity Q, the workbook uses:

  • orders per year: D / Q;
  • annual ordering cost: D × S / Q;
  • annual holding cost: Q × H / 2;
  • annual cost excluding purchase: D × S / Q + Q × H / 2;
  • annual cost including purchase: the preceding cost plus D × c;
  • cycle length: W / (D / Q) days;
  • reorder point: (D / W) × L units;
  • average inventory: Q / 2 units.

At Q*, annual ordering cost and annual holding cost are equal. The workbook also reports the cost penalty at 1.2 × Q* by recalculating ordering plus holding cost at that quantity and comparing it with the optimum.

When p > 0, the planned-backorder extension uses:

Q_backorder = sqrt((2 × D × S / H) × ((H + p) / p))

Maximum planned shortage = Q_backorder × H / (H + p)

When p = 0, both planned-backorder outputs return zero by design.

Calculation sequence

  1. The selected holding-cost method determines H; the unused alternate input is ignored.
  2. The workbook computes the plain EOQ and its cycle, cost, reorder-point, and average-inventory measures.
  3. It evaluates the optional planned-backorder formulas when a positive shortage cost is supplied.
  4. For each of five illustrative price tiers stored in the workbook, it derives the tier holding cost, calculates a tier EOQ, raises that quantity to the tier minimum when necessary, and evaluates total annual cost including purchase.
  5. The lowest-cost tier candidate becomes the reported price-break quantity, unit price, and total cost. These tiers are fixed demonstration data on the web page, not the user's supplier schedule.
  6. The workbook evaluates Model_Status in the precedence shown below.

Outputs and interpretation

Economic_Order_Quantity is the unconstrained order size that minimizes annual ordering plus holding cost. Reorder_Point is a timing trigger based only on mean demand during lead time; it contains no safety stock. Cost outputs distinguish operating inventory cost from purchase cost. The price-break outputs are a what-if demonstration against the workbook's five stored tiers and must not be treated as a quote.

Validation and status logic

The workbook evaluates status in this order:

Condition Returned status
Annual demand is less than or equal to zero NOT VALID: annual demand must be greater than zero
Holding cost in use is less than or equal to zero NOT VALID: holding cost must be greater than zero
Ordering cost per order is less than or equal to zero NOT VALID: cost per order must be greater than zero
Computed orders per year is less than one CHECK: fewer than one order a year; the quantity exceeds annual demand
None of the preceding conditions applies OK

The current workbook status does not change merely because an illustrative price-break tier has a lower total cost than the plain EOQ.

Assumptions and limitations

  • Demand, ordering cost, unit cost, holding cost, and lead time are treated as deterministic annual averages.
  • The plain reorder point has no demand or lead-time variability, safety stock, service-level target, seasonality, or forecast error.
  • The model has no storage, cash, supplier-capacity, order-multiple, minimum-order, perishability, or multi-echelon constraint.
  • Purchase price is constant in the plain EOQ. The separate price-break result uses five illustrative workbook tiers that cannot be edited from this page.
  • A zero shortage cost disables the planned-backorder extension rather than representing free shortages.
  • A mathematically valid result can still be operationally unsuitable if the supplied forecasts or cost definitions are poor.

Restrictions and non-computing states

This calculator accepts only the declared holding-cost methods, rejects negative demand, cost, rate, lead-time, and shortage-cost inputs, and constrains working days to 1 through 366. The workbook then applies the status checks above: nonpositive annual demand, holding cost in use, or ordering cost makes the decision non-computing even though protected intermediate formulas may display zero. A shortage cost of zero deliberately disables the planned-backorder extension, and the five price-break tiers cannot be edited through this page.

Errors and warnings

A rejected entry means the submitted value did not satisfy the published input rules and no workbook decision was made. A workbook NOT VALID status means a required positive cost or demand basis is missing and the result region should not be used. A CHECK status means the workbook calculated a result but found an order cycle that deserves review. A connection or calculation-service failure is an availability problem, not an inventory conclusion.

References

The workbook states its own methods rather than citing sources for them. The relations it implements are the standard inventory-theory results, and the published sources for them are below.

The quantity price break tiers shipped with the workbook are illustrative values chosen to demonstrate the comparison. They carry no authority and are not a market price.

Additional source notes migrated from Methodology

The governing quantity is the classical deterministic EOQ (Harris/Andler) relationship, with standard planned-backorder and all-units quantity-discount extensions. The delivered reviewer packet cites Omni Calculator's EOQ reference and Zoho Inventory tools for independent comparison. Those sites do not define the workbook's illustrative price tiers.

Frequently asked questions

Are the quantity price breaks my supplier's prices?
No. The five price tiers are fixed values shipped with the workbook and are not inputs on this page. They are 0 units at 12.00, 500 at 11.60, 1000 at 11.25, 2500 at 10.90 and 5000 at 10.60. The best quantity with price breaks, its unit price, its total annual cost and the saving against the first tier are all driven by that fixed table, so treat them as a demonstration of how a price break changes the answer rather than a recommendation for your own purchasing.
Why does the status say a price break beats the economic quantity?
Because on the shipped defaults it does. Ordering 2500 at a time drops the unit price from 12.00 to 10.90, and the purchase saving outweighs the extra holding cost, so total annual cost including purchase falls from about 121,732 to about 112,606. It is a reminder that the plain square-root formula ignores the price of the goods, and that a price break can change the right order size.
Do I have to order exactly the quantity it returns?
No, and this is one of the more useful things about the model. Total cost is very flat near the optimum, so rounding to a convenient quantity or a pallet multiple costs almost nothing. The page reports the penalty for ordering 20 percent above the optimum to make this concrete; on the shipped defaults it is 1.67 percent.
Which holding cost input is being used?
Whichever the holding cost method selector points at. Set it to the direct amount and the cost per unit per year is read; set it to the percentage route and the holding cost is derived from the rate and the unit cost. The page reports the holding cost actually used, so you can confirm which input was read before trusting the quantity.
Does this calculate safety stock?
No. The reorder point it reports is daily demand times lead time, which covers expected demand during the lead time and nothing more. It carries no buffer for demand or lead-time variability. Safety stock is a separate calculation, and the model assumes demand is steady and known, so where demand is seasonal or volatile the quantity is indicative only.
This page is provided by LogicCommons for informational purposes only. Results are analysis outputs computed from the inputs you supply and are not engineering advice, a design, or a substitute for review by a licensed professional under the codes adopted where the work is built. Verify all inputs and results independently.

LogicCommons is in beta. If a result, label, or reference looks wrong, tell us here; we read every message.