Odoo 20 Inventory Valuation: Changes, FIFO vs AVCO and Upgrade Checks
Odoo 20 inventory valuation explained: what changed since Odoo 18 and 19, FIFO vs AVCO, Anglo-Saxon perpetual setup, reports and upgrade checks to run.
Search "Odoo 20 inventory valuation" and you find short feature lists. What finance teams need is how stock value reaches the ledger now, what moved since Odoo 18, and what to test. Our Odoo upgrade services start with exactly that reconciliation.
This guide is for CFOs, controllers and operations leads on Odoo 17, 18 or 19 who plan an Odoo 20 move. For every change by app, see our Odoo 20 release notes.
How does Odoo 20 inventory accounting compare with Odoo 18 and 19?

Odoo 20 inventory accounting works like Odoo 19, and both differ sharply from Odoo 18. The table shows the areas your accountant will notice first.
| Area | Odoo 18 | Odoo 19 | Odoo 20 |
|---|---|---|---|
| Perpetual journal entries | Invoices plus every stock move | Invoices plus one closing entry | Same as Odoo 19 |
| Anglo-Saxon setting | Separate checkbox | Choose Perpetual (at invoicing) | Same as Odoo 19 |
| Stock input and output accounts | Used as interim accounts | No longer used | No longer used |
| Accrual entries | Not in the valuation flow | Bills to receive, invoices to issue | Booked from the valuation report |
| Late costs on goods already sold | No retroactive update | No retroactive update | Delivery value and COGS replayed |
| Valuation without Inventory app | Requires Inventory | Accounting only | Fields moved into core apps |
The Odoo 18 and 19 columns come from Odoo's own valuation cheat sheet, which lists the change from "Invoices + every moves" to "Invoices + one closing". The Odoo 20 column comes from the official release notes.
What did Odoo 19 change in stock valuation?
Odoo 19 rebuilt stock valuation so the Accounting app, not the warehouse, decides when stock value hits the ledger. Odoo says the old design created too many journal items, which hurt performance, ledger clarity and audits.
Here is what that means in practice:
- No entry per move: receipts and deliveries no longer post journal entries one by one.
- Invoice-level posting: with perpetual valuation, the stock valuation account moves when vendor bills and customer invoices are posted.
- One closing entry: a stock closing entry syncs the ledger with the stock report, manually, daily or monthly.
- Variation account: a new interim account holds the gap between physical stock and posted value until the closing or accruals clear it.
- Interim accounts retired: the old stock input and output accounts are no longer used.
A user who upgraded wrote on the Odoo forum that the inventory valuation report looks completely different from Odoo 18. If you skip from 17 or 18 to 20, your team meets this change and the Odoo 20 changes at once.
What is new in Odoo 20 inventory valuation?
Odoo 20 inventory valuation adds fixes on top of the Odoo 19 model rather than a new model. These are the changes that affect stock value and cost of goods sold.
- COGS update for late costs: when a receipt's value changes after its goods were delivered, for example through a landed cost, Odoo replays the valuation. The delivery value is recomputed and, with perpetual accounting, COGS lines on the posted invoice are updated.
- Landed costs for specific products: each landed cost line has an "Apply On" field, so import duties can hit only the items they concern.
- Accruals from the valuation report: Bills to Receive, Billed Not Received, Invoices to be Issued and Invoiced Not Delivered can be booked from the Inventory Valuation closing report.
- Valuation without Inventory: "Track Inventory" and on-hand quantity sit in Product, and costing method and the valuation report sit in Accounting.
- Intercompany cost transfer: a receipt in the receiving company takes the cost of the sending company's delivery.
- Inventory at a past date: the Stock report has a date and time picker that keeps your filters.
- Stock aging report: a saved favorite in Moves Analysis shows remaining quantity and value by month.
- Subcontracting reception valuation: without a purchase order, the subcontracting cost comes from the vendor pricelist.
Our Odoo 20 Inventory release notes show each change with screenshots and developer notes. The accrual and "valuation without Inventory" changes sit in the Odoo 20 Accounting release notes.
FIFO vs AVCO vs standard cost: which Odoo costing method fits?
Odoo FIFO AVCO and Standard Price all still exist in Odoo 20, and the right one depends on how your purchase prices move. You set the method in Accounting settings and can override it on a product category.
Odoo's cheat sheet uses one example: receive 8 units at $10, then 4 at $16, then deliver 10. The table applies it to each method. The FIFO delivery figure is our own working of the same numbers.
| Costing method | Delivery of 10 is valued at | Value left in stock | Best fit |
|---|---|---|---|
| Standard Price | 10 x $10 = $100 | 2 x $10 = $20 | Stable costs, manufacturers with set standards |
| Average Cost (AVCO) | 10 x $12 = $120 | 2 x $12 = $24 | Commodities and parts with mixed purchase prices |
| FIFO | 8 x $10 + 2 x $16 = $112 | 2 x $16 = $32 | Batches, perishables, rising prices |
Two details catch FIFO users out. The Cost field on the product form shows an average even under FIFO, and inventory adjustments use that average cost, as Odoo's page on valuation of stock movements explains.
Negative stock is the other trap. Odoo values a delivery made before its receipt at the last known cost, then corrects it once the real receipt is recorded. Book receipts before deliveries wherever you can.
Perpetual vs periodic valuation and Anglo-Saxon accounting in Odoo
In Odoo 19 and Odoo 20, Anglo-Saxon accounting is no longer a checkbox: you choose Perpetual (at invoicing) or Periodic (at closing). Odoo's docs link periodic with Continental practice and perpetual with Anglo-Saxon practice, but you can mix.
| Setting | When COGS or expense is recorded | Who usually picks it |
|---|---|---|
| Perpetual (at invoicing) | COGS when the customer invoice is posted | Companies that match cost to revenue (Anglo-Saxon practice) |
| Periodic (at closing) | Expense when the vendor bill is posted, stock value fixed at closing | Companies on Continental charts with simpler books |
Odoo's inventory valuation guide for Accounting lists the settings: valuation method, closing frequency, cost method, valuation account, variation account and journal. Inventory Loss and Production locations can carry their own accounts.
For perpetual setups, Odoo suggests setting the closing to Manual and generating entries at period end. A delayed vendor bill no longer leaves the month wrong, provided someone runs the closing and the accruals.
Where is the Odoo inventory valuation report now?
The Odoo inventory valuation report lives under Accounting, Review, Inventory Valuation, while the per-product breakdown moved to the Inventory Stock report. This split confuses most teams right after an upgrade.
The Accounting report shows Initial Balance, Stock Variation and Ending Stock, plus Inventory Loss and Cost of Production for periodic setups. Generate Entry creates the draft stock closing entry. In Odoo 20, the same report also books the accruals.
For quantity and value per product, open Inventory, Reporting, Stock. Unit Cost and Total Value appear once Accounting is installed. Filter by warehouse, because the default view values stock across the whole company.
What problems do Odoo users report with the new valuation?
The common complaints are about timing, missing accounts and old habits, not wrong maths. These come from public threads on the Odoo forum.
- Delayed bills: a user asked whether Odoo 19 is GAAP compliant when vendor bills arrive late. The answer: run the closing entry and book accruals for bills to receive.
- Adjustment accounts: another found the incoming and outgoing valuation accounts missing on the inventory adjustment location; gains and losses share one Loss Account.
- Per-category accounts: users looking for the Anglo-Saxon option were told to choose a valuation method and set variation accounts per product category.
- Method changes: teams asking about switching from FIFO to average cost were warned that past moves keep their old valuation.
None of these block an upgrade. They do mean your chart of accounts and month-end steps need a fresh design, not a copy of the Odoo 18 setup.
Which industries feel the Odoo 20 stock valuation changes most?
Odoo 20 stock valuation matters most where goods sit in stock for weeks, costs arrive late or goods move between companies. The table maps the main cases.
| Industry | Pain or cost driver | Odoo approach | How iVentureTeam helps |
|---|---|---|---|
| Importers and distributors | Freight and duties billed after goods are sold | Landed costs per product, COGS replayed | Landed cost products, month-end routine |
| Manufacturing | Component costs and labor in finished goods | Cost of Production account, AVCO or standard | Design costing per category, test MOs |
| Multi-company groups | Stock moved between entities at wrong cost | Intercompany cost taken from the sender | Set resupply routes, reconcile both books |
| Retail and eCommerce | High volume, frequent price changes | AVCO with one closing entry | Tune closing frequency and reports |
| Food and pharma | Expiry and batch cost tracking | FIFO with valuation by lots | Lot setup, aging review, write-offs |
Manufacturers should also read our page on Odoo ERP for manufacturing, which covers bills of materials and work orders.
Odoo 20 inventory valuation upgrade checklist
Run these checks on a test database before you upgrade production, and again after. They catch the issues that otherwise surface at the first month-end close.
- Freeze a baseline: export stock quantity and value per product and the valuation account balance on the cutover date.
- Clear interim accounts: if you come from Odoo 18 or older, move any balance in stock interim accounts to the stock valuation account, using Odoo's rebalance server action after upgrading to Odoo 19.
- Post open documents: post draft bills and invoices and review received orders not yet billed.
- Confirm settings: valuation method, cost method, valuation and variation accounts, journal and closing frequency, per company.
- Check categories: confirm each product category's costing method and accounts, and set Loss and Production location accounts.
- Compare totals: the Stock report total must match your baseline, and the Inventory Valuation report must explain any variation.
- Test late costs: add a landed cost to a receipt whose goods were sold and check the delivery value and invoice COGS.
- Run a dry close: generate the closing entry and accruals for one period and have your accountant sign off.
- Review custom code: modules that override valuation fields or COGS hooks must follow the moved fields.
Our guide to Odoo upgrade verification covers the wider month-end tests. For custom code, see what breaks in Odoo 20 custom modules.
Can you upgrade to Odoo 20 today, and what does it cost?
Not yet through Odoo's own service: on 26 October 2026 the highest target on Odoo's upgrade platform was still 19.0. So most databases move to Odoo 19 first, which is where the valuation change happens.
You can check the current targets on Odoo's upgrade platform. Use the wait well: do the interim-account clean-up and the closing redesign on Odoo 19, and the later step to Odoo 20 becomes small for valuation.
Our own industry estimates, not quotes, put a 19 to 20 upgrade at $1,500 to $3,000 and an 18 to 20 upgrade at $3,000 to $6,000. Heavy customization raises both. Our Odoo upgrade cost guide explains the ranges.
For a quick number on your own database, try the Odoo migration cost calculator.
How iVentureTeam helps with Odoo 20 inventory valuation

