Anyone working with inventory wants to know three things for sure: what is in stock, what is it worth, and what does that do to the figures. In Odoo 19, that is tighter than ever. In this blog, we explain how the three costing methods work, what the difference is between Periodic and Perpetual, what exactly has been renewed in Odoo 19, and how to check it in practice.
This article is written for entrepreneurs, controllers, and logistics managers. No storm of technical jargon, just concrete examples.
The three costing methods
Standard cost (VVP)
You agree on one fixed cost price per product (or product category). Receipts and deliveries are valued at that fixed price until you adjust it. Calm and predictable, especially with stable purchase prices or for manufacturing companies that work with fixed standard costs per product.
Average cost (AVCO)
Each receipt recalculates the average cost. Deliveries are valued at that current average. Ideal for bulk goods or commodities with fluctuating prices.
FIFO (first in, first out)
Outgoing goods “consume” the oldest layers first. A delivery can therefore include multiple layers, each with its own cost price. This gives you a neat view of price volatility in your margin.
Mini example
Receive 8×€ 10 and later 4×€ 16. Deliver 10.
- AVCO posts 10×€ 12 = € 120 (average after the second receipt).
-
FIFO posts 8×€ 10 + 2×€ 16 = € 112.
Both are correct, but they tell a different story for your cost of goods sold.
Please note: LIFO (last in, first out) exists in Odoo as a removal strategy (picking), not as a valuation method. As a valuation method, LIFO is not permitted under IFRS .
Inventory vs Accounting: two systems that meet periodically
Inventory works in real time on receipts and deliveries. You immediately see quantities and values reflected in the inventory reports.
Accounting works at the moment of invoicing. Because no one wants to book every single screw, you periodically close with a closing entry that smooths out the differences between logistics (received/delivered) and finance (invoiced). Smaller companies usually do this once a year, larger organizations monthly.
In short: your inventory report is always up to date, your general ledger follows through invoices and your closing process.
Periodic or perpetual: what do you choose in Odoo 19?
In Accounting → Configuration → Settings → Inventory Accounting you choose the inventory valuation method:
Periodic (at closing): purchase invoices are posted as expenses by nature; at closing, Odoo posts the inventory difference back to the balance sheet (inventory valuation). This is best practice in Europe.
Perpetual (at invoicing): purchase invoices directly affect the inventory account, costs are recognized at the time of sale (COGS). Common in Anglo‑Saxon countries such as the US and India.
You mainly configure the relevant accounts on the product category (Inventory Account, Price Differences, Revenue and Costs). You can optionally set an account for inventory differences. This captures losses due to breakage, theft, or count differences. You configure this account on the inventory location for inventory differences.
What is new in Odoo 19?
This is where the real progress is. Up to and including Odoo 18, Odoo made entries for every inventory movement. That generated a huge number of financial entries and affected performance.
In Odoo 19 this is handled more intelligently: the inventory account is only affected when processing the invoice, no longer with every movement. The closing entry then automatically ensures the correct accruals and deferrals, such as invoices still to be received, invoices still to be sent, and prepaid or pre-received amounts.
The result? Less noise in your accounting, faster processing, and a clearer overview in your general ledger. In addition, Odoo 19 now also supports the Anglo-Saxon method with periodic closing, and the standard closings have been further automated.
Where do you check this in Odoo?
Inventory report
- In Odoo, go to Inventory → Reporting → Inventory Valuation.
- For a product, click Unit Cost to see where the changes in the cost price come from.
- Click Total Value to view the remaining quantity of incoming stock.
- Do you work with Average cost (AVCO) or First in, First out (FIFO) and a value is incorrect? Then select the relevant lines, choose Actions → Adjust Valuation and briefly explain why you are making the correction.
Closing in accounting
- Go to Accounting → Control → Inventory Valuation. Here you can see the difference between the accounting inventory value and the value according to the inventory records.
- With the button Create Entry you create the journal entry for the closing period.
Which method suits your organization?
Use the standard cost if your production and purchasing are stable and you work with fixed cost prices per product. That makes valuation predictable and easy to manage.
Choose Average Cost (AVCO) for products with high volumes and regularly changing purchase prices. The average brings stability to your margins and is easy to explain to finance and management.
Choose First in, First out (FIFO) if you work with batch numbers or serial numbers and want to deliberately reflect price differences in the cost of your sales.
For many Dutch companies, periodic valuation with month-end closing is a good balance between accuracy and simplicity. If you operate internationally with tight cost-price processes, then continuous valuation is more attractive, especially now that Odoo 19 has significantly reduced the number of entries.
In practice: a quick check
Create a test product with the costing method Average Cost (AVCO).
First receive 8 units at €10 and then 4 units at €16. Next, deliver 10 units and look in Inventory → Reporting → Inventory Value to see what your cost (€120) and remaining inventory are.
Then do the same with the method First in, First out (FIFO). You will now see a cost of €112 and the remaining layers in inventory.
Finally, close the period via Accounting → Control → Inventory Valuation and create the entry there. You will then see that the physical inventory and the financial valuation are neatly aligned again.
Common misconceptions (short and honest)
“The cost in Odoo is always the latest purchase price.”
That seems logical, but it is not correct. With the methods Average Cost (AVCO) and First in, first out (FIFO) Odoo determines the value based on earlier receipts or inventory layers. As a result, the cost of a sale may differ from the most recent purchase price.
“The inventory value in Accounting and Inventory should always be exactly the same.”
In practice, small differences can arise. Think of incorrect dates, returns without an invoice, or products assigned to the wrong category. Via Accounting → Control → Inventory Valuation you can easily identify and correct those differences.
“Perpetual valuation is always better.”
Not necessarily. The perpetual method (permanent valuation) is more accurate per invoice, but requires tight processes and correct account setup. For many Dutch companies, periodic valuation with month-end closing works more reliably and simply. Odoo 19 does make the perpetual method lighter, because fewer entries are created.
“Inventory valuation works out automatically, that’s what Odoo does, right?”
Odoo calculates everything neatly, but only if the settings are correct. Wrong product categories, incorrect accounts, or mixed costing methods can quickly lead to distorted figures. A monthly check prevents rework at the end of the year.
“You can always just manually correct inventory differences.”
You can, but do it carefully. Use Adjust Valuation only when it is really necessary, and always briefly record why the correction is being made. That keeps your audit trail clean and helps you stay in control of your balance sheet.
What Odoo Experts arranges for you
Advice on the right settings
Together, we look at the right costing method for each product category and make sure all accounts are linked correctly. That way, the connection between inventory and accounting is correct right from the start.
Checking your inventory
We help set up monthly checks so that differences become visible quickly. With our checklists and reports, you can see at a glance what is in stock, what it is worth, and where deviations come from.
Help with checks and corrections
We guide you in performing inventory valuations, generating closing entries, and safely adjusting values in Odoo. Everything with a clear explanation, so you can do it yourself next time.
Guidance for finance and warehouse
We make sure everyone tells the same story. From the accountant to the warehouse manager. That way, inventory valuation does not become a black box, but a shared process.
Curious about the current state of your inventory valuation?
Schedule a short inventory valuation check with one of our consultants. We will review the settings together, run a test, and immediately provide advice on improvements that make a difference.
Source: official Odoo 19 documentation (Valuation cheat sheet, Inventory valuation).