How to Calculate EOQ with Discount: Real-World Steps, Formulas, and Worked 20%/40% Examples

The Straight Answer: How to Calculate EOQ with Discount in Practice

If you want to know how to calculate EOQ with discount, the core method is: run the standard economic order quantity formula for every price level, but first convert each percentage discount into a reduced unit cost (C) and a reduced holding cost (H = i × C), then force the order quantity up to the discount’s minimum if your computed EOQ falls short, and finally compare total annual costs across all feasible quantities.

The base formula for EOQ is √(2SD/H), where S is ordering cost per purchase, D is annual demand, and H is holding cost per unit per year. When a supplier offers, say, a 20% or 40% quantity discount, you do not just plug the old H into the formula—you recalculate it. Miss that step and the cheap bulk price will look worse than it really is.

In the next sections I’ll show exactly how to turn a “40% off” label into numbers, walk through two full examples, and give you a decision matrix you can drop into Excel. If you’d rather not hand-crank the math, our EOQ with Discount Calculator automates the price-break steps.

What Is the EOQ Formula (and Why Discounts Complicate It)

The formula to find EOQ is straightforward: Q* = √(2SD/H). This comes from balancing the annual ordering cost (D/Q)×S against the annual holding cost (Q/2)×H. The derivative set to zero yields that square root. In practice, S should include the full labor to create a purchase order, inbound freight if it’s per-shipment, and inspection. D is usually a 12-month rolling average; for seasonal items use annualized figures.

H is where discount analysis lives. A proper carrying rate i bundles several real costs: the cost of capital, physical storage, insurance, taxes, and an obsolescence allowance. For many manufacturers i sits between 15% and 30% of unit cost. If finance dictates a 20% rate, then H = 0.20 × C. This is why a lower C directly lowers H.

When there is no discount, you can use a simple tool; for single-price scenarios our Economic Order Quantity (EOQ) Calculator does the arithmetic. But the moment a price break appears, you must clone the model per tier.

One misconception: some believe the EOQ formula changes shape with discounts. It does not—the algebra is identical; only inputs vary and a feasibility rule is added. The mistaken belief that “discount EOQ uses a different formula” leads teams to buy off-the-shelf extensions they don’t need.

Breaking Down the Holding Cost Component (Why i Matters)

The carrying rate i is not a random number. In my consulting work, I build i from four buckets: cost of capital (often 6%–12%), storage (warehouse rent, equipment, labor, roughly 3%–8% of item value), insurance and taxes (1%–2%), and obsolescence/shrinkage (5%–15% for electronics). Summing these yields i between 15% and 37% for many distributors.

When you take a 40% discount, each bucket scales down because they are percentages of C. A common beginner error is to treat storage as a fixed dollar per bin, which would not scale. But even fixed storage has a capacity limit, another reason to keep i variable and monitor space. I recommend revisiting i quarterly with finance to keep EOQ models honest.

This granular view also answers a subtle question: should H use the discounted C or the replacement value? Always use the actual paid C for that tier, because that is the cash tied up. If you use list price for H on a discounted tier, you overstate holding cost and bias against bulk orders.

From Percentage Off to Real Numbers: Calculating 20%, 25%, and 40% Discounts

To answer the common search queries directly: How to calculate a 20% discount? Take the original price P and multiply by 0.80; the result is the net price after a 20% reduction. How to calculate a 25% discount? Multiply by 0.75. How to calculate a 40% off discount? Multiply by 0.60. The discount amount itself is P×0.20, P×0.25, or P×0.40, but for inventory costing you need the net cost, not the subtracted amount.

I learned this the hard way during a 2018 SKU rationalization for a hardware cooperative. A junior analyst built a VLOOKUP that returned “discount value” instead of “discounted cost” for a 40% off promotion. The model spat out a new C of $8 on a $20 item (should be $12). We almost rejected a pallet program that later proved to save $200k. Always label your cells “Net C after X%” to avoid that ambiguity.

Most people don’t realize the same percentage also rescales holding cost. If your carrying rate i = 0.25, then at $20 list H = $5. At 40% off, C=$12, so H=$3. That 40% drop in C produces a 40% drop in H, which raises the economic order quantity by about 22% (since Q scales with 1/√H). Missing this linkage understates the attractiveness of the discount tier.

Here is the quick reference list I train new buyers with:

  • List price = $X
  • 20% discount → Net C = X × 0.80, H = i × (X×0.80)
  • 25% discount → Net C = X × 0.75, H = i × (X×0.75)
  • 40% discount → Net C = X × 0.60, H = i × (X×0.60)

These conversions are the bridge between a sales sheet that says “40% OFF” and an EOQ model that says “order 2,000.”

The Discount EOQ Workflow: A 5-Step Practitioner Framework

Over years of building inventory models for distributors, I’ve standardized on a five-step loop that prevents the errors above. Think of it as a decision matrix rather than a single formula.

Step 1 – Map the price breaks

List every discount tier: minimum order quantity (MOQ) and the discounted unit cost. Include the base price with MOQ = 1.