iVentureTeam upgrades Odoo databases with the stock value reconciled before and after, so finance trusts the numbers on day one. We have delivered 150+ ERP projects across 35+ countries with 40+ Odoo specialists over 13+ years.
- Valuation review: costing methods, categories and accounts checked against how you buy, make and sell.
- Interim account clean-up: balances moved and documented before or after the Odoo 19 step.
- Upgrade and testing: test database, baseline comparison and a dry month-end close, as part of our Odoo migration services.
- Closing routine: closing entries, accruals and landed cost steps written into your month-end checklist.
- Accountant handover: a walk-through of the new reports, built on our guide to how Odoo Accounting works.
Odoo inventory valuation case study: KMF Technologies
An IT services and hardware distributor in The Gambia moved from manual product lists to Odoo with cost prices migrated and checked. Clean cost data is the starting point for any valuation setup.
KMF Technologies tracked products and categories by hand. It had no real-time stock view, which led to overstocking and stock-outs, and sales, purchase and store teams did not share data.
We configured Sales, Purchase, Inventory and Accounting, defined warehouses, product categories and stock locations, and built a chart of accounts for The Gambia. The full product master, with cost and sale prices, was imported with post-migration integrity checks.
The phased rollout took 8 weeks. KMF's director said: "Inventory in Odoo matches the shelf, and purchasing finally runs on real numbers." Read the KMF Technologies Odoo inventory case study.
The bottom line on Odoo 20 inventory valuation
Odoo 20 inventory valuation is an evolution of Odoo 19, so the hard part is leaving Odoo 18 or older, not adopting Odoo 20. Plan the accounting redesign first and the version step second.
Pick your valuation and costing methods on purpose, clear the old interim accounts, prove that stock value matches before and after, and give someone ownership of the monthly closing entry. Do that and the Odoo 20 features, from late landed costs to accruals, simply make month-end easier.
Ready to upgrade without losing track of stock value?

