Skip to content
Blog/Counting

After the Count: How to Investigate a Variance Before You Post It

Recount every discrepancy with a second person first, then sort what survives by variance value - units times unit cost - and investigate only the top lines that carry most of the value. Work the causes in order: a paperwork movement missing or duplicated, a real movement never recorded, the item sitting somewhere else, and loss last. Write down what you found, even when the answer is unknown, then post the adjustment.

Start 7-Day Trial7-day free trial ยท cancel anytime
CountingBy Cory ChamberlainSeptember 6, 20269 min read

Guide after guide on counting stock ends at the same sentence: *investigate the cause if possible.* Then it stops. You are standing in the aisle with a stack of sheets, eleven items that do not match, and no idea what "investigate" actually means on a Tuesday afternoon.

This is that missing step. Not how to run the count - how to do a physical inventory count covers the schedule, the movement freeze, the zone plan and the reconcile loop, and the count sheet template covers the columns. This is what you do in the days after the sheets come back, when the numbers are wrong and somebody has to decide what to type into the system.

Download the free printable variance investigation log - one row per variance, the cause boxes in investigation order, and a sign-off block. Landscape; ten rows, prints on three pages. No signup, nothing uploaded.

First, sort the variances by money, not by size#

The instinct is to start with the biggest number of units. Eleven missing washers feels like a bigger problem than one missing spindle. It is not.

Multiply each variance by what the item cost you and sort descending. In many small operations that list collapses fast: a handful of lines carry most of the value, and the long tail is pennies. Draw a line where the cumulative value stops moving, and those top lines are the only ones getting a real investigation. Everything below the line gets posted as counted, with a note, and no further effort.

This is not laziness, it is arithmetic. An hour spent tracing eleven washers costs more than the washers. The point of sorting by value is to earn permission to stop.

Recount before you investigate anything#

The count guide already tells you to recount a discrepancy with a different person. It is worth repeating here for one reason: it is the boundary of this whole exercise.

Many variances are not shrinkage at all. They are unit errors (a case counted as an each), a bin someone missed behind a pallet, or an item that lives in two places and got counted in one. A second pair of eyes catches many of these, and a recount is quick per line.

Only what survives an independent recount is a real variance. Anything you investigate before recounting is a story you might be telling about a typo.

The four causes, in the order that finds them fastest#

Real variances come from a short list. Work it in this order, because it runs cheapest-first and each step eliminates a chunk of the remainder.

1. A paperwork movement that never happened, or happened twice. Pull everything that touched the item since the last count: receipts, shipments, transfers between locations, anything consumed by a job. Look for a receipt logged for a full case when a short shipment arrived, a transfer entered on both ends, or a shipment logged twice. In many shops this is where the answer turns up, and it is the one you can work at a desk.

2. A movement that happened but was never written down. The mirror image, and harder. Damaged goods binned without a note. A sample handed to a customer. Two units pulled for an internal repair. You find these by asking people, not by reading records - which is why this step has to happen within a few days while anyone still remembers. After a couple of weeks, memories have usually gone.

3. The item is somewhere else. Check the neighboring bins, the returns area, the receiving dock, and any staging area for outbound orders. Items with similar codes are the classic trap - a variance of exactly minus six on one code and plus six on a code one character away is not two mysteries, it is one misfiled pallet.

4. Loss. Theft, or breakage nobody reported. This is the last box, not the first, and it is the one people reach for immediately because it is the most dramatic. It is the correct conclusion only when the first three are genuinely eliminated - and "I could not be bothered to check the transfers" is not elimination.

Write down the cause, even when the cause is "unknown"#

For each investigated line, record one sentence: what you found, or that you found nothing. Then post the adjustment.

The sentence matters more than it looks. One unexplained variance is noise. The same item unexplained three counts running is a process problem with a location, a supplier or a shift attached to it - but only if somebody wrote it down each time. Without the note, every count starts from zero and you rediscover the same problem forever.

Be honest about "unknown". A count where every variance has a tidy explanation is a count where somebody was inventing explanations to close lines.

What to do with what you learn#

The output of a good post-mortem is not a corrected number. The corrected number was always going to happen. The output is a change to how you work:

  • If receipts keep coming up short, the fix is at the receiving dock - count against the packing slip before signing, not after putting away.
  • If transfers keep double-posting, the fix is one person owning the entry, not two people being careful.
  • If one bin is always wrong, the fix is usually that two similar items are stored next to each other. Move one.
  • If damage keeps appearing uncounted, the fix is a bin and a clipboard where the damage happens, so writing it down is easier than not.

Each of those is a small change to a procedure. None of them is software. That is the honest shape of this work: the count finds the number, the investigation finds the cause, and a habit fixes it.