Step 2 – Convert percentages to C and H

Use the multiplication factors from the previous section. Write down i (carrying rate) so H is explicit for each tier.

Step 3 – Compute naive EOQ per tier

Plug S, D, and each tier’s H into √(2SD/H). This gives the unconstrained optimum for that unit cost.

Step 4 – Enforce feasibility

If the naive EOQ for a discount tier is below that tier’s MOQ, you cannot actually buy at that price at that quantity. Set the feasible order quantity Q = MOQ. If EOQ is above MOQ, keep Q = EOQ because you qualify for the price.

Step 5 – Total cost comparison

Calculate total cost TC = DC + (D/Q)S + (Q/2)H for each feasible Q. Choose the lowest TC. For all-units discounts, the C in DC is the tier price; for incremental, only excess units get the lower C.

The thing nobody tells you about this process: the lowest TC often sits exactly at an MOQ boundary, not at a calculated EOQ. Always evaluate the boundary itself.

Below is the decision matrix I use, shown with the 20% bearing example from later. It forces each step to be visible:

Price Tier MOQ Net C H=iC Naive EOQ Feasible Q Total Cost
Base 1 $12.00 $3.00 774.6 774.6 $146,324
20% off 800 $9.60 $2.40 866.0 866.0 $117,278

The matrix makes it obvious that the 20% tier wins. Without writing it down, people tend to compare only unit prices, which is dangerous.

Worked Example: 20% Quantity Discount on Industrial Bearings

Let’s apply the framework to a real-number case I modeled for a client. Annual demand D = 12,000 bearings. Ordering cost S = $75 per PO. Carrying rate i = 25% annually. Base unit cost C0 = $12.00 (no minimum). Supplier offers a 20% discount if you order 800+ units.

First, convert the 20% discount: C1 = 12 × 0.80 = $9.60. Holding costs: H0 = 0.25 × 12 = $3.00; H1 = 0.25 × 9.60 = $2.40. Now compute naive EOQs: Q0* = √(2×12000×75 / 3.00) = √(600,000) ≈ 774.6 units. Q1* = √(2×12000×75 / 2.40) = √(750,000) ≈ 866.0 units.

Check feasibility: Tier 0 has MOQ 1, so Q0 = 774.6 is fine. Tier 1 requires 800; our naive 866 exceeds that, so Q1 = 866 is feasible. Now total costs: TC0 = 12000×12 + (12000/774.6)×75 + (774.6/2)×3 = $144,000 + $1,162 + $1,162 = $146,324. TC1 = 12000×9.60 + (12000/866)×75 + (866/2)×2.40 = $115,200 + $1,039 + $1,039 = $117,278.

The 20% discount saves $29,046 per year even after holding more inventory. The naive EOQ shift (from 775 to 866) is what makes it work. If we had frozen H at $3.00 for tier 1, Q1* would be 775, below MOQ, forcing Q=800 and a misleading TC.

Let’s stress-test that example. If demand turns out to be 10,000 instead of 12,000, recompute: Q0* = √(2×10000×75/3)=707. Q1*=√(2×10000×75/2.4)=790. Feasible Q1=790 (below 800, so forced to 800). TC1 at Q=800: 10000*9.6 + (10000/800)*75 + (800/2)*2.4 = 96000+937.5+960=97997.5. TC0 at 707: 10000*12=120000 + (10000/707)*75=1061 + (707/2)*3=1060 =122121. Still discount wins. This robustness is typical when discount is steep.

Worked Example: 40% Off Discount and the Holding Cost Trap

Now a steeper case. A plastics distributor faces D = 30,000 bins, S = $120, i = 20%, base C0 = $20.00. The vendor gives a 40% off discount at MOQ = 2,000 units. Calculate the 40% off discount: C1 = 20 × 0.60 = $12.00. H0 = 0.20×20 = $4.00. H1 = 0.20×12 = $2.40.

Naive EOQs: Q0* = √(2×30000×120 / 4) = √(1,800,000) ≈ 1,342 units. Q1* = √(2×30000×120 / 2.4) = √(3,000,000) ≈ 1,732 units. Wait—Q1* is 1,732, which is below the 2,000 MOQ. This is the classic trap. Because the discount requires 2,000, the feasible Q1 is not 1,732 but 2,000.

Total costs: TC0 = 30000×20 + (30000/1342)×120 + (1342/2)×4 = $600,000 + $2,682 + $2,684 = $605,366. TC1 = 30000×12 + (30000/2000)×120 + (2000/2)×2.4 = $360,000 + $1,800 + $2,400 = $364,200. Even though we must order more than the naive EOQ, the 40% cut in unit cost dominates. The saving is $241,166.

Had we forgotten to lower H, H1 would falsely be $4.00, Q1* would be 1,342 (even further below MOQ), and the forced Q=2000 would show holding cost $4,000, making the deal look weaker. The corrected H is non-negotiable.

