{
  "slug": "cycle-count-accuracy",
  "title": "Cycle Count Accuracy Calculator",
  "heading": "Cycle Count Inventory Accuracy Calculator",
  "category": "math",
  "url": "https://www.revenuelab.fyi/toolbox/cycle-count-accuracy",
  "summary": "Compute inventory record accuracy and count program coverage.",
  "description": "Inventory record accuracy (IRA) measures how often your system's on-hand quantity matches what's physically on the shelf, and it's the single best predictor of pick errors, stockouts, and emergency counts. This calculator computes accuracy from your cycle count results (locations or SKUs counted matching system quantity within a tolerance) and separately estimates how many count events per year you need to hit a coverage target for each ABC velocity tier. Most operations targeting WMS-driven fulfillment need 98%+ IRA to run reliably; below 95% you'll see pick exceptions and customer-facing stockout errors climb sharply. The count frequency section tells you how many counts per week your team needs to run to cycle through A-items monthly, B-items quarterly, and C-items annually, which is the standard ABC cycle count cadence.",
  "formula": "IRA = Matching counts ÷ Total counts × 100; required weekly counts = (A×12 + B×4 + C×1) SKU-counts ÷ 52.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=cycle-count-accuracy",
  "inputs": [
    {
      "id": "totalCounts",
      "label": "Total locations/SKUs counted (period)",
      "kind": "number",
      "hint": null,
      "default": 1200,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "matching",
      "label": "Counts matching system (within tolerance)",
      "kind": "number",
      "hint": null,
      "default": 1128,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "aItems",
      "label": "A-tier SKU count",
      "kind": "number",
      "hint": null,
      "default": 200,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "bItems",
      "label": "B-tier SKU count",
      "kind": "number",
      "hint": null,
      "default": 500,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "cItems",
      "label": "C-tier SKU count",
      "kind": "number",
      "hint": null,
      "default": 1300,
      "unit": null,
      "min": 0,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "ira",
      "label": "Inventory record accuracy",
      "format": "percent",
      "hint": null,
      "primary": true
    },
    {
      "id": "errors",
      "label": "Discrepancies found",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "weeklyCounts",
      "label": "Required counts per week (ABC cadence)",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "annualCountEvents",
      "label": "Total annual count events needed",
      "format": "number",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Total locations/SKUs counted (period): 1200",
      "Counts matching system (within tolerance): 1128",
      "A-tier SKU count: 200",
      "B-tier SKU count: 500",
      "C-tier SKU count: 1300"
    ],
    "outputs": [
      "Inventory record accuracy: 94.00%",
      "Discrepancies found: 72",
      "Required counts per week (ABC cadence): 110",
      "Total annual count events needed: 5,700"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter total locations/skus counted (period).",
      "Enter counts matching system (within tolerance).",
      "Enter a-tier sku count.",
      "Enter b-tier sku count.",
      "Enter c-tier sku count.",
      "Read your inventory record accuracy 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": {
        "totalCounts": 720,
        "matching": 677,
        "aItems": 120,
        "bItems": 300,
        "cItems": 780
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "totalCounts": 1200,
        "matching": 1128,
        "aItems": 200,
        "bItems": 500,
        "cItems": 1300
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "totalCounts": 1920,
        "matching": 1805,
        "aItems": 320,
        "bItems": 800,
        "cItems": 2080
      }
    }
  ],
  "limitations": [
    "Results are rounded for display; the underlying calculation keeps full precision.",
    "Very large or very small inputs may hit floating-point limits in the browser.",
    "Inputs outside the accepted range are clamped rather than rejected."
  ],
  "faq": [
    {
      "q": "What accuracy level do I actually need?",
      "a": "For a manual pick operation, 95% is workable but generates noticeable pick exceptions. For automated fulfillment, wave planning, or any system that auto-allocates inventory to orders without human review, you need 98-99%+ or the system will promise inventory it doesn't have, generating cancellations and chargebacks from marketplace partners."
    },
    {
      "q": "What tolerance should count as 'matching'?",
      "a": "For high-value or serialized items, use zero tolerance — any variance is a miss. For bulk, low-value C-items, a small tolerance (for example ±2% of quantity) is common because rounding and unitization differences create noise that isn't a real accuracy problem. Set the tolerance in your count program before you start counting, not after you see the results."
    },
    {
      "q": "Why does ABC velocity drive count frequency?",
      "a": "A-items represent maybe 20% of SKUs but 80% of transaction volume, so they drift out of accuracy fastest and cost the most when wrong. Counting them monthly catches errors before they compound into stockouts. C-items move rarely enough that annual counting is sufficient and counting them more often just burns labor without improving service."
    },
    {
      "q": "How do I fix accuracy once I know it's low?",
      "a": "Root-cause the discrepancies first — most fall into a small number of buckets: uncounted damages, location mix-ups, unscanned put-backs, or system lag on in-transit inventory. Fixing the top two root causes typically recovers more accuracy than simply counting more often."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/safety-stock-service-level",
    "https://www.revenuelab.fyi/toolbox/reorder-point",
    "https://www.revenuelab.fyi/toolbox/obsolescence-reserve"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Cycle Count Accuracy Calculator (https://www.revenuelab.fyi/toolbox/cycle-count-accuracy)"
}