Perpetual vs Periodic Inventory
Two ways to know what stock you hold and what it cost. How each derives cost of goods sold, what each demands operationally, and why perpetual still needs counting.
The difference in one line
A perpetual system updates stock on every movement. A periodic system updates it when you count.
Everything else follows from that, including the part that surprises people: the two methods compute cost of goods sold differently, and the difference is not cosmetic.
Periodic: count, then derive
Under a periodic system you know what you bought, because purchases are invoiced. You do not track what left. At period end you count what remains and derive the rest.
Open with 40,000, buy 180,000, count 55,000 at the end: cost of sales is 165,000. Arithmetically sound and operationally cheap — no movement recording at all.
The weakness is in the word derive. Everything that left is in that 165,000: goods sold, yes, but also breakage, theft, samples, and items miscounted. The method cannot separate them, so shrinkage is invisible — it is silently reported as cost of sales, and margin looks worse without anyone able to say why.
Perpetual: record, then verify
A perpetual system records every movement as it happens. Receive 200, issue 15, adjust 3 away — each is a dated transaction with a quantity and a cost, and the on-hand figure is their running sum.
Cost of sales is not derived at period end; it is posted with each issue. The ledger knows what it cost the moment the stock moved.
What you gain is the thing periodic cannot give you: on-hand stock is answerable at any moment, each movement has a reason code, and shrinkage becomes a visible variance rather than a silent component of cost of sales.
What you pay is discipline. Every movement must be recorded, including the ones nobody wants to record — the damaged carton, the sample to a customer, the part taken for a repair. One unrecorded class of movement and the on-hand figure drifts permanently.
Where cost flow comes in
Both methods need a rule for which cost to use when units were bought at different prices. The common ones are FIFO, weighted average, and specific identification.
The interaction catches people out: the same cost flow assumption produces different numbers under the two systems. Weighted average under a perpetual system recalculates the average after every receipt — a moving average — so an issue is costed at the average in force at that moment. Under a periodic system you compute one average for the whole period and apply it to everything.
| Event | Units | Unit cost | Running average (perpetual) |
|---|---|---|---|
| Opening | 100 | 10.00 | 10.00 |
| Receipt | 100 | 14.00 | 12.00 |
| Issue | (120) | 12.00 | 12.00 |
| Receipt | 100 | 16.00 | 14.29 |
The issue of 120 is costed at 12.00 — 1,440 — because that was the average when it moved. Under a periodic system the average would be computed across all three receipts (13.33) and the same issue would be costed at 1,600. Same transactions, same assumption, a 160 difference in cost of sales.
Cycle counting: why perpetual still counts
A perpetual system does not remove counting. It changes what counting is for. In a periodic system the count produces the number; in a perpetual system it verifies one you already have.
That is what makes cycle counting possible — counting a small subset continuously instead of everything once a year. Twenty items a day, chosen so high-value and fast-moving lines come round more often, catches drift within weeks rather than at year end.
A common scheme counts by value class: A items quarterly, B items twice a year, C items annually. The principle is to spend counting effort where an error costs most, not to spread it evenly.
Available to promise, not on hand
The figure that actually governs whether you can accept an order is not on-hand. It is available to promise, and the gap between them is where most over-selling happens.
On-hand is what is physically there. Some of it is already spoken for — allocated to orders picked but not shipped, reserved for a work order, or quarantined pending inspection. Available to promise nets those out and adds what is confirmed inbound.
| Line | Units |
|---|---|
| On hand | 500 |
| Allocated to picked orders | (180) |
| Reserved for a work order | (60) |
| Quarantined, awaiting inspection | (40) |
| Purchase order confirmed for Thursday | 200 |
| Available to promise | 420 |
Quoting from the on-hand figure of 500 commits you to 80 units that are already someone else's. Quoting from 220 — on-hand less commitments, ignoring the inbound — turns away business you could have taken.
Only a perpetual system can compute this, because every term except on-hand is a running position rather than a count. It is the clearest practical argument for perpetual: not better bookkeeping, but the ability to answer a customer honestly while they are still on the phone.
The horizon matters too. Counting inbound stock arriving in six weeks as available will produce a promise you cannot keep. Most systems let you set how far forward confirmed receipts count, and it should be set to the delivery promise you actually make, not to the longest lead time you have.
Which to use
Periodic is defensible when stock is low-value and homogeneous, when margins are wide enough that shrinkage does not change decisions, and when the operational cost of recording movements genuinely exceeds the benefit. A small retailer with a few thousand in stock is not well served by a transaction for every sale of a 2.50 item.
Perpetual is necessary the moment you need to answer what is available to promise, the moment stock value is material to your accounts, and the moment you plan replenishment from the system rather than by eye. Reorder points, MRP and allocation all assume a reliable on-hand figure, and none of them can run on a number that is only correct at year end.
In practice most businesses that outgrow spreadsheets have already outgrown periodic. The question is usually not which to adopt but whether the discipline to run perpetual properly is in place — because perpetual run badly is worse than periodic run well. An on-hand figure everyone knows is wrong gets ignored, and then you have the cost of the system with none of the benefit.

