Accounting

Why your stock report and your inventory account disagree

Two numbers that must match and usually do not. The causes are few and specific, and each one points at a different missing control.

The Rocket ERP team

Rocket ERP3 min read

The stock valuation report says one figure. The inventory account in the trial balance says another. They describe the same goods in the same warehouse on the same date, so one of them is wrong, and until you know which, neither can be used.

In practice the gap has a small number of causes. Each one is worth recognising by its signature, because the fix differs.

A movement that never reached the ledger

The commonest cause. Goods moved - a delivery, a return, a transfer, a write-off - and the quantity changed without a journal entry. The report reads quantities, the ledger reads entries, so they diverge by exactly the value of the unposted movement.

The signature is a gap that appears on a specific date and never closes. The control is that no document which changes quantity can be saved without its posting, in the same transaction, so a half-written movement cannot exist.

A cost that changed after the entry was made

A purchase invoice is edited, or a landed cost arrives late, and the average cost of the item changes. The valuation report recalculates immediately, because it reads the current cost. The journal entry does not, because it was posted at the old one.

The signature is a gap that appears when nothing moved. The control is that a change in cost is itself a posting - a revaluation entry - not a silent recalculation. Any system that lets you change a cost without producing an entry will produce this gap indefinitely.

Posting to the wrong account, or to no branch

Multi-branch businesses meet this one early. The movement posted, but to a different inventory account than the one the report groups by, or with no branch on the line at all. The total across the company may even be right while every branch is wrong.

The signature is a gap that nets to zero company-wide and does not per branch. The control is to validate the posting accounts before the entry is written, and to refuse an inventory line with no branch rather than accept it and leave it invisible.

Negative stock that was allowed

A sale was posted for goods that had not been received yet. The quantity goes negative, the cost of a negative quantity is a guess, and from that point the valuation is a fiction. Worse, when the receipt finally arrives at a different cost, the correction lands in a later period.

The signature is an item with a negative quantity at any point in the period. The control is a decision taken deliberately: either refuse the sale, or allow it with a defined cost assumption. What must not happen is allowing it with no assumption.

Counting differences that were never booked

A physical count found a difference, somebody adjusted the quantity in the system, and no adjustment entry was made. This is the same failure as the first cause, but it is worth naming separately because it is usually done by someone who believes they are correcting an error rather than creating one.

How to get them to agree and keep them agreeing

  1. Reconcile for one item first, not the whole warehouse. Take an item with a gap, list its movements for the period, and find the movement with no entry. One item teaches you which of the causes above you have.

  2. Fix the cause before the balance. An adjusting entry that closes the gap without removing the cause buys one month.

  3. Then reconcile monthly, as part of the close, while the period can still be investigated. A gap found eleven months later is no longer a reconciliation - it is a write-off.

The structural answer is that quantity and value must come from the same event. When a movement posts its own entry, in the same database transaction, the two reports cannot drift apart - not because anyone reconciles them, but because there is only one record to read.