Two questions to ask your system before you build step 1 on top of it#

Step 1 assumes you can pull up what touched an item. Just about every system will tell you it has a history screen. Two questions decide whether that screen can actually answer a variance question, and it is worth knowing our own answers, because they are not the answers a feature list would give you.

Can you get the history out whole, or only look at a page of it? This is the question that matters most, and it is the one nobody asks. A history screen showing the most recent fifty rows will answer "were there receipts?" and will not answer "were there *any others*?" - and in variance work those are different questions with the same-looking answer.

In InventoryQuick, the honest position is this. The activity log screen pages through history fifty rows at a time, and in the web app the chips filter only the fifty rows on screen; the phone app's Check-outs and Returns chips, and the Assistant's movement-type filter, do query the whole history - so a chip that shows three receipts means three on this page, not three in the period. The per-item history panel is narrower still: it takes no filter at all, and simply shows the most recent 100 movements, with no control on the screen to ask for more (the endpoint behind it stops at 200). So do not design a process around ticking a chip and reading the count off the screen.

Two things do reach the whole history rather than a page. The search box on the activity log matches against the description text of every stored row, not just the visible ones. The Export button hands you the entire matching set as a CSV - the query behind it is not paged - carrying the date range and search text you set on screen, so setting the dates to your last count and exporting gives you a complete file to sort in a spreadsheet. The IQ Assistant is a separate route rather than a third unpaged one: it can ask for one item's movements over a date range - the only way to get one item AND a date range together without a spreadsheet - and it fetches up to 500 at a time, so check the total it reports.

Two things to know before you open that file. It is exported for the whole organization, not the one item you are investigating - the Export button does not narrow to a single item, so expect to filter to your item in the spreadsheet. And it has eight columns: date, item, SKU, an Action string, quantity, Issued To, Issued By, and Details. Action and Details are text, derived from the description each movement was stored with. Issued To and Issued By are filled in only for asset check-out and check-in rows - they are read back out of the sentence those rows are written with - and blank on every stock adjustment, receipt, transfer, sale and job consumption. That is not a gap in the export; it is the actual state of the record, and it is the subject of the next question.

One more thing about the text you will be searching. It is stored in the language of whoever typed it, so an English search word will miss a row a German-speaking colleague created. Filter on the SKU column in the export, or ask the Assistant - the search box matches only the reason text, never the item name or SKU.

Does it record who? For a quantity change, almost certainly not, and this is the one to check before you design accountability around it. In InventoryQuick a stock movement has ten columns and none of them is a person - no user id, no initials, nothing. When you adjust stock you can type a reason and that free text is stored with the movement, but a name typed in that box is a sentence somebody wrote, not a verified identity.

The contrast inside the same product is the useful bit, and it is why "does it record who" has to be asked twice. Checking an item *out* to a person does record identity properly: who has it, who issued it against their real user account, when it was taken and when it came back. That is where the Issued By column in your export comes from, and why it is populated on those rows and nowhere else. There is a screen listing what is currently out, with an Issued To column you can sort on, on Pro and above. Three caveats worth knowing before you lean on it: the person is recorded as typed, so "J. Ramos" and "Jose Ramos" are two different names in the file; it tracks quantity, not serial numbers - you know five went out and to whom, not which five; and a checkout does not reduce the owned quantity, because it is a loan rather than a sale.

So: custody has an owner, a quantity change does not. Be suspicious of any system that advertises an audit trail without showing you the field, and check those two separately, because one can be true while the other is not.

What it means in practice: accountability for a posted adjustment lives in your procedure, not in the record. The sign-off block on the paper sheet, initialed by the person who counted and the person who approved it, is the only place those names exist. Keep the sheets.

A rhythm that keeps this cheap#

Done once a year, this is a miserable week. Done in small pieces it is barely work.

Count a handful of your highest-value items monthly and everything else on a slow rotation. Investigate the same day the count happens, while memories are fresh. Keep the post-mortem log for a year so the patterns have somewhere to accumulate. Review it twice a year and ask one question: which cause shows up most, and what would make it structurally harder to happen?

Often the answer turns out not to be theft. It is a receiving process that assumes the packing slip is true. That is a good problem to find, because it is one you can fix on a Tuesday.


Related: Physical count sheet template | How to do a physical inventory count | Cycle counting vs physical inventory | ABC analysis worksheet

Common questions

How do I decide which inventory variances are worth investigating?

Multiply each variance by what the item cost you and sort descending. Draw a line where the cumulative value stops moving and investigate only the lines above it. Everything below gets posted as counted, with a note, and no further effort. This is not laziness, it is arithmetic: an hour spent tracing eleven washers costs more than the washers. The point of sorting by value is to earn permission to stop.

