Morsa publishes this guide. Morsa is software with an AI agent that works in your ERP, email and Teams; on a count program it researches each variance and proposes the cause, and a supervisor approves every adjustment. Frequencies and targets come from the Sources below; the schedule, bands and count sheet are our worked examples.
Quick answer
How often: A items monthly (12 times a year), B quarterly (4), C once or twice a year [1][4].
How to split: sort SKUs by annual usage value. The top 20% are A, the next 30% B, the last 50% C, which is roughly 80%, 15% and 5% of the value [3].
Tolerance: sources say 2% to 5% is typical, tighter for costly items [2]. We use A ±1% (0% for serialized items), B ±2%, C ±5%, plus a dollar limit.
Accuracy: counts within tolerance ÷ counts made × 100. Aim for 95% to start [1], 97% or more on A items [2] and above 99% for a mature program [3].
The annual count: keep this year’s; agree the switch with your auditor first.
Your first week
Monday: export 12 months of usage and unit cost for every active SKU. Multiply them: that is annual usage value.
Tuesday: sort by value, highest first. Mark the top 20% of SKUs A, the next 30% B, the rest C. Move an item up if it errors often, is easy to steal, or stops a line when short [5].
Wednesday: split each class into daily groups (below), set tolerances and reason codes, print the count sheet.
Thursday: first counts, plus a control group: the same 30 to 50 items counted daily for four weeks.
Friday: review the week’s variances by reason code. Re-rank the classes every quarter.
Worked schedule: a 5,000-SKU cycle count inventory, down to counts per day
Assumptions: 5,000 active SKUs, one stocking location each, 250 working days a year.
A
SKUs: 1,000
Counts a year: 1,000 × 12 = 12,000
Counts per working day: 48
How to spread them: 21 groups of about 48; restart monthly
B
SKUs: 1,500
Counts a year: 1,500 × 4 = 6,000
Counts per working day: 24
How to spread them: 62 groups of about 24; restart quarterly
C
SKUs: 2,500
Counts a year: 2,500 × 1 = 2,500
Counts per working day: 10
How to spread them: 250 groups of 10; one a day all year
Total
SKUs: 5,000
Counts a year: 20,500
Counts per working day: 82
How to spread them: About 90 with recounts
Recounts assume 1 in 10 counts needs a second look; expect more in month one. A count takes one to two minutes with a scanner [1]. Add 30 to 60 seconds of walking (our estimate) and 90 counts take 2.25 to 4.5 hours of one counter.
Three things change the number:
Count C twice a year: 23,000 counts, 92 a day.
Count locations, not SKUs, when items sit in more than one bin. If A items average 1.5 locations, A counts rise from 12,000 to 18,000 a year and the daily total to 106.
The control group adds 30 to 50 counts a day for four weeks: 120 to 140 counts, or 3 to 7 hours, so plan a second counter that month. Repeated errors on one item point at a process problem, not a counting one.
Tolerance bands
Inside tolerance, accept the count. Outside it, recount and research before anyone touches the record. Whichever limit trips first applies.
A
Unit tolerance: 0% for serialized or high-value items, else ±1%
Dollar limit (example): $100
Outside tolerance: Recount by a second person, research, supervisor approves
B
Unit tolerance: ±2%
Dollar limit (example): $250
Outside tolerance: Recount, research, lead approves
C
Unit tolerance: ±5%
Dollar limit (example): $500
Outside tolerance: Recount, then adjust with a reason code
The dollar limits are our starting figures. Use the absolute value, so overages and shortages are both flagged [2].
The daily routine
Release the day’s list from the ERP or WMS, with a counter named per line.
Count blind: location, item and unit of measure, never the system quantity.
Clear timing differences before calling a variance [2]. A pick taken from the shelf but not yet confirmed: add it back to the count. A receipt entered in the system but not yet put away: add it to the count. A receipt on the shelf but not yet entered: subtract it from the count.
Recount out-of-tolerance lines with a second person.
Research confirmed variances in the item’s transaction history (table below).
Post the adjustment with a reason code and the approver’s name [2].
Review the month by reason and fix the top two causes [2].
Variance root-cause table
Receiving error
How it shows up: Shortage or overage right after a receipt
What to check in the ERP: Receipt quantity against packing slip and PO
Fix: Count at the dock, not from paperwork
Mis-pick
How it shows up: Shortage here, matching overage on a look-alike [2]
What to check in the ERP: Picks of similar items the same days
Fix: Separate look-alikes; scan to pick
Wrong putaway location
How it shows up: Offsetting quantity in another bin [2]
What to check in the ERP: Putaway and transfer records
Fix: Scan the location label at putaway; print clear ones with the rack label generator
Unit of measure mix-up
How it shows up: Count matches if read as cases instead of eaches [2]
What to check in the ERP: Purchase UOM against issue UOM
Fix: Show UOM on the bin label and screen
Unrecorded scrap or damage
How it shows up: Steady small shortages
What to check in the ERP: Scrap and damage transactions
Fix: A scrap bin cleared and posted daily
Shrink
How it shows up: Shortages on small, valuable items
What to check in the ERP: No transaction explains it
Fix: Cage them, and count them as A
Inventory accuracy formula and target
Inventory accuracy = counts within tolerance ÷ total counts × 100 [1].
Example: in one week the team makes 450 counts and 431 are within tolerance. Accuracy is 431 ÷ 450 = 95.8%.
Track dollars too, using the gross variance. A week with $1,200 over and $1,150 short nets $50 and looks perfect; the gross is $2,350, or 1.3% of $180,000 counted. Our suggested target: gross variance under 1% of value counted. Reorder points rest on these numbers; see the safety stock calculator.
Count sheet
Set up a sheet or spreadsheet with nine columns: Count ID, Location, Item, UOM, Count, Recount, System, Variance, and Reason with approver. Three filled-in rows follow. Leave System and Variance off the counter’s copy. The date sits in the count ID; record counter initials in the margin or your system (choosing one? see what a WMS costs).
CC-1109-01
Location: A-03-02
Item: 41-2200 check valve
UOM: EA
Count: 118
Recount: 118
System: 120
Variance: -2 (1.7%)
Reason, approver: RCV, RG
CC-1109-02
Location: A-03-04
Item: 12-0042 ball valve
UOM: EA
Count: 40
System: 40
Variance: 0
CC-1109-03
Location: C-11-01
Item: 88-1050 gasket kit
UOM: CS
Count: 10
Recount: 10
System: 11
Variance: -1 (9.1%)
Reason, approver: SCRAP, RG
Reason codes: RCV receiving, PICK mis-pick, PUT putaway, UOM unit of measure, SCRAP scrap or damage, CUT cut-off, SHR shrink, KEY data entry, CNT count error.
Moving off the annual wall-to-wall count
A cycle count finds errors within days while work goes on; a physical inventory count stops the building once a year. Dropping the full count is your auditor’s call [1].
Keep this year’s wall-to-wall count. Run cycle counts alongside it.
Tell your auditor now, not at year end. Send the written procedure, the count log with reason codes, and accuracy by month.
Invite them to watch. Auditors can observe one or more cycle counts at any point in the year, and they test how often you count and how well variances are researched [6].
Ask to drop the full count once you have 6 to 12 months at or above target (our suggestion). Many auditors still require one wall-to-wall count a year [3].
Where the slow step goes: researching each variance
Step 5 is where programs stall: unresearched adjustments go in as “count error” and the cause stays. Morsa is software with an AI agent that works in your ERP (NetSuite, Business Central, Prophet 21 or whichever you run), email and Teams. On count CC-1109-01:
It builds each day’s list from the ERP, with yesterday’s open recounts.
It compares to the system only after the counter submits, so counts stay blind.
It reads the item’s transactions since the last good count and the receiving emails, and proposes the cause: “PO 4471 was received as 50 on 3 November; the packing slip says 48. The shelf is right; the receipt was keyed wrong.”
The supervisor approves or edits. Only then does it post the -2 adjustment with reason RCV and the approver’s name.
To see it run on your own count data, book a 30-minute walkthrough.
What to do this week
Your situation | Start here |
|---|---|
Never cycle counted | Run the first-week plan above and a four-week control group |
Counting, but accuracy below 95% | Blind counts, timing clean-up, a reason code on every adjustment |
Above 95%, still shutting down once a year | Send your auditor the procedure and results, and ask them to observe a count |
The same counts drive vendor managed inventory at a customer’s site; see how VMI works and when it fails.
Sources
Bizowie, Cycle Counting: How to Set Up an Inventory Program: https://bizowie.com/cycle-counting (read 8 November 2026)
Effective Inventory Management (EIM), What Is Inventory Cycle Counting?: https://effectiveinventory.com/what-is-inventory-cycle-counting/ (read 8 November 2026)
KORONA POS, Cycle Counting Inventory: A Practitioner’s Guide to Hitting 99% Accuracy: https://koronapos.com/blog/cycle-counting-inventory/ (read 8 November 2026)
DCL Logistics, Inventory Cycle Count: What It Is and How to Do It: https://dclcorp.com/blog/inventory/inventory-cycle-count/ (read 8 November 2026)
Wikipedia, Cycle count: https://en.wikipedia.org/wiki/Cycle_count (read 8 November 2026)
AccountingTools, Inventory audit procedures (section “Observe cycle counts”): https://www.accountingtools.com/articles/inventory-audit-procedures (read 8 November 2026)

