Moving average vs FIFO inventory costing
Same purchases, same sales, two different costs of goods sold. Neither is wrong — they answer "what did this unit cost?" in a different order. The difference only becomes a problem when two of your systems use different methods and nobody said so before the first month-end.
Reading this for your own shop? Start a free 14-day trial — no credit card, and your data is yours to export at any time.
1.The short answer
FIFO (first in, first out) keeps every purchase as its own layer, and a sale is charged at the cost of the oldest layer still on hand. Moving average blends everything on hand into one cost per unit, recalculated each time stock arrives at a different price, and charges every sale at that blend.
When purchase prices never change, the two are identical. When prices move — which is always — they report different cost of goods sold, different margin, and a different value for what is still on the shelf.
2.A worked example
You buy the same item twice at different prices, then sell 150 units.
| Step | FIFO | Moving average |
|---|---|---|
| Buy 100 @ $10 | Layer A: 100 @ $10 | 100 on hand @ $10.00 |
| Buy 100 @ $12 | Layer B: 100 @ $12 | 200 on hand @ $11.00 — ($1,000 + $1,200) ÷ 200 |
| Sell 150 | 100 from A @ $10 + 50 from B @ $12 = $1,600 | 150 @ $11.00 = $1,650 |
| Left on the shelf | 50 @ $12 = $600 | 50 @ $11 = $550 |
| Sell the last 50 | $600 | $550 |
| Total over both sales | $2,200 | $2,200 |
Two things to take from that table. On the first sale the methods disagree by $50 — about a three-point difference in margin on a product selling at $15. And over the whole life of those 200 units, they agree to the cent.
3.Why they never tie out — and why that is not an error
The gap is timing: which period the cost lands in. It closes when the last unit of a batch is sold. But a working business is never at that point — there is always stock on hand, and the next purchase is always at a slightly different price. So in every real period, the two methods report a different number, and they keep doing so.
That is the whole explanation for "our inventory system and our books don't agree on cost of goods sold" when the two use different methods. It is not drift, it does not settle, and there is no reconciliation that makes it go away — you can only choose which system's method is the one your accountant reports from. The things that should agree between the two systems are quantities, and the totals over time; the per-period cost will not.
4.When each one fits
FIFO
- Goods that genuinely leave in the order they arrive — perishables, anything dated, stock you pick by lot.
- When you want each sale costed at a real purchase price you can point to.
- When your accounting system already uses it and you would rather not explain two methods.
Moving average
- Interchangeable goods bought often, in small quantities — fasteners, consumables, parts that arrive weekly at slightly different prices. A cost layer per receipt adds bookkeeping without adding information.
- When you would rather a price spike be smoothed into the cost than land on one sale.
- When goods are received without a clean one-to-one link to the purchase they came from — moving average never needs to know which layer a unit belonged to.
The choice that matters more than which method: making it deliberately, and telling your accountant. Most businesses change costing method by accident — by switching software.
5.When your inventory system and your books use different methods
This is where the question stops being theory. Common combinations, from each vendor's own documentation:
- QuickBooks Online offers FIFO or Moving Average Cost, chosen once, before the first inventory item. A company that creates an item first defaults to FIFO, and Intuit says the method cannot be changed later.
- QuickBooks Desktop uses average cost. FIFO needs QuickBooks Desktop Enterprise with Advanced Inventory, from a start date you choose.
- Cin7 Core computes cost of goods sold with actual-cost methods — FIFO, FEFO or Special, and shows an average cost only to estimate margin.
If your inventory system and your accounting system use different methods, cost of goods sold will differ between them every period, for the reason in §3. Three practical consequences when you move from one method to another:
- Bring a considered opening cost. Under moving average, the cost you load on day one seeds the average every later sale is charged at. Whatever happens to be in an old export is not automatically the right number.
- Expect margins on existing products to move. Someone will notice in week two. It is the method, not a mistake.
- Tell your accountant before go-live, not after a variance. A change of inventory method is theirs to know about — and for US tax purposes a change of accounting method generally needs a filing, which is a conversation to have before it happens.
6.What AegisSwift uses, and why
AegisSwift costs inventory on a moving average. It is maintained on every costed receipt — including freight and duty allocated to that receipt — and every sale, issue and write-down is charged at the average at that moment. A count that finds more stock values the difference at the current average rather than at a figure somebody typed.
We chose it because our customers are mostly distributors and light manufacturers buying interchangeable stock often, and because it never needs to know which purchase a unit on a truck came from. It also means a QuickBooks Desktop company file on its default average cost is on the same method, as is a QuickBooks Online company that chose Moving Average; one on FIFO is not, and the QuickBooks guide covers what that means for your books in detail.
7.Questions people ask
Does FIFO mean I have to pick the oldest stock first?
No. FIFO is an assumption about cost, not an instruction about which box to pick. Many businesses pick whatever is nearest and still cost FIFO. The one place the two line up on purpose is dated stock, where picking the oldest first is good practice anyway.
Is one method "more accurate"?
Both are generally accepted methods for valuing inventory. FIFO charges each sale at a real purchase price; moving average charges a real blend of the prices paid. Neither is an estimate in the sense of a guess.
Can I switch methods later?
Some systems allow it from a date; QuickBooks Online does not. Either way it changes reported cost of goods sold from that date, so it is an accountant's decision first and a software setting second.
What about LIFO?
Last in, first out is permitted for US tax in some cases but not under international standards, and it is uncommon in small businesses. None of the systems named on this page offers it.
See what your stock costs, one movement at a time
Moving-average cost on every receipt, sale and count, landed cost included, and the journal entries posted to QuickBooks Desktop or Online — from $69/month. 14-day free trial, no credit card, set up in about 30 minutes.
Start a free trial