Get a valuation-safe upgrade plan from a team that reconciles stock before and after every move. Plan your Odoo 20 inventory valuation upgrade with us, call +91-90235-15208, or email business@iventureteam.com.
Frequently Asked Questions
What changed in inventory valuation in Odoo 20?
+
Odoo 20 keeps the Odoo 19 model and adds retroactive COGS updates for late costs, landed costs on specific products, accruals from the valuation report and valuation without the Inventory app.
Does Odoo 20 still support FIFO and AVCO?
+
Yes. Odoo 20 offers Standard Price, First In First Out (FIFO) and Average Cost (AVCO). You set the method in Accounting settings and can override it on each product category.
Where is Anglo-Saxon accounting in Odoo 19 and 20?
+
There is no separate Anglo-Saxon checkbox any more. Choose the Perpetual (at invoicing) valuation method, which records COGS when the customer invoice is posted.
Why does Odoo 19 not post journal entries on stock receipts?
+
Odoo moved stock accounting to invoices plus a closing entry to cut journal items and improve performance and audit clarity. The closing entry and accruals cover goods received or delivered before billing.
Where is the inventory valuation report in Odoo 20?
+
The accounting view is under Accounting, Review, Inventory Valuation. The per-product quantity and value view is the Stock report under Inventory, Reporting, with Unit Cost and Total Value columns.
What happens to stock interim accounts when upgrading?
+
Odoo 19 no longer uses stock input and output accounts. Move any open balance to the stock valuation account, ideally with Odoo's rebalance server action after the upgrade, then generate a closing entry.
Can I change from FIFO to AVCO after go-live?
+
You can change the method on a product category, but past moves keep their old valuation. Plan the switch at the start of a period, test it on a copy and agree the accounting treatment with your accountant.
Can I upgrade my database to Odoo 20 now?
+
On 26 October 2026, Odoo's upgrade platform offered 19.0 as the highest target. Most companies upgrade to Odoo 19 now and take the smaller step to Odoo 20 once Odoo opens it.
Ready to put this into action?
Talk to iVentureTeam about Odoo, AI automation, or custom development — get a free, no-obligation consultation.
Free Odoo tools
All tools- Odoo Health CheckVersion, modules, findings and upgrade cost
- Odoo App SelectorWhich apps you need, by industry
- Odoo Project EstimateIndicative cost and timeline in minutes
- Odoo Implementation Cost CalculatorImplementation cost and timeline, in minutes
- Odoo Migration Cost CalculatorVersion jump or legacy ERP, priced in minutes
Continue reading
Odoo UAE E-Invoicing Setup: PINT AE, ASPs and Odoo 19/20 Readiness
How to set up UAE e-invoicing in Odoo 19 and 20: PINT AE mapping, accredited service provider choice, EmaraTax onboarding, deadlines, penalties and costs.
Odoo 20 Upgrade and eCommerce Integrations: Order Flow Risk
Odoo 20 upgrade risks for eCommerce integrations: Shopify, Amazon and WooCommerce connectors, payments, shipping, SKU mapping, cutover and reconciliation.
Odoo Amazon Integration: Setup, Sync Scope, Limits and Cost
Odoo Amazon integration explained: what the Odoo Amazon connector syncs for FBA and FBM, its limits, eBay options, Odoo 20 marketplaces and real costs.
