Chuyển tới nội dung chính

FIFO and Moving Average

FIFO & Moving Average Valuation Methods

1. Overview

ABNERP values stock perpetually: every stock movement (receipt, issue, transfer, manufacture) updates the item's quantity and its monetary value in real time through the Stock Ledger. The Valuation Method decides how the value of each outgoing unit is calculated and therefore what your remaining inventory is worth and what your Cost of Goods Sold (COGS) becomes.

ABNERP supports three valuation methods:

  • FIFO (First In, First Out)
  • Moving Average
  • Standard Cost (covered in a separate guide)

This guide explains FIFO and Moving Average \u2014 how each works, the accounting they produce, their behavior with backdated entries and reposting, and the pros and cons of each so you can choose the right one per item.

\u003e Where to set it: Valuation Method can be set per Item (Item master \u2192 Valuation Method), or defaulted at the Company level, or globally in Stock Settings. The most specific setting wins (Item \u2192 Company \u2192 Stock Settings).


2. FIFO (First In, First Out)

2.1 How it works

FIFO assumes the oldest stock is consumed first. ABNERP maintains a FIFO queue of [quantity, rate] layers for each item-warehouse. Every receipt adds a layer at its actual incoming rate; every issue consumes layers from the front (oldest) of the queue at their original rates.

The valuation rate reported at any moment is the weighted average of the layers currently remaining in the queue, but each outgoing unit is costed at the specific rate of the layer it is drawn from.

2.2 Worked example

StepTransactionQueue afterStock value
1Receive 10 @ 100[10 @ 100]1,000
2Receive 10 @ 120[10 @ 100], [10 @ 120]2,200
3Issue 15[5 @ 120]600

At step 3, the 15 issued units are costed as 10 @ 100 + 5 @ 120 = 1,600 (oldest first). The remaining 5 units stay valued at their original 120.

2.3 Accounting impact

In a perpetual-inventory company, the issue posts COGS at the actual layered cost of the consumed units:

  • COGS (step 3) = 1,600
  • Inventory is credited 1,600; remaining inventory asset = 600.

Because outgoing cost reflects the actual historical purchase price of the specific units leaving stock, FIFO closely tracks real acquisition cost and is widely accepted for statutory/tax reporting.

2.4 Pros

  • Closely matches actual cost flow \u2014 the cost of goods sold reflects the genuine price paid for the specific units consumed.
  • Realistic ending inventory value \u2014 remaining stock is valued at the most recent purchase prices, so the balance sheet reflects current replacement-ish cost.
  • Widely accepted for accounting standards and tax authorities; intuitive and auditable (you can trace which layers were consumed).
  • Good for items with shelf life / lot rotation (food, pharma, perishables) where you physically issue oldest-first anyway.

2.5 Cons

  • Sensitive to backdated entries \u2014 inserting or editing a past transaction changes which layers later issues consume, so every subsequent ledger entry must be recomputed (reposted). On long, dense ledgers this reposting is slow and resource-intensive.
  • Volatile COGS in rising-price environments \u2014 older, cheaper layers are expensed first, which can understate COGS and overstate profit during inflation.
  • More computation / storage \u2014 the layer queue must be maintained and serialized for every item-warehouse.
  • Heavier reposting load when corrections, cancellations, or landed-cost vouchers touch historical entries.

3. Moving Average

3.1 How it works

Moving Average maintains a single blended average rate per item-warehouse. On every receipt, the average is recomputed:

new average = (existing qty \u00d7 existing avg rate + incoming qty \u00d7 incoming rate)
\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
existing qty + incoming qty

Issues are costed at the current average rate and do not change the average; only receipts (and revaluations) move it.

3.2 Worked example

StepTransactionQty on handAvg rateStock value
1Receive 10 @ 100101001,000
2Receive 10 @ 120201102,200
3Issue 155110550

At step 2 the average becomes (10\u00d7100 + 10\u00d7120) / 20 = 110. The 15 issued units at step 3 are each costed at 110 \u2192 COGS = 1,650; remaining 5 units valued at 110 = 550.

3.3 Accounting impact

  • COGS (step 3) = 1,650 (15 \u00d7 average 110).
  • Inventory credited 1,650; remaining inventory asset = 550.

Compared with FIFO on the same data, Moving Average smooths the cost: COGS is 1,650 vs FIFO's 1,600, and the difference flows into the value of remaining stock.

3.4 Pros

  • Smooths out price fluctuations \u2014 a single blended rate dampens the impact of volatile purchase prices, giving steadier COGS and margins.
  • Simpler and lighter \u2014 only one rate per item-warehouse to maintain; no layer queue to store or walk.
  • Easier to understand and reconcile \u2014 \