{
  "slug": "eoq-carrying-cost",
  "title": "EOQ & Carrying Cost Calculator",
  "heading": "Economic Order Quantity (EOQ) Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/eoq-carrying-cost",
  "summary": "Order quantity that minimizes total ordering + carrying cost.",
  "description": "Economic order quantity balances two costs that move in opposite directions: ordering cost (which falls per unit as you order in bigger batches) and carrying cost (which rises as you hold more average inventory). The EOQ formula finds the order size where these two costs are equal, minimizing total annual inventory cost. Carrying cost should include capital cost, storage, insurance, taxes, and shrinkage/obsolescence risk — most operations use 20-30% of unit cost per year as an all-in carrying cost rate. This calculator also shows how many orders per year the EOQ implies and the total annual cost, so you can compare it against your current order quantity and see the dollar opportunity from moving toward the calculated EOQ, subject to supplier minimums and case-pack constraints in the real world.",
  "formula": "EOQ = √(2 × Annual demand × Order cost ÷ Carrying cost per unit per year).",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=eoq-carrying-cost",
  "inputs": [
    {
      "id": "annualDemand",
      "label": "Annual demand",
      "kind": "number",
      "hint": null,
      "default": 26000,
      "unit": "units",
      "min": 1,
      "max": null
    },
    {
      "id": "orderCost",
      "label": "Cost to place one order",
      "kind": "number",
      "hint": null,
      "default": 85,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "unitCost",
      "label": "Cost per unit",
      "kind": "number",
      "hint": null,
      "default": 14,
      "unit": "$",
      "min": 0.01,
      "max": null
    },
    {
      "id": "carryingRate",
      "label": "Annual carrying cost rate",
      "kind": "number",
      "hint": null,
      "default": 25,
      "unit": "%",
      "min": 1,
      "max": 60
    }
  ],
  "outputs": [
    {
      "id": "eoq",
      "label": "Economic order quantity",
      "format": "number",
      "hint": null,
      "primary": true
    },
    {
      "id": "ordersPerYear",
      "label": "Orders per year at EOQ",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "totalCost",
      "label": "Total annual ordering + carrying cost",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "carryCostPerUnit",
      "label": "Carrying cost per unit/year",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Annual demand: 26000 units",
      "Cost to place one order: 85 $",
      "Cost per unit: 14 $",
      "Annual carrying cost rate: 25 %"
    ],
    "outputs": [
      "Economic order quantity: 1,124",
      "Orders per year at EOQ: 23.1",
      "Total annual ordering + carrying cost: $3,933",
      "Carrying cost per unit/year: $3.50"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter annual demand (units).",
      "Enter cost to place one order ($).",
      "Enter cost per unit ($).",
      "Enter annual carrying cost rate (%).",
      "Read your economic order quantity on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "annualDemand": 15600,
        "orderCost": 50,
        "unitCost": 8.4,
        "carryingRate": 15
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "annualDemand": 26000,
        "orderCost": 85,
        "unitCost": 14,
        "carryingRate": 25
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "annualDemand": 41600,
        "orderCost": 135,
        "unitCost": 22.400000000000002,
        "carryingRate": 40
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "What should I use for carrying cost rate?",
      "a": "Build it up from components: cost of capital (6-10%), storage and handling (2-6%), insurance and taxes (1-2%), and shrinkage/obsolescence (2-6% depending on category). Most distribution operations land in the 20-30% range; fashion, electronics, and other fast-obsolescence categories should push toward 30-40%."
    },
    {
      "q": "Why doesn't my real order quantity match the EOQ?",
      "a": "Supplier minimum order quantities, full-pallet or full-container case-pack constraints, and volume price breaks all override the pure EOQ math in practice. Use EOQ as the target and then round to the nearest practical case-pack or container quantity — usually within 10-15% of true EOQ, which keeps you near the cost-minimizing point on the curve."
    },
    {
      "q": "Does EOQ account for quantity discounts?",
      "a": "The basic EOQ formula shown here does not. If a supplier offers a price break at a quantity larger than your EOQ, you need to separately compare the total cost (including the lower unit price) at the discount tier against total cost at EOQ — sometimes the discount is worth the extra carrying cost, sometimes it isn't."
    },
    {
      "q": "How sensitive is EOQ to my inputs?",
      "a": "Because EOQ is a square root function, doubling demand only increases EOQ by about 41%, not 100%. This means small errors in order cost or carrying rate estimates matter less than they seem to — being off by 20% on carrying cost only moves EOQ by about 10%, so don't over-engineer the inputs."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/reorder-point",
    "https://www.revenuelab.fyi/toolbox/inventory-turns-dsi",
    "https://www.revenuelab.fyi/toolbox/obsolescence-reserve"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — EOQ & Carrying Cost Calculator (https://www.revenuelab.fyi/toolbox/eoq-carrying-cost)"
}