Should I recount before investigating a variance?

Yes, with a different person, and it is the boundary of the whole exercise. Many variances are not shrinkage at all - they are unit errors such as a case counted as an each, a bin someone missed behind a pallet, or an item that lives in two places and got counted in one. A second pair of eyes catches many of them, and a recount is quick per line. Anything you investigate before recounting is a story you might be telling about a typo.

What are the causes of a stock variance, and in what order should I check them?

Four, worked cheapest-first. One: a paperwork movement that never happened or happened twice - a receipt logged for a full case when a short shipment arrived, a transfer entered on both ends, a shipment logged twice. Two: a movement that happened but was never written down, which you find by asking people while they still remember. Three: the item is somewhere else - neighboring bins, returns, the receiving dock, outbound staging; minus six on one code and plus six on a similar code is one misfiled pallet, not two mysteries. Four: loss. Loss is the last box, not the first.

What should I write when I cannot explain a variance?

Write unknown. Be honest about it: a count where every variance has a tidy explanation is a count where somebody was inventing explanations to close lines. Record one sentence per investigated line - what you found, or that you found nothing - then post the adjustment. Without the note, every count starts from zero and you rediscover the same problem forever.

Can I filter a movement history by type to check what touched an item?

In InventoryQuick, not reliably from the screen. The activity log pages through history fifty rows at a time, and in the web app the chips filter only the fifty rows on screen; the phone app's Check-outs and Returns chips, and the Assistant's movement-type filter, do query the whole history - so a chip that shows three receipts means three on this page, not three in the period. The per-item history panel is narrower still: it takes no filter at all, and simply shows the most recent 100 movements, with no control on the screen to ask for more (the endpoint behind it stops at 200). Do not design a process around ticking a chip and reading the count off the screen.

How do I get a complete movement history out for a variance investigation?

Two things do reach the whole history rather than a page. The search box on the activity log matches against the description text of every stored row, not just the visible ones. The Export button hands you the entire matching set as a CSV - the query behind it is not paged - carrying the date range and search text you set on screen. The IQ Assistant is a separate route rather than a third unpaged one: it can ask for one item's movements over a date range - the only way to get one item AND a date range together without a spreadsheet - and it fetches up to 500 at a time, so check the total it reports. Two things to know before you open that file: it is exported for the whole organization, not the one item you are investigating, so expect to filter to your item in the spreadsheet; and the description text is stored in the language of whoever typed it, so an English search word will miss a row a German-speaking colleague created. Filter on the SKU column in the export, or ask the Assistant - the search box matches only the reason text, never the item name or SKU.

What columns are in the exported movement history?

Eight: date, item, SKU, an Action string, quantity, Issued To, Issued By, and Details. Action and Details are text, derived from the description each movement was stored with. Issued To and Issued By are filled in only for asset check-out and check-in rows - they are read back out of the sentence those rows are written with - and blank on every stock adjustment, receipt, transfer, sale and job consumption.

Does an inventory system record who made a stock adjustment?

For a quantity change, almost certainly not, and this is the one to check before you design accountability around it. In InventoryQuick a stock movement has ten columns and none of them is a person - no user id, no initials, nothing. You can type a reason when you adjust stock and that free text is stored with the movement, but a name typed in that box is a sentence somebody wrote, not a verified identity. Accountability for a posted adjustment therefore lives in your procedure: the sign-off block on the paper sheet, initialed by the person who counted and the person who approved it, is the only place those names exist.

Does checking an item out to a person record identity?

Yes, and the contrast inside the same product is the useful bit. Checking an item out records who has it, who issued it against their real user account, when it was taken and when it came back - that is where the Issued By column in the export comes from, and why it is populated on those rows and nowhere else. There is a screen listing what is currently out, with an Issued To column you can sort on, on Pro and above. Three caveats: the person is recorded as typed, so J. Ramos and Jose Ramos are two different names in the file; it tracks quantity, not serial numbers, so you know five went out and to whom, not which five; and a checkout does not reduce the owned quantity, because it is a loan rather than a sale.

How often should I do this so it stays cheap?

Count a handful of your highest-value items monthly and everything else on a slow rotation. Investigate the same day the count happens, while memories are fresh. Keep the post-mortem log for a year so the patterns have somewhere to accumulate, and review it twice a year asking one question: which cause shows up most, and what would make it structurally harder to happen? Done once a year this is a miserable week; done in small pieces it is barely work.

Ready to try
InventoryQuick?

7-day free trial. Cancel anytime. Plans from $19/mo.

Full access to everything ยท you won't be charged for 7 days