You're staring at your general ledger. Think about it: the inventory balance doesn't match what's actually on the shelves. Again Not complicated — just consistent..
If that sounds familiar, you're not alone. Most businesses don't ignore inventory tracking because they don't care — they ignore it because the method they're using creates more questions than answers. And the culprit is usually a fundamental misunderstanding of how the inventory account behaves in a perpetual inventory system.
This changes depending on context. Keep that in mind.
Let's fix that.
What Is a Perpetual Inventory System
A perpetual inventory system updates your inventory records in real time. Every purchase, every sale, every return, every write-off — the moment it happens, your books reflect it Easy to understand, harder to ignore. Still holds up..
No waiting for a physical count. Also, no "we'll true it up at month-end. " The inventory account is a living, breathing ledger that moves with your business.
Contrast that with a periodic system, where you only update inventory at set intervals — usually month-end or year-end — after a physical count. In a periodic system, the inventory account sits static for weeks. Because of that, purchases go to a separate Purchases account. Cost of goods sold doesn't exist until you calculate it retrospectively.
This is the bit that actually matters in practice That's the part that actually makes a difference..
In a perpetual inventory system the inventory account is the single source of truth for what you own, what it cost, and what's available to sell — right now.
The Core Difference in One Sentence
Perpetual: inventory account changes with every transaction. Periodic: inventory account changes only when you count.
That's it. So that's the whole distinction. But the implications? They ripple through your financial statements, your tax returns, your purchasing decisions, and your ability to sleep at night That's the part that actually makes a difference..
Why It Matters / Why People Care
You might be thinking: "Okay, real-time updates. So what? I can just count at the end of the month.
You can. But here's what you lose when you don't run perpetual:
Real-time COGS. In a perpetual system, cost of goods sold posts with every sale. You know your gross margin today. Not in two weeks when the accountant finishes the close. Today.
Theft and shrinkage detection. If your perpetual records say 400 units but the shelf holds 382, you have a problem now. In a periodic system, you won't know until the count — and by then, the trail is cold And that's really what it comes down to..
Purchasing intelligence. Reorder points, safety stock, lead time decisions — they all depend on knowing what you actually have. Perpetual gives you that. Periodic gives you a guess Simple, but easy to overlook..
Audit readiness. External auditors love perpetual systems. They can trace a single transaction from PO to receipt to sale to COGS without breaking a sweat. Periodic systems? They require more substantive testing, more sampling, more billable hours That's the part that actually makes a difference..
Tax accuracy. Inventory valuation methods (FIFO, LIFO, weighted average) behave differently under perpetual vs. periodic. The IRS cares. You should too.
The short version: perpetual inventory turns inventory from a year-end headache into a daily management tool.
How It Works (Mechanics That Actually Matter)
Let's walk through the journal entries. Which means this is where most explanations get dry. I'll keep it practical.
Initial Purchase
You buy 100 widgets at $12 each. Terms: net 30.
Dr Inventory 1,200
Cr Accounts Payable 1,200
Inventory goes up. AP goes up. Simple Small thing, real impact..
Freight-In (If You Pay Shipping)
Shipping is part of inventory cost. Not expense. Inventory.
Dr Inventory 150
Cr Cash 150
Purchase Return or Allowance
You send back 10 defective units Which is the point..
Dr Accounts Payable 120
Cr Inventory 120
Inventory drops. Practically speaking, aP drops. The cost flows back out exactly as it came in That's the whole idea..
Sale — Two Entries, Every Time
This is the perpetual signature. Every sale triggers two entries.
Entry 1: Revenue recognition
Dr Accounts Receivable 2,500
Cr Sales Revenue 2,500
Entry 2: Cost of goods sold
Dr Cost of Goods Sold 1,200
Cr Inventory 1,200
That second entry is the magic. COGS rises. Practically speaking, inventory drops. Gross margin is instantly calculable But it adds up..
Sales Return
Customer returns 5 units. Selling price $25. Cost $12 Most people skip this — try not to..
Dr Sales Returns & Allowances 125
Cr Accounts Receivable 125
Dr Inventory 60
Cr Cost of Goods Sold 60
Inventory goes back up. In real terms, cOGS goes back down. The sale effectively unwinds It's one of those things that adds up. No workaround needed..
Inventory Write-Down (Lower of Cost or Market)
Market value drops to $9 per unit. You have 50 units on hand.
Dr Loss on Inventory Write-Down 150
Cr Inventory 150
Inventory drops to market. The loss hits the income statement. This is required under GAAP — perpetual makes it visible immediately.
Physical Count Adjustment (Yes, You Still Count)
Perpetual doesn't eliminate physical counts. It just makes the adjustment smaller and the investigation easier.
Count shows 92 units. Perpetual says 95 And it works..
Dr Cost of Goods Sold 36
Cr Inventory 36
(Assuming $12 cost. The difference flows to COGS — or to a shrinkage expense account if you track it separately.)
Common Mistakes / What Most People Get Wrong
I've seen these errors in companies doing $5M and companies doing $500M. And they're not "small business problems. " They're human problems It's one of those things that adds up..
1. Recording Purchases to Expense Instead of Inventory
This is the classic. Someone codes the vendor invoice to "Supplies Expense" or "COGS" instead of Inventory.
Result: Inventory is understated. COGS is overstated (or expenses are inflated). Now, gross margin looks terrible. The balance sheet lies.
Fix: Three-way match. PO → Receipt → Invoice. Think about it: every time. No exceptions.
2. Forgetting the COGS Entry on Sales
The revenue entry posts. The COGS entry doesn't. But maybe the inventory module isn't integrated with the sales module. Maybe someone turned off the auto-post.
Result: Inventory stays inflated. COGS is zero. Gross margin looks amazing — until the count.
Fix: Automate it. In practice, if your system can't post COGS automatically with every sale, you don't have a perpetual system. You have a periodic system with extra steps.
3. Using the Wrong Cost Layer (FIFO/LIFO/Average)
Perpetual FIFO ≠ Periodic FIFO. Practically speaking, perpetual LIFO ≠ Periodic LIFO. The timing of cost layer relief changes the answer Worth keeping that in mind. That alone is useful..
Example: You buy 10 @ $10, sell 5, buy 10 @ $12, sell 10.
- Perpetual FIFO: First 5 sold @ $10. Next 10 sold: 5 @ $10 + 5 @ $12.
- Periodic FIFO: All 15 sold from earliest layers: 10 @ $10 + 5 @ $12.
Different COGS. Different ending inventory. Different taxable income.
Fix: Know which method your system uses. Document it. Don't change it without a tax advisor.
4. Ignoring Freight-In, Discounts, and Returns
Purchase discounts taken? That reduces inventory cost
Purchase discounts taken? On top of that, that reduces inventory cost, not income. Also, freight-in? Capitalized to inventory. Purchase returns? Reverse the original inventory debit at the original cost layer, not current cost.
Mess this up and your inventory valuation drifts from reality. A $50 freight bill coded to expense instead of inventory seems small. Do it 200 times a year and your margins are fiction Practical, not theoretical..
Fix: Standardize the receiving process. The receiver doesn't just count boxes — they verify the landed cost against the PO. Freight, duties, handling fees — all hit Inventory before the vendor invoice arrives And it works..
5. Letting Negative Quantities Exist
Perpetual systems allow negative quantities if you don't lock them down. Plus, you sell 10 but only have 8 on hand. System posts -2.
Result: COGS calculates on negative layers. Average cost goes haywire. Also, fIFO/LIFO logic breaks. The next receipt posts at a cost that "fixes" the negative, but the math in between is garbage It's one of those things that adds up..
Fix: Hard stops. Think about it: no shipment without quantity on hand. No invoice posting without receipt. If the warehouse ships from a location the system doesn't know about, fix the location mapping — don't override the quantity Small thing, real impact. Simple as that..
6. Treating Consignment Like Own Inventory
Goods on your floor ≠ your inventory. Consignment stock belongs to the supplier until you sell it It's one of those things that adds up..
Wrong entry:
Dr Inventory 5,000
Cr Accounts Payable 5,000
Right entry: **Nothing.Here's the thing — ** Memo record only. Track quantity for reorder points, but zero dollar value on your balance sheet Not complicated — just consistent. No workaround needed..
When you sell it:
Dr Accounts Receivable 1,200
Cr Revenue 1,200
Dr COGS (Consignment) 700
Cr Consignment Payable 700
Fix: Separate consignment SKUs in the item master. Think about it: different GL accounts. Different valuation class. If your system can't do this, track it in a spreadsheet and reconcile monthly — but never put it in your inventory GL.
The Reconciliation Discipline
Perpetual inventory is a promise: The general ledger matches the subledger matches the floor.
That promise breaks silently. That's why no error message. No red flag. Just drift But it adds up..
Monthly Close Checklist (Non-Negotiable)
-
Subledger-to-GL Reconciliation
Inventory subledger total = Inventory GL balance. Penny-perfect. If it's off by $0.01, you stop and find it. "Immaterial" is how $500k write-offs happen. -
Negative Quantity Report
Run it. Fix every line. Zero tolerance. -
Zero-Value / Zero-Quantity Mismatches
Items with quantity but $0 value? Items with value but 0 quantity? Both are data integrity failures Turns out it matters.. -
Standard Cost Variance Review (If applicable)
Price variance. Usage variance. Efficiency variance. Don't just post them — explain them. "Purchasing bought from a new vendor" is an explanation. "Timing" is not. -
Obsolete/Slow-Moving Reserve Review
Perpetual shows you the aging in real time. Use it. If you haven't moved it in 12 months, write it down. Hope is not an accounting policy Worth keeping that in mind.. -
Physical Count Cycle
Full count annually. Cycle counts weekly (A-items), monthly (B-items), quarterly (C-items). The perpetual system is the cycle count engine — it tells you what to count and when based on velocity and variance history.
When Perpetual Fails (And What To Do)
Systems crash. Migrations corrupt data. Acquisitions bring legacy messes.
Signs your perpetual system has failed:
- Subledger-to-GL variance > 1% of ending inventory
- Negative quantities recurring on same SKUs
- Physical count adjustments > 5% of inventory value
- "Plug" entries to COGS every month to force the margin
- No one knows why the numbers are what they are
The fix isn't "go periodic." Periodic hides the problem. The fix is:
- Freeze. Stop posting inventory transactions in the broken system.
- Count. Full physical. Value at cost (landed, correct layer).
- Revalue. Single journal entry to true up GL to physical reality.
Dr/Cr Inventory XXX Dr/Cr COGS / Expense XXX - Restart. Clean item master. Correct cost layers. Locked controls. Trained users.
It takes a weekend. It saves years of bad decisions.
The Bottom Line
Perpetual inventory isn't an accounting exercise. It's an operational discipline That's the part that actually makes a difference..
The journal entries are simple. The system is hard — because it demands that every move of goods has a financial consequence, recorded in real time, by people who didn't sign up to be account
ants."
Monthly Close Checklist (Non-Negotiable)
-
Subledger-to-GL Reconciliation
Inventory subledger total = Inventory GL balance. Penny-perfect. If it's off by $0.01, you stop and find it. "Immaterial" is how $500k write-offs happen. -
Negative Quantity Report
Run it. Fix every line. Zero tolerance. -
Zero-Value / Zero-Quantity Mismatches
Items with quantity but $0 value? Items with value but 0 quantity? Both are data integrity failures Not complicated — just consistent.. -
Standard Cost Variance Review (If applicable)
Price variance. Usage variance. Efficiency variance. Don't just post them — explain them. "Purchasing bought from a new vendor" is an explanation. "Timing" is not No workaround needed.. -
Obsolete/Slow-Moving Reserve Review
Perpetual shows you the aging in real time. Use it. If you haven't moved it in 12 months, write it down. Hope is not an accounting policy Still holds up.. -
Physical Count Cycle
Full count annually. Cycle counts weekly (A-items), monthly (B-items), quarterly (C-items). The perpetual system is the cycle count engine — it tells you what to count and when based on velocity and variance history Worth keeping that in mind..
When Perpetual Fails (And What To Do)
Systems crash. Migrations corrupt data. Acquisitions bring legacy messes.
Signs your perpetual system has failed:
- Subledger-to-GL variance > 1% of ending inventory
- Negative quantities recurring on same SKUs
- Physical count adjustments > 5% of inventory value
- "Plug" entries to COGS every month to force the margin
- No one knows why the numbers are what they are
The fix isn't "go periodic." Periodic hides the problem. The fix is:
- Freeze. Stop posting inventory transactions in the broken system.
- Count. Full physical. Value at cost (landed, correct layer).
- Revalue. Single journal entry to true up GL to physical reality.
Dr/Cr Inventory XXX Dr/Cr COGS / Expense XXX - Restart. Clean item master. Correct cost layers. Locked controls. Trained users.
It takes a weekend. It saves years of bad decisions Less friction, more output..
The Bottom Line
Perpetual inventory isn't an accounting exercise. It's an operational discipline.
The journal entries are simple. The system is hard — because it demands that every move of goods has a financial consequence, recorded in real time, by people who didn't sign up to be accountants That alone is useful..
But here's what they don't tell you in the software demo:
The system doesn't fail because of bugs.
It fails because humans skip the hard part — the part where they stop, look at what just happened, and say, "Does this make sense?"
A receipt for 500 units at $12.Practically speaking, 50 each gets entered as 500 units at $125. 00 each. That's why the system doesn't care. That's why the GL posts cleanly. The margin looks great. Until it doesn't.
That's why the checklist exists. Not because auditors are nosy — but because they've seen the wreckage when no one bothered to check.
This isn't about perfect data. It's about honest data. Data that reflects what actually happened, not what someone hoped happened, or what the spreadsheet conveniently shows Not complicated — just consistent..
The floor knows. The system just has to remember That's the part that actually makes a difference..
Final Note: If you're still reading this after the subledger reconciliation, congratulations — you're probably doing it right. If you skipped to the bottom looking for a shortcut, stop. Inventory doesn't care about your timeline. It only cares about the truth Turns out it matters..