Inventory adjustments and shrink
In short. Every inventory adjustment should carry a reason code, an approval sized to its value and a known ledger account, so that true shrink (unexplained loss) stays separate from damage, obsolescence and transfers. At least once a year, test slow and obsolete stock against net realizable value and hold a reserve for it. Under U.S. GAAP a year-end write-down sets a new cost that is not written back up.
Written for Finance and operations, leaders, administrators.
The ERP holds a number for every item in every location. An inventory adjustment is any change to that number that is not a purchase receipt, a sale or a customer return. Adjustments are necessary, since counts find errors and goods get damaged, but they are also the easiest place for loss, theft and mistakes to disappear.
At a glance
Section titled: At a glance| Type | What happened | Changes quantity? | Changes value? | Usually posts to |
|---|---|---|---|---|
| Count adjustment | A cycle or physical count disagreed with the system | Yes | Yes | Shrink or inventory variance expense |
| Damage | Goods broken, spoiled or expired in our care | Yes | Yes | Damage or scrap expense |
| Obsolescence write-down | Goods still on hand but worth less than cost | No | Yes | Obsolescence expense, often via a reserve |
| Transfer | Goods moved between locations or branches | Yes, in both places | No, in total | Inventory at each location, or in transit |
| Cost correction | Wrong cost on a receipt or item | No | Yes | Cost of goods sold or inventory variance |
Adjustments versus transfers
Section titled: Adjustments versus transfersA transfer moves goods without creating or destroying them. Company-wide, a transfer from branch A to branch B changes nothing in quantity or value. Posting it as a negative adjustment at A and a positive one at B looks the same on the shelf, but it hides the movement from reporting, loses the in-transit period and makes each branch look like it had shrink or gains it did not have.
Use the ERP's transfer transaction for every move between locations, including the in-transit state when goods are on a truck. Keep adjustments for changes that alter what the company owns.
Reason codes
Section titled: Reason codesA reason code on every adjustment is what lets you tell shrink from everything else. Keep the list short and tie each code to one ledger account.
| Reason code | Use for | Ledger account (example) |
|---|---|---|
| Cycle count | Differences found by a scheduled count | Inventory shrink |
| Physical count | Differences found by a full count | Inventory shrink |
| Damaged in warehouse | Our handling damage | Damage and scrap |
| Expired | Shelf-life items past date | Damage and scrap |
| Customer return scrap | Returned goods not fit to resell | Returns and allowances cost |
| Found stock | Goods found with no record | Inventory shrink (as a credit) |
| Cost correction | Wrong cost, not wrong quantity | Inventory variance |
| Samples and internal use | Goods taken for demos or our own use | Marketing or supplies expense |
"Found stock" belongs in the same account as count losses. A found carton is often the other half of a mis-pick or a mis-received quantity, and netting them shows the real loss.
Approval thresholds
Section titled: Approval thresholdsApprovals should scale with value, and the person who counts or adjusts should not be the person who approves. With invented thresholds, per adjustment at cost, the approvals might look like this.
| Value of adjustment | Approver |
|---|---|
| Under $500 | Warehouse supervisor |
| $500 to $5,000 | Operations manager |
| Over $5,000 | Controller, with a recount first |
Set your own numbers from your adjustment volume. Set too low, approvers rubber-stamp a long queue. Set too high, material losses post with no second look. Also watch for many small adjustments on the same item or by the same user, which is how a threshold gets walked around.
What an adjustment does to the ledger
Section titled: What an adjustment does to the ledgerA perpetual inventory system keeps the inventory account in the general ledger equal to the value of stock in the ERP. Every adjustment therefore posts two sides: inventory, and an expense or variance account chosen by the reason code.
Count loss of 10 units at $12.00 cost Debit Inventory shrink expense 120.00 Credit Inventory 120.00Most distributors report these accounts inside cost of goods sold, so adjustments lower gross margin. This is correct, but margin reports that show only sales and invoice cost will then look better than the income statement. Put adjustment expense by reason next to gross margin in the monthly review.
Measuring shrink
Section titled: Measuring shrinkShrink is inventory loss we cannot explain: theft, unrecorded damage, mis-picks that were never caught, receiving errors in the vendor's favor and unit of measure mistakes. Damage and obsolescence with a reason code are known losses and should be reported separately.
Net count adjustments at cost for the period ÷ net sales for the period
Net count adjustments at cost for the period ÷ average inventory at cost
Where net count adjustments are losses minus gains from cycle counts, physical counts and found stock.
Shrink rate example
Section titled: Shrink rate exampleWith invented numbers, suppose that for one year a distributor has net sales of $20,000,000, average inventory at cost of $3,000,000 and net count adjustments of $45,000 in losses.
- Shrink as a share of sales: $45,000 ÷ $20,000,000 = 0.225%
- Shrink as a share of inventory: $45,000 ÷ $3,000,000 = 1.5%
Shrink rate
Use the same period for all three inputs. Count adjustments only: transfers, returns to vendor and write-downs for obsolescence are not shrink.
How to read it
Section titled: How to read itThe share of sales matches how retailers report shrink. The National Retail Federation's National Retail Security Survey 2023 put average retail shrink at 1.6% of sales in fiscal 2022, up from 1.4% in fiscal 2021 (retrieved 2026-09-28). That is a retail figure, with shoplifting and store staff in the mix, and we found no comparable public figure for wholesale distribution.
Use the retail figure only as a loose outer bound. The share of inventory is usually more useful for a distributor, because it compares the loss with the stock you are responsible for.
How it goes wrong
Section titled: How it goes wrong- Posting damage and obsolescence under count codes inflates shrink and hides the real damage cost.
- Adjusting counts without investigating turns every mis-pick into shrink instead of a fixed process.
- Counting only when the system says zero finds losses but not overages, and understates both.
See ABC analysis and cycle counting for how to count so that errors surface early.
Lower of cost and net realizable value
Section titled: Lower of cost and net realizable valueStock that has become worth less than its cost must be written down. Under U.S. GAAP, FASB ASC Topic 330, Inventory, as amended by ASU 2015-11, requires inventory measured by first-in, first-out (FIFO) or average cost to be carried at the lower of cost and net realizable value. Inventory measured by last-in, first-out (LIFO) or the retail method still follows the older lower of cost or market test. The update took effect for fiscal years beginning after December 15, 2016.
Net realizable value is, in the standard's terms paraphrased, the estimated selling price in the ordinary course of business less the costs that can reasonably be predicted to complete, dispose of and transport the goods.
Estimated selling price − reasonably predictable costs to complete, sell and transport
Quantity × (unit cost − unit NRV), when NRV is below cost
Write-down example
Section titled: Write-down exampleWith invented numbers, suppose we hold 200 units that cost $40.00 each ($8,000 in total). A newer model has pushed the realistic selling price down to $35.00, and freight and sales commission on each sale run about $3.00.
- NRV per unit: $35.00 minus $3.00 = $32.00
- Write-down: 200 × ($40.00 minus $32.00) = $1,600
- New carrying value: $8,000 minus $1,600 = $6,400
Write-downs do not reverse at year end
Section titled: Write-downs do not reverse at year endThe SEC staff's view, in Staff Accounting Bulletin Topic 5.BB, is that a write-down taken at the close of a fiscal year creates a new cost basis, so the inventory is not written back up if prices recover. International standards (IAS 2) handle reversals differently, so check which framework you report under. Treat this as practitioner guidance and confirm your policy with your accountant or auditor.
Obsolete and slow-moving reserves
Section titled: Obsolete and slow-moving reservesTesting thousands of items one by one against NRV is not practical. Most distributors instead hold a reserve (an allowance against inventory) sized from how long stock has gone without selling, and review large items individually.
An invented example policy, based on months since the last sale, looks like this.
| Months since last sale | Inventory at cost | Reserve rate | Reserve |
|---|---|---|---|
| 0 to 12 | $2,400,000 | 0% | $0 |
| 12 to 24 | $300,000 | 25% | $75,000 |
| 24 to 36 | $150,000 | 50% | $75,000 |
| Over 36 | $100,000 | 90% | $90,000 |
| Total | $2,950,000 | $240,000 |
The rates are a policy choice, not a rule. Set them from what you recover when you sell, return or scrap old stock, and adjust them when your history says otherwise. Exclude stock you can return to the vendor for credit, and items with known future demand such as a signed project.
Increase the reserve to the calculated $240,000 (from $200,000) Debit Inventory obsolescence expense 40,000.00 Credit Inventory reserve 40,000.00When reserved stock is finally scrapped, the loss comes out of the reserve rather than hitting expense a second time. A reserve that only grows means old stock is being reserved but never cleared. The goal is to sell, return or scrap it.
Controls
Section titled: ControlsThe table pairs each control with the risk it covers.
| Control | Why it matters |
|---|---|
| Reason code required on every adjustment | Separates shrink from known losses |
| Separate the counter, the adjuster and the approver | One person cannot hide a loss |
| Recount before approving large variances | Many large variances are counting errors |
| Monthly adjustment report by user, item and reason | Patterns show up that single approvals miss |
| Transfers only through the transfer transaction | Keeps branch shrink honest |
| Reconcile the inventory ledger to the ERP valuation monthly | Finds adjustments that posted to the wrong account |
| Restrict who can change item cost | Cost changes move value without moving a unit |
Tightening adjustment control
Section titled: Tightening adjustment control- List every adjustment reason code in your ERP and map each one to a single ledger account. Merge or retire the ones nobody uses.
- Set approval thresholds by value and check that the system enforces them.
- Report shrink monthly, as a share of sales and of inventory, separately from damage and obsolescence.
- Age inventory by last sale date, set reserve rates from your recovery history and review the largest slow items one by one.
- Test obsolete and slow items against NRV before year end, and agree the policy with your auditor.
For how these steps fit into the monthly close, see the month-end close checklist. For how slow stock drags on return, see inventory turns and GMROI.
Sources
- Accounting Standards Update 2015-11, Inventory (Topic 330): Simplifying the Measurement of Inventory (FASB, July 2015)
- Codification of Staff Accounting Bulletins, Topic 5: Miscellaneous Accounting, section BB, Inventory Valuation Allowances (U.S. Securities and Exchange Commission)
- National Retail Security Survey 2023 (National Retail Federation, September 2023)