{
  "slug": "eoq-calculator",
  "title": "Economic Order Quantity (EOQ) Calculator",
  "heading": "EOQ Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/eoq-calculator",
  "summary": "The order size that minimizes total ordering and holding cost.",
  "description": "Economic order quantity balances two competing costs: ordering cost (the fixed cost of placing and receiving each purchase order, regardless of size) and holding cost (the cost of capital, storage, and risk tied up per unit sitting in inventory). Order too frequently in small batches and you pay excessive fixed ordering costs; order too rarely in large batches and you tie up cash and warehouse space in inventory that sits unsold. The EOQ formula finds the mathematical sweet spot. Enter your annual demand in units, fixed cost per order (shipping, customs processing, and admin time to place a purchase order), and annual holding cost per unit (often estimated as 20-30% of unit cost to reflect capital cost, storage, insurance, and shrinkage). The output shows optimal order quantity, number of orders per year at that quantity, and total annual ordering plus holding cost, which you can compare against your current ordering pattern to see if you're ordering too often or too rarely.",
  "formula": "EOQ = √(2 × annual demand × order cost ÷ holding cost per unit); Orders per year = annual demand ÷ EOQ; Total cost = (annual demand ÷ EOQ) × order cost + (EOQ ÷ 2) × holding cost.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=eoq-calculator",
  "inputs": [
    {
      "id": "annualDemand",
      "label": "Annual demand",
      "kind": "number",
      "hint": null,
      "default": 8000,
      "unit": "units",
      "min": 1,
      "max": null
    },
    {
      "id": "orderCost",
      "label": "Fixed cost per order",
      "kind": "number",
      "hint": null,
      "default": 250,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "holdingCost",
      "label": "Annual holding cost per unit",
      "kind": "number",
      "hint": null,
      "default": 3.5,
      "unit": "$",
      "min": 0.01,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "eoq",
      "label": "Economic order quantity",
      "format": "number",
      "hint": null,
      "primary": true
    },
    {
      "id": "ordersPerYear",
      "label": "Orders per year",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "totalCost",
      "label": "Total annual ordering + holding cost",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "daysBetweenOrders",
      "label": "Days between orders",
      "format": "number",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Annual demand: 8000 units",
      "Fixed cost per order: 250 $",
      "Annual holding cost per unit: 3.5 $"
    ],
    "outputs": [
      "Economic order quantity: 1,069",
      "Orders per year: 7.5",
      "Total annual ordering + holding cost: $3,742",
      "Days between orders: 49"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter annual demand (units).",
      "Enter fixed cost per order ($).",
      "Enter annual holding cost per unit ($).",
      "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": 4800,
        "orderCost": 150,
        "holdingCost": 2.1
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "annualDemand": 8000,
        "orderCost": 250,
        "holdingCost": 3.5
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "annualDemand": 12800,
        "orderCost": 400,
        "holdingCost": 5.6000000000000005
      }
    }
  ],
  "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": "How do I estimate holding cost per unit?",
      "a": "A common shortcut is 20-30% of your unit cost per year, covering cost of capital, warehouse rent allocation, insurance, and shrinkage/obsolescence risk. For a $10 unit cost, that's roughly $2-3 per unit per year in holding cost."
    },
    {
      "q": "Does EOQ account for supplier minimum order quantities?",
      "a": "No, the raw formula assumes you can order any quantity. If your calculated EOQ falls below your supplier's MOQ, use the MOQ instead and accept the higher total cost, or negotiate a lower MOQ, since EOQ is a theoretical optimum not a hard constraint."
    },
    {
      "q": "Does EOQ change with seasonal demand?",
      "a": "The classic EOQ formula assumes constant demand, so for highly seasonal products it's more accurate to calculate EOQ separately for peak and off-peak periods using the demand rate expected during each window rather than a blended annual average."
    },
    {
      "q": "Should I always order exactly the EOQ amount?",
      "a": "Treat EOQ as a strong reference point, but round to practical case-pack quantities, container load sizes for imports, or supplier order increments. Being within 10-15% of EOQ captures nearly all the cost savings, so exact precision matters less than avoiding orders that are dramatically too small or too large."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/ecommerce-reorder-point",
    "https://www.revenuelab.fyi/toolbox/safety-stock-calculator",
    "https://www.revenuelab.fyi/toolbox/gmroi-calculator"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Economic Order Quantity (EOQ) Calculator (https://www.revenuelab.fyi/toolbox/eoq-calculator)"
}