Key takeaways
- FIFO and moving average can value the same shelf differently. Both are correct.
- The gap does not stay in the warehouse — it lands in cost of sales, and therefore in your reported margin.
- FIFO needs lots. A system that cannot say which receipt a unit came from cannot do FIFO, whatever the setting says.
- Shipping stock that was never costed understates cost of sales. That should be a warning, not a shrug.
- One method for everything is a choice too — and rarely the right one.
Almost nobody chooses their inventory costing method. It arrives as a default in whatever system was installed, it is never revisited, and it quietly determines a number that shows up in every management report you produce.
That is worth ten minutes of attention, because the number it determines is your gross margin.
The same shelf, two answers
Take the simplest possible case. You buy 100 units at 10 each. Prices rise; you buy another 100 at 14. You now have 200 units on the shelf that cost you 2,400 in total. Then you sell 100 of them.
What was the cost of that sale?
Under FIFO — first in, first out — you consumed the oldest units, the ones that cost 10. Cost of sales is 1,000. The 100 units left on the shelf are the newer ones, valued at 1,400.
Under moving average, there are no “oldest” units. The shelf has a single blended cost: 2,400 across 200 units, so 12 each. Cost of sales is 1,200, and the remaining stock is also valued at 1,200.
Same purchases, same sale, same physical shelf. Two hundred difference in reported profit, and both answers are defensible. That is not a rounding artefact — it is the method doing exactly what it is supposed to do.
The costing method does not change what you paid. It changes when you recognise it — and that is enough to change what your margin looks like this month.
So which one should you use?
Neither is more honest than the other. They answer slightly different questions, and the useful way to choose is to notice which distortion you would rather live with.
FIFO keeps your balance sheet close to reality and pushes older costs through the income statement. When prices are rising, that flatters margin — you are selling at today’s prices and recognising last quarter’s costs. When prices fall, it does the opposite. The stock figure is the trustworthy one; the margin swings.
Moving average smooths. Every receipt nudges one blended cost, so margins do not lurch when a supplier raises prices mid-month. What you lose is the ability to say what any particular unit cost, because by design no unit has its own cost any more.
A rough rule that survives contact with reality: if your purchase prices are volatile and your customers ask you to justify pricing, FIFO’s traceability earns its keep. If you buy the same things repeatedly at drifting prices and mainly want stable reporting, moving average is less work and less noise.
Watch out for
“We use FIFO” is often aspirational. FIFO is a statement about which specific receipt a unit came from. If the system only holds a quantity and an average cost per product, there is no oldest layer to consume — so it cannot actually do FIFO, no matter what the configuration screen offers. Ask to see the receipt-level records, not the setting.
Costing lives on lots, not on products
This is the part that decides whether any of the above is real in your system.
FIFO needs to know which batch you consumed, which means every receipt has to exist as its own valued record — a lot, with its own quantity, its own cost, and its own place in the queue. Issue stock and the oldest open lot is relieved first, at its cost, then the next, until the quantity is satisfied. A single issue can straddle three lots at three different costs, and the cost of that issue is the sum of the pieces.
Moving average can be derived from the same records: total value of the open lots divided by their total quantity. Computed on read rather than stored, so it cannot drift out of step with the lots it came from.
Which means lots are not a warehouse nicety — they are the substrate. Get them right and both methods are available to you, along with expiry tracking, batch recalls and the ability to answer “which delivery did this come from?” Skip them and you have an average, permanently.
What should happen when you ship something you never costed
Here is a situation every real inventory system meets in its first month. Stock physically leaves, but the system has no cost for it — the goods arrived before the supplier invoice, or somebody adjusted a quantity in without a value, or the opening balances were entered as counts.
The tempting behaviour is to value that issue at zero and move on. Nothing errors. The consequence is that your cost of sales is understated, which means your margin looks better than it is — the most dangerous direction for a number to be wrong in, because nobody investigates good news.
The right behaviour is to still let the shipment happen, still value the shortfall at zero because there is genuinely no cost to apply, and say so loudly: this issue exceeded costed stock on hand by this much, cost of sales is understated, go and look at your uncosted receipts. A silent zero is a lie with a clean audit trail.
In practice
Correcting a cost should require a reason. Revaluing a lot is a legitimate operation — invoices arrive late, freight gets allocated afterwards, somebody keyed 1.40 instead of 14.00. But a revaluation with no stated reason is an unexplained change to your reported profit. Requiring the reason costs the user four seconds and saves whoever asks about it next quarter an afternoon.
One method for everything is also a choice
The last thing worth knowing is that this does not have to be a single company-wide decision. Raw materials bought on a volatile commodity price and finished goods assembled in-house are different problems. Serialised equipment where the customer expects to know the exact provenance is a third.
A sane arrangement is a company default that most products inherit, with specific products overriding it where the override earns something. And costing should switch on from a date — because the day you start valuing inventory properly, you almost never have trustworthy cost history behind you, and pretending otherwise contaminates every comparison you make afterwards.
Where Capitán fits
Capitán’s inventory is lot-based, so both methods are genuinely available. FIFO walks a product’s open lots oldest-first and relieves each at its own cost; moving average is derived on read from the same open lots, so the average can never disagree with the records underneath it. The method in force is per product, falling back to a company default, and costing activates from a configured cutover date rather than retroactively inventing history.
Issues that exceed costed stock on hand are valued at zero and logged as a warning naming the shortfall, because understated cost of sales should be something you find out about rather than something you discover. Revaluing a lot requires a reason, and a negative unit cost is refused outright.
There is also a third method — standard costing — which Capitán deliberately does not offer, and will tell you so rather than quietly costing your stock by a different method than the one you configured. Standard costing needs a substrate of machine and labour cost rates to derive a standard from; offering it without those would produce numbers with no basis. If you need it, that is a real answer, and a more useful one than a setting that appears to work.
Because it is one system, the costs come from where they actually originate: a supplier invoice capitalises into the lots it paid for, and a shipment recognises cost of sales against the goods that actually left, in the same ledger as the revenue. Ask us what your stock is worth under each method — the difference is usually more interesting than people expect.
The short version
FIFO and moving average are both correct and they do not agree. Find out which one your system is using, check whether it holds the lots that would make FIFO real, and ask what it does when stock ships with no cost attached. That last answer tells you the most.