Skip to content

ABC analysis and cycle counting

  • Any ERP

How-toIntroductory8 min read

View Markdown

In short. Rank items by annual usage value, split them into A, B and C classes and count the valuable few far more often than the long tail. Measure record accuracy as the share of counts within tolerance, and fix the causes of each miss rather than only adjusting the balance.

Written for Finance and operations, administrators.

Inventory records drift from reality one mis-pick and one unreceived pallet at a time. Counting everything once a year finds the drift late and all at once. A cycle count program counts a slice of the warehouse every day, weighted toward the items that matter most, and uses each miss to find what is breaking. ABC analysis is how you decide what matters most.

  • Twelve months of usage (units sold or consumed) and a current unit cost for every stocked item at each location you plan to count.
  • A way to export that data to a spreadsheet or query it, since ABC is a simple ranking.
  • Agreement from operations and finance on who counts, who approves adjustments and who investigates misses.

Your ERP holds the usage history, cost and on-hand balances. Everything below works the same whichever system you run.

Rank items by annual usage value

Section titled: Rank items by annual usage value

ABC analysis sorts items by annual usage value: how much money flows through each item in a year.

Annual usage value

Annual units used × unit cost

Sort all items from highest to lowest value, calculate each item's share of the total and keep a running cumulative percentage. The pattern that almost always appears is the Pareto pattern: a small share of items carries most of the value.

With invented round numbers, here are 10 items with $1,000,000 of annual usage value in total.

Rank Item Annual units Unit cost Annual usage value Share of value Cumulative share Class
1 SKU-101 2,000 $200 $400,000 40.0% 40.0% A
2 SKU-102 5,000 $50 $250,000 25.0% 65.0% A
3 SKU-103 1,500 $100 $150,000 15.0% 80.0% A
4 SKU-104 3,000 $30 $90,000 9.0% 89.0% B
5 SKU-105 600 $100 $60,000 6.0% 95.0% B
6 SKU-106 2,000 $10 $20,000 2.0% 97.0% C
7 SKU-107 500 $24 $12,000 1.2% 98.2% C
8 SKU-108 800 $10 $8,000 0.8% 99.0% C
9 SKU-109 1,000 $6 $6,000 0.6% 99.6% C
10 SKU-110 400 $10 $4,000 0.4% 100.0% C

Three items (30% of items) are class A with 80% of value, 2 items (20%) are class B with 15% and 5 items (50%) are class C with 5%. SKU-106 sells as many units as SKU-101 and is still class C, because the class follows value rather than units.

To classify your own items, export item, annual units and unit cost from your ERP and paste them below. The sample is the worked example above.

Tool

ABC classifier

Paste one item per line as item, annual units, unit cost, or item, annual value. Commas or tabs both work, so you can paste straight from a spreadsheet. Nothing leaves your browser.

RankItemAnnual valueShareCumulativeClass

Ranks by annual usage value and assigns classes by cumulative share of total value. The cutoffs are a rule of thumb; adjust them to your own count capacity and risk.

A common rule of thumb is to cut at roughly 80% of cumulative value for A, the next 15% for B and the last 5% for C. It holds because usage value in most distribution businesses is heavily skewed, so those cutoffs produce a small A class that is practical to watch closely. It does not hold when value is spread evenly (a narrow catalog of similar items), where the same cutoffs make A too large to count often.

Adjust the cutoffs so the class sizes fit the counting effort you can afford, and consider these overrides:

Override Why
Promote items with high pick frequency Many transactions mean many chances for error, whatever the value
Promote theft-prone or regulated items The cost of an error is more than the item's value
Promote items critical to key customers A stockout costs more than the inventory
Keep new items out of C for their first months They have little history yet

Re-run the ranking at least twice a year. Items move between classes as demand shifts, and a stale class list counts the wrong things.

Add XYZ classes for demand variability

Section titled: Add XYZ classes for demand variability

ABC says how much money moves through an item. XYZ says how predictable that demand is, usually by the coefficient of variation: the standard deviation of demand per period divided by its average (see the NIST reference linked below).

Coefficient of variation

Standard deviation of monthly demand ÷ average monthly demand

Class Demand pattern Illustrative cutoff
X Steady Coefficient of variation below 0.5
Y Variable or seasonal 0.5 to 1.0
Z Erratic or intermittent Above 1.0

These cutoffs are a rule of thumb for monthly data and shift with the period you measure: weekly demand always looks more variable than monthly. Combined, the nine ABC-XYZ cells guide policy. An AX item suits tight safety stock and frequent replenishment. An AZ item needs a buyer's attention and a larger buffer. A CZ item may be a candidate for stocking less or ordering to demand. Safety stock, reorder point and EOQ shows how variability feeds the buffer.

Class decides how often each item is counted. A typical starting point:

Class Counts per year Why
A 12 (monthly) Most of the value, so errors cost the most
B 4 (quarterly) Moderate value
C 1 to 2 Low value, many items

