Anyone who works with inventory wants to know three things for sure: what is in stock, what is it worth, and how does that affect the figures? In Odoo 19, this is more tightly controlled than ever. In this blog, we explain how the three cost price methods work, what the difference is between Periodic and Perpetual, what exactly has been updated in Odoo 19, and how you can check this in practice.
This article is written for entrepreneurs, controllers, and logistics managers. No jargon storm, just concrete examples.
The three cost methods
Cost price (VVP)
You agree on a single 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 cost prices per product.
Average cost price (AVCO)
Each receipt recalculates the average cost price. Deliveries are made at that current average. Ideal for bulk or commodities with fluctuating prices.
FIFO (first in, first out)
Outgoing goods "eat" the oldest layers first. A delivery can therefore include multiple layers, each with its own cost price. This way, price volatility is clearly reflected in your margin.
Mini example
Receive 8×€10 and later 4×€16. Deliver 10.
- AVCO records 10×€12 = €120 (average after the second receipt).
-
FIFO records 8×€10 + 2×€16 = €112.
Both are correct, but with a different story for your cost of sales.
Please note: LIFO (last in, first out) exists in Odoo as a removal strategy (picking), not as a valuation method. LIFO is not permitted as a valuation method under IFRS.
Inventory vs. Accounting: two systems that periodically intersect
Inventory works in real time on receipts and deliveries. You can immediately see quantities and values in the inventory reports.
Accounting works at the time of invoicing. Because no one wants to record every single screw, you periodically close the books with a closing entry that smooths out the differences between logistics (received/delivered) and finance (invoiced). Smaller companies usually do this once a year, while larger organizations do it monthly.
In short: your inventory report is always up to date, your general ledger is tracked via invoices, and your closing process is streamlined.
Periodic or Perpetual: what do you choose in Odoo 19?
In Accounting→ Configuration → Settings → Inventory Accounting, select the inventory valuation method:
Periodically (at closing): post purchase invoices as expenses by type; at closing, Odoo posts the inventory difference back to the balance sheet (inventory valuation). This is best practice in Europe.
Perpetual: purchase invoices are immediately recorded in the inventory account, costs are added to sales (COGS). Common in Anglo-Saxon countries such as the US and India.
The relevant accounts are mainly set up for the product category (Stock account, Price differences, Turnover, and Costs). You can optionally set up an account for stock differences. This account covers losses due to breakage, theft, or counting differences. You set up this account at the stock location for stock differences.
What's new in Odoo 19?
This is where the real progress lies. Up to and including Odoo 18, Odoo made entries for every stock movement. This resulted in a huge number of financial entries and was at the expense of speed.
In Odoo 19, this is done more intelligently: the stock account is only affected when the invoice is processed, rather than with every transaction. The closing entry then automatically ensures the correct accruals and deferrals, such as invoices still to be received, invoices still to be sent, and amounts paid or received in advance.
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 standard closings have been further automated.
Where can you check this in Odoo?
Inventory report
- In Odoo, go to Inventory → Reporting → Inventory Value.
- For a product, click on Cost price per unit to see where the changes in cost price originate.
- 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 is a value incorrect? Select the relevant lines, choose Actions → Adjust valuation and briefly explain why you are making the correction.
Closing the accounts
- 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.
- Use the Create entry button to create the journal entry for the closing period.
Which method suits your organization?
Use the standard cost price if your production and purchasing are stable and you work with fixed cost prices per product. This makes valuation predictable and easy to manage.
Choose Average Cost (AVCO) for products with large volumes and regularly changing purchase prices. The average provides stability in your margins and is easy to explain to finance and management.
Opt for First in, First out(FIFO) if you work with batch numbers or serial numbers and want to see price differences reflected in the cost price of your sales.
For many Dutch companies, periodic valuation with month-end closing strikes a good balance between accuracy and simplicity. If you work internationally with strict cost price processes, perpetual valuation (permanent method) is more attractive, especially now that Odoo 19 has significantly reduced the number of bookings.
In practice: a quick check
Create a test product using the Average Cost (AVCO) costing method.
First, receive 8 items worth €10 and then 4 items worth €16. Next, deliver 10 items and check your cost price (€120) and remaining stock in Stock → Reporting → Stock value.
Then do the same with the First in, First out (FIFO) method. Now you see a cost price of €112 and the remaining layers in stock.
Finally, close the period via Accounting → Control → Inventory valuation and make the entry there. You will then see that the logistics inventory and the financial valuation match again.
Common misconceptions (brief and honest)
The cost price in Odoo is always the latest purchase price.
That seems logical, but it is not correct. With the Average Cost (AVCO) and First In, First Out (FIFO) methods, Odoo determines the value based on previous receipts or stock levels. As a result, the cost price 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, minor discrepancies may arise. These could include incorrect dates, returns without invoices, or products in the wrong category. You can easily identify and correct these discrepancies via Accounting → Control → Inventory valuation.
"Perpetual appreciation is always better."
Not necessarily. The perpetual method (permanent valuation) is more accurate per invoice, but requires strict processes and correct account setup. For many Dutch companies, periodic valuation with monthly closing is more reliable and simpler. Odoo 19 does make the perpetual method lighter, because fewer entries are created.
Inventory valuation is automatically handled correctly, as Odoo performs this function, correct?
Odoo calculates everything accurately, but only if the settings are correct. Incorrect product categories, erroneous accounts, or mixed cost price methods can quickly lead to skewed figures. A monthly check prevents repair work at the end of the year.
"You can always correct inventory differences manually."
You can, but do so carefully. Only use Adjust valuation if it is really necessary and always briefly note why the correction is being made. This will keep your audit trail clean and allow you to maintain control over your balance sheet.
What Odoo Experts can do for you
Advice on the correct settings
We work with you to determine the right cost price method for each product category and ensure that all invoices are linked correctly. This ensures that the link between inventory and accounting is correct right from the start.
Checking your inventory
We help you set up monthly checks so that discrepancies quickly become apparent. With our checklists and reports, you can see at a glance what is available, what it is worth, and where discrepancies originate.
Help with checks and corrections
We guide you through performing stock valuations, generating closing entries, and safely adjusting values in Odoo. Everything is explained clearly so that you can do it yourself next time.
Support for finance and warehouse
We ensure that everyone is on the same page, from the accountant to the warehouse manager. This way, inventory valuation is not a black box, but a collaborative process.
Curious about the current status of your inventory valuation?
Schedule a quick inventory valuation check with one of our consultants. We will walk you through the settings, run a test, and provide immediate advice on improvements that will make a difference.
Source: official Odoo 19 documentation (Valuation cheat sheet, Inventory valuation).