FIFO Inventory Method Explained for Ecommerce

Key Takeaways
- •FIFO is both a physical practice and an accounting method, and confusing the two is where most explanations go wrong
- •The same goods and the same sales produce different reported profit under FIFO and weighted average cost
- •When costs are rising, FIFO reports higher profit and therefore higher tax, which is a genuine tradeoff rather than a better answer
- •LIFO is permitted in the United States and prohibited under IFRS, so it is unavailable in most of the world
- •Aged inventory reporting is where FIFO discipline pays commercially, because it tells you when to discount before value is gone
FIFO stands for first in, first out. It means the oldest inventory you bought is treated as the first sold, and it is the default assumption for most ecommerce businesses in most countries.
It matters for two separate reasons that get confused: it is a physical practice, and it is an accounting method. They are related and they are not the same thing, and mixing them up is where the confusion in most explanations comes from.
The physical practice
Sell your oldest stock first. Rotate it forward in the warehouse so newer arrivals sit behind.
Why it matters:
- Perishables expire. Obvious, and non-negotiable in food, cosmetics and supplements.
- Anything with a shelf life or a date code, including electronics with batteries and anything with warranty periods that run from manufacture.
- Fashion and seasonal goods lose value as they age even without physically deteriorating.
- Packaging changes. Older stock in previous packaging becomes harder to sell alongside newer.
For any category where stock loses value with time, FIFO as a physical practice is straightforwardly correct and there is nothing to decide.
The accounting method
Here it gets more interesting, because it changes the numbers on your accounts even though the physical goods are identical.
When you buy the same product at different prices over time, you have to decide which cost applies to the units you sold. FIFO says: use the cost of the oldest units first.
A worked example
You buy 100 units at 10 each in January, then 100 more at 12 each in March. In April you sell 150.
Under FIFO:
- Cost of goods sold: 100 at 10 plus 50 at 12 = 1,600
- Remaining inventory value: 50 at 12 = 600
Under weighted average cost (the main alternative in most jurisdictions):
- Average cost is 11 per unit
- Cost of goods sold: 150 at 11 = 1,650
- Remaining inventory value: 50 at 11 = 550
Same physical goods, same sales, different reported profit and different balance sheet value.
What that means in practice
When costs are rising, FIFO reports a lower cost of goods sold, therefore higher profit, therefore higher tax, and a higher inventory value on the balance sheet.
When costs are falling, the reverse.
Neither is better in the abstract. Higher reported profit looks better to a lender or a buyer and costs more in tax. This is a genuine tradeoff and it is worth discussing with an accountant rather than defaulting.
The alternatives
Weighted average cost. Every unit carries the average cost of all units. Simpler to run, smooths out price fluctuations, and is very widely used.
LIFO, last in first out. The newest stock is treated as sold first. Permitted in the United States and prohibited under IFRS, which means it is not available in most of the world. If you operate internationally, this matters.
Specific identification. Each individual unit is tracked with its actual cost. Only practical for high-value distinct items such as vehicles, jewellery or serialised equipment.
Which to choose
For most ecommerce businesses the answer is FIFO or weighted average, and:
- FIFO if your stock has a shelf life, if you want inventory value on the balance sheet to reflect recent costs, or if you are in a jurisdiction where it is expected.
- Weighted average if your costs fluctuate frequently, you buy the same item at many different prices, and you want simpler bookkeeping.
Consistency matters more than the choice. Changing methods between periods makes your accounts incomparable and generally requires disclosure and justification. Pick one and stay with it.
Rules vary by country, and this is a decision to make with an accountant in your own jurisdiction rather than from a general article.
Running FIFO physically
- Date or batch code everything on receipt, even where the supplier did not.
- Store so the oldest is accessible first, which usually means loading new stock from behind.
- Pick from the front, and make this the trained default rather than something people remember sometimes.
- Audit periodically. Physical FIFO drifts, especially when things are busy.
- Watch aged inventory. Stock that has been sitting is stock that is losing value, and reporting on inventory age tells you when to discount before the value is gone entirely.
That last point is where FIFO discipline pays commercially rather than just accountingly. A report showing what has been on the shelf longest is one of the most useful things a small ecommerce business can run monthly.
If you use a fulfilment service
Third-party fulfilment and marketplace fulfilment services generally operate FIFO by default for physical rotation, though the specifics vary and mixed inventory can complicate it.
Note that their physical practice does not determine your accounting method. You still choose that, and you still need your own cost records, because the fulfilment provider tracks units rather than what you paid for them.
The summary
Physically, sell the oldest first. That is correct for anything that loses value with time and harmless otherwise.
For accounting, FIFO and weighted average both work for most ecommerce businesses, LIFO is unavailable in most of the world, and the choice affects reported profit and tax rather than the underlying business. Pick with an accountant, then be consistent.
The commercially useful part is the aged inventory reporting that FIFO discipline gives you, because knowing what has been sitting is what lets you act before the stock is worth nothing.
Written by Jamal Brooks
Jamal is a product engineer at Affiliateo who writes about payments, integrations, and technical best practices.


