Inventory valuation in Odoo and choosing a costing method
Average cost, FIFO or standard price: how each choice affects your margins and financial statements, and when it gets hard to change your mind.

Two companies can sell the same product at the same price and report different gross margins, simply because they value their stock differently. In Odoo, that difference comes down to two settings on the product category: the costing method and the inventory valuation mode. They take a minute to set and can take weeks to unwind.
This article explains what each option does in Odoo, how it shows up in your margins and financial statements, and how we help clients decide before go-live rather than after the first month-end close.
Two settings, two different questions
People often mix these up, so it helps to separate them early.
- Costing method answers: what is one unit of this product worth? Odoo offers Standard Price, Average Cost (AVCO) and First In First Out (FIFO).
- Inventory valuation answers: does Odoo post that value to your accounts automatically? The options are Manual and Automated.
Both are set on the product category, not on the individual product. Every product in a category follows the same rules, which is one more reason to design your categories around how finance reports, not around the layout of the warehouse. We cover that in our guide to preparing master data for Odoo.
The three costing methods
Standard price
Each product has a fixed cost that you set and review periodically. Every unit received, delivered or consumed is valued at that cost, whatever you actually paid for it. The difference between the purchase price and the standard cost does not disappear: with automated valuation, Odoo records it as a price difference, which finance then has to analyse.
Standard price suits manufacturers that already run a cost-accounting discipline and want stable product costs for planning and pricing. It suits trading companies far less, because their real cost moves with every purchase and exchange-rate change.
Average cost (AVCO)
Odoo recalculates the product cost on every receipt as a weighted average of the stock on hand and the incoming quantity. Deliveries go out at the current average. The result is a smooth cost that follows the market without the sharp jumps of FIFO.
AVCO is the most common choice for distributors and retailers, and it is the one we start from in most discussions. One thing to watch: if stock goes negative, because a delivery is validated before the receipt that should precede it, the average can be distorted until the stock is corrected. Validating receipts on time matters more under AVCO than people expect.
First in, first out (FIFO)
Odoo keeps each receipt as a separate valuation layer with its own unit cost. Outgoing stock consumes the oldest layers first, so the cost of goods sold reflects what you paid for those specific earlier batches, and the stock left on hand is valued at the most recent prices.
FIFO gives the most faithful picture of the cost of what you actually sold, which is useful when prices change quickly or when you work with batches and expiry dates. The cost is more detail: margin per sale can swing from one order to the next, and finance needs to be comfortable reading valuation layers when reconciling.
| Method | Unit cost comes from | Effect on margins | Often suits |
|---|---|---|---|
| Standard price | A fixed cost you set on the product | Stable; purchase variances are reported separately | Manufacturers with an established costing process |
| Average cost (AVCO) | Weighted average, recalculated on each receipt | Smooth; follows price changes gradually | Distribution, retail, most trading companies |
| FIFO | The cost of the oldest layers still in stock | Closest to actual cost; can vary per sale | Fast-moving prices, batch or expiry-tracked goods |
Accounting standards also have a say. Inventory standards based on IAS 2, including the Egyptian standard on inventories, accept FIFO and weighted average cost, and accept standard cost only when it approximates actual cost. Confirm the choice with your auditor before it goes into the system, not after.
Manual or automated valuation
With manual valuation, Odoo still tracks quantities and computes the value of your stock, but it does not post journal entries when goods move. Your accountant records the stock value in the books periodically, usually at month-end, from the valuation report.
With automated valuation, also called perpetual valuation, every validated receipt, delivery, scrap or manufacturing order creates a journal entry. The stock valuation account in your balance sheet moves with the warehouse in real time, and the cost of goods sold is booked as goods leave, using the accounts defined on the product category.
Automated valuation gives you live figures, but it makes the warehouse an accounting team. A receipt validated with the wrong quantity, or a delivery processed in the wrong order, is now an accounting error, not just a stock error. That is the trade-off to discuss openly.
Landed costs need FIFO or AVCO
For importers, the purchase price is rarely the full cost. Freight, customs duties, clearance and insurance all belong in the cost of the goods. Odoo handles this with landed costs, which spread these charges across the products on a receipt by quantity, weight, volume, value or equally.
Landed costs only work on products whose category uses automated valuation with FIFO or AVCO. Under standard price there is no place for the extra cost to land, because the unit cost is fixed by definition. If you import a meaningful share of your goods, this alone often settles the decision.
Why changing later is hard
Odoo does allow you to change the costing method or valuation mode on a category after go-live. What it does when you do is the important part: it takes the existing stock out at its current valuation and brings it back in under the new method, and with automated valuation it posts the corresponding journal entries. Past transactions are not recalculated, so your historical margins stay as they were, computed under the old method.
In practice that means:
- a revaluation entry in the period you switch, which finance has to explain;
- reports that compare periods before and after the change on different bases;
- a mid-year change that may need to be disclosed and justified to your auditor;
- a careful reconciliation of the stock valuation account against the valuation report right after the switch.
How to decide before go-live
We treat this as a finance decision supported by operations, made during the gap analysis, not a field someone fills in during configuration. These questions usually lead to the right answer:
- Do you import goods and need freight and customs in the product cost? If yes, rule out standard price.
- How often do purchase prices change, and by how much? Frequent, large changes favour FIFO or AVCO.
- Do you track lots or expiry dates and need cost per batch? FIFO is the more natural fit.
- Does finance want live stock figures in the balance sheet, and can the warehouse validate operations on time? That decides automated or manual.
- What does your auditor accept, and what did you use before? Continuity has value of its own.
Different categories can use different methods, but keep the number of combinations small. Each one is another reconciliation to explain at year-end.
If you are planning an implementation and want a second opinion on these settings, talk to our implementation team. And if your accountants and storekeepers need to understand how their daily work reaches the books, our Odoo training covers exactly that.
Key takeaways
- Costing method and valuation mode are separate decisions, both set on the product category.
- AVCO is a sensible default for trading companies; FIFO fits volatile prices and batches; standard price fits mature manufacturers.
- Landed costs require automated valuation with FIFO or AVCO.
- Automated valuation turns every warehouse operation into an accounting entry, so operational discipline comes first.
- Changing method later revalues stock in the current period without rewriting history, so decide before go-live.