Suppose the 40% off required MOQ = 5,000 instead of 2,000. Then feasible Q1=5000. Holding cost portion (5000/2)*2.4=$6,000. Purchase $360,000. Order cost (30000/5000)*120=$720. TC=$366,720. Compare base TC $605,366. Still saves $238k but inventory doubles. That may break storage. This is where the operational overlay matters.

All-Units vs Incremental Discounts: Which Math to Use

Most price breaks in B2B are all-units: cross the MOQ and every unit in the order gets the cheaper C. The total cost formula I used above applies directly. But some contracts use incremental discounts (also called marginal or declining block): only the units above each breakpoint get the lower price.

For incremental structures, purchase cost becomes DC0 minus the savings on units above the break. A practical annual approximation for order size Q > break B is: TC = D*C0 – (D/Q)*(Q-B)*(C0-C1) + (D/Q)S + (Q/2)*i*C0. The holding cost is trickier because the average value of inventory mixes prices; a common approximation is to use the average unit cost for H, or to simulate. In my experience, incremental breaks are rare in physical goods but common in freight or tiered SaaS pricing.

The practitioner insight: always read the quote’s fine print. I once assumed an all-units 25% discount on a $50 item at 500 units, but the contract said incremental. The real saving was only about $6 per extra unit beyond 500, not $12.50 off the whole order. That changed the optimal Q from 900 to near the base EOQ.

The Thing Nobody Tells You About EOQ with Discounts

Beyond the math, the thing nobody tells you is that the lowest total cost from the model can be operationally terrible. A 40% discount might demand a 6-month supply that exceeds warehouse capacity, ties up cash, or risks obsolescence if the SKU rotates. The formula blindly minimizes TC assuming infinite shelf life and stable demand.

In one project, the model screamed “order 10,000 at 30% off,” but the client’s rack space capped safety stock at 3,000. We had to add a constraint: maximum Q = 3,000. The revised optimum was the base price—not because the discount was bad, but because the storage trade-off outweighed it. Always overlay physical and cash-flow limits after the numeric optimum.

Another hidden factor: the discount may require prepayment, shifting cash outflow earlier. If your cost of capital is 8% and you pay 30 days sooner, the effective discount shrinks by roughly 0.8%. Not huge, but for thin margins it matters. I treat i in H as already including capital cost, but prepayment timing is separate and should be layered on.

Another unspoken limitation: demand D must be forecast accurately. A discount that looks great at D=30,000 collapses if actual sales are 22,000. I recommend running the TC comparison at ±20% demand scenarios before committing.

Common Mistakes and Edge Cases I’ve Hit in the Field

Mistake 1: Using list price H for all tiers. Covered, but worth repeating—it is the top error in audits.

Mistake 2: Forgetting that order quantity must be integer or pack-size multiple. If MOQ is 800 but the item ships in cartons of 50, feasible Q becomes 850, not 800. This shifts TC slightly.

Mistake 3: Ignoring order-cycle time. A huge discount order may push cycle length beyond supplier lead-time variability, requiring more safety stock. That extra safety stock raises effective H beyond iC.

Mistake 4: Treating S as zero for blanket orders. Even if supplier holds inventory, each release still incurs a transaction cost. Use at least $10–$20 internal cost.

Mistake 5: Overlooking freight discounts embedded in MOQ. Sometimes the real saving is freight, not unit price. Allocate that to effective C reduction.

Edge case: when two discount tiers overlap because of rounding. Suppose 20% off at 500, 40% off at 1,000. If naive EOQ for tier 2 is 950 (below 1,000), you compare tier 1 at Q=950 (feasible) and tier 2 forced to 1,000. The matrix prevents missing tier1’s better position.

Edge case: negative or zero holding cost if i is mistakenly set to 0. Some newcomers think “free storage” means H=0, which makes EOQ infinite. Even with owned warehouse, there is opportunity cost of capital—use at least the firm’s WACC.

A Free Tool to Skip the Spreadsheet

If you manage more than a handful of SKUs, hand-calculating each price break is inefficient. Our EOQ with Discount Calculator lets you enter up to five discount tiers, the carrying rate, and S/D, then returns the feasible Q and total cost per tier. Even with a tool, understand the steps above. A calculator is only as good as the MOQ and i values you feed it.

I still sketch the five-step matrix on paper for new vendors to sanity-check the software output. For temporary promotions that aren’t volume-based, the same discount-to-C logic applies; just keep the lower price tier active only for the promo window and recompute D accordingly.

Final Checklist Before You Commit to a Bulk Order

  • Did you convert the percentage discount correctly? (20% → ×0.80, 25% → ×0.75, 40% → ×0.60)
  • Did you recompute H = i × new C for every tier?
  • Did you force Q up to each MOQ when naive EOQ falls short?
  • Did you compare total cost, not just unit price?
  • Did you test demand sensitivity (±20%)?
  • Does the order fit warehouse and cash constraints?

Follow that list and the question of how to calculate EOQ with discount becomes a routine, defensible process rather than a guess. The math rewards those who respect the link between price and holding cost.

Leave a Reply

Your email address will not be published. Required fields are marked *