This guide explains why the United States chart of accounts in Odoo 19 has no Stock Interim (Delivered) account, and shows how to set up the accounts that perpetual inventory valuation uses instead. The short answer: nothing is missing. Odoo 19 removed both stock interim accounts, Received and Delivered, along with the settings that used them. Perpetual valuation now posts to the inventory account when a vendor bill or customer invoice is posted, so no holding account is needed.
It is for accountants checking a US database against the documented default accounts. The steps were verified on Odoo 19, with notes on Odoo 20.
Before you start
- Version and edition: Odoo 19. The product category settings below exist in Community and Enterprise. The company-wide Inventory Valuation settings in the Accounting app are part of Enterprise.
- Apps: Inventory and Accounting (called Invoicing in Community), with the United States chart of accounts installed.
- Access rights: the account fields on a product category are shown only to users with accounting access, and saving a category needs the Products right set to Create.
- Terms used: perpetual valuation, labelled Perpetual (at invoicing), keeps the inventory account current as you buy and sell. Periodic valuation, labelled Periodic (at closing), updates it only through a stock closing, a journal entry that brings the inventory account in line with the stock you hold. A stock interim account was a holding account for goods received but not yet billed, or delivered but not yet invoiced.
Why Odoo 19 has no interim accounts
Older versions, and some outdated documentation pages, describe a receipt that debits Stock Valuation and credits Stock Interim (Received), with the vendor bill clearing the interim account later. Deliveries used Stock Interim (Delivered) the same way.
Odoo 19 replaced that design. On a category set to Perpetual (at invoicing):
- A receipt or delivery creates no journal entry by itself, unless one of its locations, such as an inventory loss location, has its own valuation account.
- A posted vendor bill books the product line to the category's stock account instead of an expense account.
- A posted customer invoice debits the category's expense account for the cost of the goods and credits the stock account.
Because the bill and the invoice carry the stock value themselves, an interim account would have nothing to hold. The category form no longer has the Stock Input and Stock Output fields that pointed to them, so creating accounts with the old names would change nothing.
What the US chart sets up for you
On a database created with the Odoo 19 United States chart, inventory valuation uses these by default:
- Inventory Valuation (110100), a current asset, is the default stock account.
- Raw Materials (601000), an expense account, is the variation account of Inventory Valuation. A stock closing books the difference between the stock you hold and the balance of Inventory Valuation against it.
- Miscellaneous Expenses (690000) is the default expense account, so product categories inherit it.
- Cost of Goods Sold (500000) exists but is not used by default.
- The Inventory Valuation journal receives stock closing entries.
Products to receive (121100) and Bills to receive (211100) are separate accounts, not renamed interim accounts, and the standard valuation setup does not refer to them. A new US company starts on Periodic (at closing).
How to set up perpetual valuation
- In Enterprise, open the Accounting app and go to Configuration > Settings. In the Inventory Valuation section, set Inventory Valuation to Perpetual (at invoicing). Check that Valuation Account and Journal both show Inventory Valuation, then save. Categories without their own value follow these defaults.
- Open the Inventory app and go to Configuration > Products > Categories, then open a category that holds stock.
- In the Inventory Valuation group, set Inventory Valuation to Perpetual (at invoicing) and choose the Costing Method.
- In the Account Properties group, set Expense Account to Cost of Goods Sold.
- Check that Stock Account shows Inventory Valuation. The Stock Variation field below it shows that account's variation account, Raw Materials by default.
- If the costing method is Standard Price, a Price Difference Account field appears. Choose the account for the gap between standard cost and the billed price.
- Save, and repeat for each category that holds stock.
Stock Variation belongs to the stock account, not the category, so changing it on one category changes it for every category sharing that stock account. To keep variations on the balance sheet instead of in Raw Materials, create a current asset account and select it there, or set it under Accounting > Configuration > Accounting > Chart of Accounts in the Variation Account field on the stock account's Accounting tab.
Check that it worked
- Receive a product from a perpetual category and post its vendor bill. On the bill's Journal Items tab, the product line should be on Inventory Valuation, not on an expense account.
- Deliver that product to a customer and post the customer invoice. Its Journal Items tab should show a debit to Cost of Goods Sold and a credit to Inventory Valuation for the cost.
- Open the Chart of Accounts and search for "Interim". On a database created with the Odoo 19 US chart, no account is found, and none is needed.
The Journal Items tab is visible only to users with accounting access.
What changes in Odoo 20
Odoo 20 keeps the same design with no interim accounts. On a US database, the chart is created without account numbers, the variation account is a current asset account named Inventory Variation, and the default expense account is Cost of Goods Sold, so categories already point there. The valuation fields sit on an Accounting tab of the category form.
Common mistakes to check first
- Cost of goods sold lands in Miscellaneous Expenses. That is the inherited Expense Account on the Odoo 19 US chart until you change it on the category.
- Expecting entries at receipt. Goods received but not yet billed show in the stock reports but reach the inventory account only when the bill is posted or a stock closing picks up the difference.
- Automatic closings never run. The Daily and Monthly choices under Periodic Valuation skip a company whose default is Perpetual (at invoicing), so generate closings yourself from Accounting > Review > Inventory Valuation.
- Reconciling against the documentation list. The US localization page in the Odoo 19 and Odoo 20 documentation still lists Stock Interim (Received) and Stock Interim (Delivered) among the default accounts. The chart does not create them, so there is no default number to find.
Steps verified on Odoo 19. Menus and labels can differ on other versions.
Common questions
Why is there no Stock Interim (Delivered) account in the Odoo 19 US chart of accounts?
Odoo 19 removed both stock interim accounts, Received and Delivered, and the Stock Input and Stock Output fields that used them. Perpetual valuation now posts to the inventory account when vendor bills and customer invoices are posted, so no interim account is needed.
Which accounts does perpetual valuation use on a US database in Odoo 19?
The category's Stock Account, Inventory Valuation (110100) by default, holds the stock value, and its Expense Account takes the cost of goods sold when a customer invoice is posted. A stock closing books differences to the variation account, which is Raw Materials (601000) on the US chart.
Should I create Stock Interim accounts manually in Odoo 19?
No. Odoo 19 has no setting that refers to a stock interim account, so an account created with that name would never receive entries from inventory valuation.
Why does cost of goods sold post to Miscellaneous Expenses in Odoo 19?
On the Odoo 19 US chart, the company's default expense account is Miscellaneous Expenses, and product categories inherit it. Set the Expense Account on each perpetual category to Cost of Goods Sold.
Does Odoo 20 bring the Stock Interim accounts back?
No. Odoo 20 also has no stock interim accounts. Its US chart uses a current asset account named Inventory Variation as the variation account and Cost of Goods Sold as the default expense account.
Talk to the team.
If you are setting this up, or Odoo is not behaving the way this guide describes, book a 30-minute call. We will look at your configuration and tell you what it needs. Calgary studio, in-house team, no offshore handoffs.
Book the call →