- 1Why You Still Count, Even With a Perpetual System
- 2Planning the Year-End Inventory Count: The Early-December Window
- 3Counting stock you can't see: the 3PL problem
- 4Executing: Freeze, Count, Verify
- 5Booking What the Count Found
- 6A worked example, start to finish
- 7What a 2% Variance Is Trying to Tell You
- 8The Number Someone Else Will Eventually Test
- 9The Count Verifies. The Data Feeds.
The count isn't there to prove your system works. It's there to measure how far it drifted — and the drift is the valuable part.
Last January, your CPA asked for your inventory value as of December 31. You exported Shopify's quantity report, multiplied by cost, and sent it over. In March, while chasing a different question, you discovered a shelf of water-damaged stock that had been unsellable since summer — still on the books at full value. The number you gave your CPA was wrong, it fed your tax return, and nobody counted anything.
That's the position this post gets you out of. A year end inventory count is the one moment each year when your books have to agree with your shelves, and it's worth doing properly: planned around the Q4 chaos, executed so the numbers are trustworthy, and booked so the variance becomes information instead of embarrassment.
This is the operational guide. If you're still deciding how inventory should live in your books at all — periodic versus perpetual, FIFO versus weighted average — read our guide to e-commerce inventory accounting methods first. And if COGS timing is fuzzy, the COGS guide for Shopify sellers covers the mechanics this post assumes.
Why You Still Count, Even With a Perpetual System
Here's the Lie that skips the count: "My system tracks inventory in real time, so a physical count is redundant."
It's a reasonable belief. You've invested in per-order tracking — every sale decrements a SKU, every receipt increments one. Why walk the warehouse to confirm what the software already knows?
Because every tracking system drifts, without exception. A receiving clerk scans a case of 24 as 24 when the supplier packed 23. A return gets refunded but never restocked. Two units break in handling and get tossed without a transaction. None of these are system failures — they're the ordinary friction between a database and a physical shelf, and they accumulate silently.
The Truth is that the count and the system do different jobs. The system tracks what should be on the shelf; the count establishes what is. The gap between them — the variance — isn't a verdict on your competence. It's a diagnostic reading, and it's the only report your software cannot generate about itself. A store that counts annually knows its shrinkage rate and whether it's growing. A store that never counts finds out how far the numbers have drifted at the worst possible moment — an audit, a loan application, or a buyer's diligence review.
Planning the Year-End Inventory Count: The Early-December Window
The default instinct is to count on December 31, since that's the date the books need. The default result is a count done by exhausted staff between holidays, or skipped entirely.
The better answer for most stores is the first week of December. Black Friday and Cyber Monday orders have shipped, the mid-December shipping-deadline crush hasn't peaked, and your team is still standing. Count then, and roll the number forward to December 31 on paper: counted value, plus receipts after the count date, minus the cost of units sold after the count date. Your sales and purchase records handle three quiet weeks far more reliably than a warehouse walk handles New Year's Eve. Flag the roll-forward for your CPA — it's standard practice, but they'll want to see the work.
Wall-to-wall or cycle counts? A wall-to-wall count freezes everything and counts it all at once — one hard day, one clean as-of date, the easiest version to defend. Cycle counting spreads the work through the year, counting a slice of SKUs each week or month. If you already run cycle counts with good discipline and documented coverage of the full catalog, your CPA may accept that in place of a year-end freeze. If year-end is the only time anyone counts anything, wall-to-wall is your answer — and consider adopting cycle counts next year so December stops being the only ground truth you have.
Before count day, do the prep that makes the count mean something: work down the known messes (unprocessed returns, un-received POs sitting in limbo, the "deal with later" shelf), and make sure your cost-per-SKU file is current, because a perfect quantity count priced at stale costs is still a wrong number.
Counting stock you can't see: the 3PL problem
If your inventory sits at a third-party fulfillment provider, you can't count it yourself — but it's still your asset, and "the dashboard says 4,180 units" is not a count. Request three things from your warehouse, in writing:
- Their physical count schedule and your slot in it. Most 3PLs run annual physicals or rolling cycle counts. Ask when your SKUs were last physically counted and get the report — not the live system number, the count record.
- A dated inventory snapshot, by SKU and by status. On-hand sellable, damaged, quarantine/hold, and returns-in-process, as of your count date. The non-sellable buckets are where write-downs hide, and dashboards love to show you only the sellable number.
- Their disposition log for the year. Units they destroyed, donated, or disposed of on your behalf. If they've been discarding damaged returns all year and you've never booked it, your books are carrying ghost stock.
Treat the responses with the same skepticism you'd apply to their monthly invoice — the warehouse's records serve the warehouse first. If the 3PL's counted number disagrees with your system, that variance is real and goes in your books like any other.
Don't forget the stock nobody's standing next to: inventory in transit that you own (paid for, on the water, not yet received) belongs in your year-end number, supported by supplier invoices and shipping documents rather than a count sheet.
Executing: Freeze, Count, Verify
The mechanics are simple; the discipline is the product.
Freeze the window. Pick a block — an evening, a Sunday — when nothing moves. No receiving, no picking, no return processing. A count taken while orders ship out the door is a photograph of a moving car. If a full stop is impossible, stage in-motion stock (packed orders, unopened receipts) in a marked zone and count it separately.
Count blind. Count sheets or scanner sessions should show location and SKU — not the expected quantity. A counter who can see "system says 46" will find 46. Blind counts are slower and honest; that's the trade.
Use two people where it matters. Counter and recorder as separate roles, and for your highest-value SKUs, two independent counts compared afterward. It's the same reason banks dual-control the vault — a count only one person can vouch for is one transposed digit away from worthless.
Recount the outliers before accepting them. Any SKU showing a variance beyond a threshold you set in advance (say, 2% or a fixed unit count) gets a second, independent count. Most large variances are count errors, not real losses — catch them now, not in the journal entry.
Write down condition, not just quantity. The count is your once-a-year physical inspection. Crushed boxes, sun-faded packaging, last year's seasonal stock — flag it on the sheet. Quantity feeds the shrinkage entry; condition feeds the write-downs.
Booking What the Count Found
Now the count becomes accounting. Two separate adjustments come out of a good count, and they answer two different questions.
Shrinkage: units the books have that the shelf doesn't. Price the counted quantities at cost, compare to the book value, and adjust inventory down (or occasionally up) to reality. Debit a dedicated shrinkage account in your COGS section, credit Inventory. Resist the urge to bury it in general COGS — a named line is what lets you compare this year's drift to next year's. If your chart doesn't have one, our e-commerce chart of accounts template includes it.
Write-downs: units that exist but lie about their value. The discontinued SKU that will only move at 70% off, the water-damaged shelf, the returns graded "sellable" by a generous 3PL. Accounting values inventory at the lower of its cost or what it can realistically recover — so stock that can't recover its cost gets written down to what it can. Debit an inventory write-down expense, credit Inventory. The process is simple; the tax treatment has real rules about timing and disposal, so confirm with your CPA before filing — the deduction a write-down produces, and when, is their call, not this post's.
A worked example, start to finish
Fictional store, round numbers. Your books say inventory is $150,000 on the count date. The December 3 count, priced at current landed cost, comes to $147,000 — a $3,000 gap, right at 2%.
You trace it before booking it. A supplier shorted a case on an October PO that receiving never caught: $1,100. Your 3PL's disposition log shows damaged returns destroyed in Q3, never booked: $600. Breakage discarded during the year without entries: $400. The remaining $900 has no paper trail — miscounts or theft, and you'll never know which. All of it is shrinkage:
Debit Inventory Shrinkage (COGS) $3,000 · Credit Inventory $3,000
The count also flagged condition problems: 120 units of a discontinued colorway, on the books at $2,400, realistically worth about $800 in a January clearance:
Debit Inventory Write-Down $1,600 · Credit Inventory $1,600
Inventory now reads $145,400 — a number you counted, priced, and can defend line by line. Roll it forward to December 31 with post-count receipts and sales, and the January email to your CPA takes one sentence.
What a 2% Variance Is Trying to Tell You
Here's why tracing the gap beats just booking it: each slice of the variance points at a different broken process.
The $1,100 receiving gap says your inbound process trusts packing slips. Cases need spot-check weights or counts at the dock, because a short-ship you don't catch in the claim window is a loss you've accepted. The $600 of quietly destroyed returns says your reverse logistics has a bookkeeping hole — dispositions are happening downstream that never make it into your ledger, which is a records problem today and a valuation problem forever. And the unexplained $900 is your ceiling on process trust: if it grows year over year, something — or someone — needs a closer look.
A store that books one lump "adjustment" learns nothing and repeats all of it next year. The variance is the count's real product. Read it.
The Number Someone Else Will Eventually Test
One more reason to do this properly: inventory is usually the largest asset on an e-commerce balance sheet, and the people who matter most — lenders sizing a credit line, buyers pricing an acquisition — treat it as guilty until counted. A diligence team will ask when inventory was last physically verified and how the variance was booked; "we've never counted" reprices the deal, because buyers discount what they can't verify. An annual count with a documented variance isn't just hygiene. It's proof your books describe a real business.
The Count Verifies. The Data Feeds.
A December count gives you one trustworthy snapshot a year. What happens to inventory accuracy the other 364 days depends on the transaction data flowing into your books — every sale that should decrement stock, every refund that should send a unit back through returns. If orders reach QuickBooks as lump-sum deposits, or refunds never arrive at all, your book quantity drifts faster and next year's variance grows.
That data layer is what LedgerPort handles: Shopify and WooCommerce orders, refunds, and fees synced to QuickBooks Online on the sync method you choose, with products mapped to the right QBO items so units-sold math runs on clean inputs. It won't count your shelves — nothing counts your shelves except you — but it keeps the book side of the book-versus-shelf comparison honest between counts. There's a free plan up to 30 orders a month; paid plans start at $25/month.
Put the count on the calendar for the first week of December, before the shipping deadlines eat it. The 2% you find will pay for the Sunday it costs.
See how LedgerPort keeps the transaction side of your inventory math clean →