Turn that into a daily workload. With invented numbers: 1,000 A items counted 12 times is 12,000 counts, 2,000 B items counted 4 times is 8,000 and 7,000 C items counted once is 7,000. That is 27,000 counts a year, or 108 a day over 250 working days. If that is more than your team can do well, shrink the frequencies or the A class, not the care taken on each count.

Many programs add event-driven counts on top of the schedule: count a location when it goes to zero, when a pick comes up short or when a location shows a negative balance. These catch errors at the moment they are cheapest to explain.

  1. Clean up before you start. Make sure every item has a home location, locations are labelled and units of measure are consistent. Counting a disorganized warehouse measures the disorganization. Units of measure covers the most common source of phantom variances.

  2. Set tolerances by class. Decide how far a count may differ from the record and still count as accurate, for example zero units for A items, and a small percent or dollar band for B and C. Tighter tolerances for more valuable items are the norm.

  3. Generate the daily count list. Pull the items due by class frequency plus any event-driven counts. Spread each class evenly across the year so every day has a similar workload.

  4. Count blind. Give counters the location and item, not the expected quantity. A counter who can see the system balance tends to find it.

  5. Compare and recount. When a count falls outside tolerance, have a different person recount before anything is adjusted. Many first-count misses are counting errors.

  6. Investigate before you adjust. For confirmed variances, check recent transactions for that item and location: open picks, unposted receipts, transfers in transit, recent adjustments. Record a root cause for each one.

  7. Approve and post adjustments. Someone other than the counter approves adjustments, with a higher approval level above a dollar threshold. Separating counting from approving is one of the practices the GAO guide on physical counts highlights.

  8. Report accuracy and causes weekly. Track the hit rate by class and the count of variances by root cause, and assign an owner to the top cause each period.

Measure inventory record accuracy

Section titled: Measure inventory record accuracy

Inventory record accuracy (IRA) is the share of counts where the record matched the physical count within tolerance. It is a hit rate, not a dollar net.

Inventory record accuracy

Counts within tolerance ÷ total counts

With invented numbers: in a month the team counted 400 item-locations, and 376 were within tolerance. IRA is 376 ÷ 400, or 94.0%.

A hit rate works better than net dollar variance because errors offset. If one location is $5,000 over and another is $5,000 under, net variance is zero while two records are wrong and two customers may be told the wrong availability. Report dollar variance as well, for finance, but manage the program on the hit rate.

Targets of 95% or higher are common among companies with mature programs. In the GAO executive guide on physical counts (GAO-01-763G, July 2001, retrieved 2026-09-28), six of the eight private-sector locations it studied that ran cycle counts set record accuracy goals between 95% and 98%. Build up to it. A first month in the 70s or 80s is common and useful, because it tells you where to look.

Root-cause categories for count variances

Section titled: Root-cause categories for count variances

Adjusting a balance fixes one record. Finding the cause fixes the next hundred. Most variances fall into a few categories:

Category Typical examples
Receiving Received quantity keyed wrong, receipt posted to the wrong item, goods put away before the receipt posted
Picking and shipping Wrong item or quantity picked, short picks confirmed as complete
Location Stock put away in the wrong location, overflow locations not recorded
Unit of measure Counted in eaches against a record in cases, or a conversion factor set wrong
Timing Transactions in flight during the count, such as picked but not shipped
Unrecorded movement Returns, samples, damage and scrap not entered
Counting error Miscount, wrong location counted
Shrink Theft or loss with no transaction behind it

Look for the category that repeats. If most misses trace to receiving, a receiving checklist or scanning will do more than more counting.

Count freezes versus counting during operations

Section titled: Count freezes versus counting during operations

A traditional physical inventory freezes all movement: no receipts, picks or shipments until the count is done. That removes timing errors, but it stops the business, usually for a day or a weekend.

Cycle counting is designed to run while the warehouse operates. It needs a way to handle stock that moves during the count:

Approach How it works Trade-off
Freeze the location Block picks and put-aways for the item-location only while it is counted Brief local interruption, simplest to reason about
Snapshot and reconcile Record the balance at the moment of counting, then account for transactions between snapshot and count No interruption, but needs accurate time stamps
Count at quiet times Schedule counts before the first pick wave or after the last shipment Fewer in-flight transactions, but limits the daily window

Most programs combine a location-level freeze with counts scheduled at quiet times. Keep full freezes for the wall-to-wall count, if your auditors still require one. The GAO guide notes that some organizations moved from annual wall-to-wall counts to cycle counting only once their record accuracy was high enough to support it.

After three months you should see:

  • IRA rising for A items first, then B.
  • Fewer variances per count, with the top root cause shrinking.
  • Fewer surprise stockouts and fewer customer service calls about availability that turned out wrong.

If IRA is flat, look at the root-cause report before adding counts. More counting without fixing causes only makes the adjustments larger.

Sources