Skip to content

Inventory adjustments and shrink

  • Any ERP

ExplanationIntermediate7 min read

View Markdown

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.

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

A 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.

A 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.

Approvals 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 ledger

A 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.00

Most 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.

Shrink 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.

Shrink rate, share of sales

Net count adjustments at cost for the period ÷ net sales for the period

Shrink rate, share of inventory

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.

With 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%
Calculator

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.

The 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.

  • 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 value

Stock 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.

Net realizable value

Estimated selling price − reasonably predictable costs to complete, sell and transport

Write-down

Quantity × (unit cost − unit NRV), when NRV is below cost

With 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 end

The 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 reserves

Testing 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.00

When 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.

The 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
  1. List every adjustment reason code in your ERP and map each one to a single ledger account. Merge or retire the ones nobody uses.
  2. Set approval thresholds by value and check that the system enforces them.
  3. Report shrink monthly, as a share of sales and of inventory, separately from damage and obsolescence.
  4. Age inventory by last sale date, set reserve rates from your recovery history and review the largest slow items one by one.
  5. 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