How to reconcile a stock count with inventory records
By the Analistable team · Updated · 5 min read
Sum the physical count per SKU and location, join it to the system's stock report, and calculate the variance in units and value (units × unit cost). Items in the system but not counted need a recount; items counted but unknown to the system need investigating. To combine two warehouses, stack their reports first, then reconcile the totals.
Part of our guide: How to reconcile data in Excel
Prepare the count
Count sheets often have the same SKU on several lines (counted in two bays). Sum them first:
Counted =SUMIFS(Count[Qty], Count[SKU], [@SKU], Count[Location], [@Location])
Variance =[@Counted] - [@[System qty]]
Value =[@Variance] * [@[Unit cost]]Worked example
| SKU | System qty | Counted | Variance | Unit cost | Value |
|---|---|---|---|---|---|
| MUG-01 | 240 | 236 | -4 | 3.1 | -12.4 |
| TEA-02 | 120 | 120 | 0 | 1.75 | 0 |
| POT-03 | 18 | 0 | -18 | 14 | -252 |
| LID-04 | 0 | 30 | 30 | 0.6 | 18 |
POT-03 shows zero counted: recount before writing it off — a whole SKU missing is more often a missed bay than a theft. LID-04 was counted but the system shows none: probably a goods receipt not booked.
Two warehouses or channels
Stack each location's stock report with a Location column, then pivot by SKU to see total stock and the split. To compare marketplace sales with stock, join the sales export (units sold per SKU) to opening stock and expected closing stock = opening − sold + received.
| SKU | Warehouse A | Warehouse B | Total |
|---|---|---|---|
| MUG-01 | 236 | 410 | 646 |
| TEA-02 | 120 | 0 | 120 |
Checks before posting adjustments
- Recount every line with a variance above a threshold (units or value).
- Check open goods receipts and despatches around the count time — cut-off errors look like variances.
- Confirm units of measure (each vs case of 6).
- Summarise the total value of adjustments for sign-off.
Inventory turnover — how fast stock sells — uses the same stock and sales data: see calculating inventory turnover from stock and sales sheets.
In SQL
SELECT COALESCE(s.sku, c.sku) AS sku,
COALESCE(s.qty, 0) AS system_qty,
COALESCE(SUM(c.qty), 0) AS counted
FROM system_stock s
FULL OUTER JOIN count_lines c ON c.sku = s.sku
GROUP BY 1, 2
HAVING COALESCE(s.qty, 0) <> COALESCE(SUM(c.qty), 0);The full outer join keeps SKUs that were counted but aren't in the system, and SKUs in the system that nobody counted.
Step by step
- Freeze stock movements, or record the exact cut-off time, before counting.
- Export the system stock report at the cut-off with SKU, location, quantity and unit cost.
- Collect count sheets or scanner exports into one table with SKU, location and quantity.
- Build the list of every SKU and location from both sides, so nothing is missed.
- Add Counted, Variance and Value with the formulas above, then sort by absolute value.
In Excel 365 and Google Sheets, build the combined SKU list with =UNIQUE(VSTACK(System[SKU], Count[SKU])) in Excel or =UNIQUE({System!A2:A; Count!A2:A}) in Sheets. In Excel 2019, paste both SKU columns under each other and use Data → Remove Duplicates. Use the SKU and location together as the key if the same SKU sits in several bays.
Second example: unit-of-measure errors
| SKU | System qty (each) | Counted | Counted as | Corrected count | True variance |
|---|---|---|---|---|---|
| CUP-06 | 360 | 60 | cases of 6 | 360 | 0 |
| NAP-50 | 1000 | 21 | packs of 50 | 1050 | 50 |
| STRAW | 2000 | 2000 | each | 2000 | 0 |
CUP-06 showed a variance of −300 until the count was converted from cases to each; NAP-50 turned from −979 into a genuine surplus of 50. Add a pack-size column from the item master and convert counts before calculating variances.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Large negative variance on one SKU | Missed bay or location | Recount every location for that SKU |
| Matching surplus and shortage on similar SKUs | Items counted under the wrong code | Check the two SKUs together and move the quantity |
| Variances on items received that day | Goods receipt booked after the count | Apply the cut-off and adjust for open receipts |
| Many SKUs counted but not in the system | New items not yet set up, or barcode mismatch | Map barcodes to SKUs before matching |
| Value of variance looks wrong | Unit cost missing or zero | Fill unit cost from the item master |
Checking the result and cycle counts
Before posting, check that total counted units equals the sum of all count lines, and that the system total in your sheet equals the stock report total. The net adjustment value is the sum of the Value column; report gains and losses separately as well, because a small net figure can hide large offsetting errors.
For rolling cycle counts, keep a log of each count with its date, so you can see which SKUs haven't been counted for a while and which keep showing variances. Comparing several count files is the same stacking job described in combining Excel files into one, and the reconciliation method is in the reconciliation guide.
Doing it in Power Query
If counts arrive as several scanner files, Power Query avoids copying and pasting: load the count files from a folder, group by SKU and location summing quantity, then merge with the system stock report using a full outer join so both uncounted and unknown items stay in the result. Replace nulls with 0 on both quantity columns before adding the variance. The folder approach is described in combining files from a folder with Power Query.
Which variances to recount
| Variance | Value | Action |
|---|---|---|
| Any | Above your value threshold | Recount and investigate |
| Whole SKU missing (counted 0) | Any | Recount every location |
| Small, unit-level | Below threshold | Accept and adjust |
| Counted but not in system | Any | Check receipts and item set-up |
Set the threshold in value rather than units: a variance of 10 on a 0.60 lid matters less than a variance of 1 on a 400 item.
Common mistakes
- Taking the system report after movements restarted, so sales during the count look like losses.
- Using selling price instead of cost to value variances.
Reporting the count
A short sign-off summary usually covers: SKUs counted, SKUs with a variance, total gains and total losses in value, the net adjustment, and the largest five variances with their explanations. Keep the count sheets and the reconciliation workbook together, so an auditor can trace any adjustment back to the original count line and the system figure it was compared with.
Frequently asked questions
- How do I compare a stock count with system stock in Excel?
- Sum counted quantities per SKU and location with SUMIFS, put them next to the system quantity, and calculate the variance in units and value.
- What should I do with large stock variances?
- Recount, check receipts and despatches around the count time, and confirm units of measure before adjusting stock.
- How do I combine stock from two warehouses?
- Stack the stock reports with a location column and pivot by SKU.
- How often should I reconcile stock?
- Full counts once or twice a year are common, with rolling cycle counts of fast-moving or high-value SKUs in between.
- How do I find SKUs that weren't counted?
- List every SKU from the system report and flag those with a COUNTIF of zero in the count lines, then recount them before adjusting.
- What if the count was in cases and the system in units?
- Multiply counted cases by the pack size from your item master before calculating the variance.
- Should I value stock variances at cost or selling price?
- At cost, using the same unit cost your inventory system uses for valuation, so the adjustment matches what the accounts will post.