New Stock Valuation in Odoo 19: Use Cases
In Odoo 19, there have been some changes. One of the biggest changes was the way the inventory valuation is registered. With the disappearance of the interim accounts and of the valuation layers. In this article you’ll be able to understand through different use cases, how the inventory valuation entries will behave in Odoo 19.
Note: The following use cases will have in mind the perpetual stock valuation. For periodic valuation, the processes will be the same; the only change is that the stock valuation entries will be recorded after they are generated, either manually, daily or monthly.
Manufacturing
When you manufacture your products, your raw materials are consumed, and your finished goods are created. Keeping track of your stock valuation during this process is crucial, especially if you want accurate accounting and cost analysis.
In Odoo 19, manufacturing valuation works as follows:
- Purchasing raw materials: The value of each raw material is only accounted for when the vendor bill is posted. There will be an increase (debit) in your raw materials account.
- Raw material consumption: When raw materials are consumed in production, their value is credited from the Raw Material Stock Valuation account and debited to the Cost of Production account.
- Work center and operation costs: Any labor or overhead costs related to production are added to WIP, ensuring that the total cost of production is captured.
- Finished goods production: Once the manufacturing order is completed, the finished goods value will be registered in your Finished Goods Valuation Account.
- Delivering the finished goods to the client: No account will suffer any alteration. Only when the client is invoiced, the Finished Goods account will be credited and the COGS debited.
This approach ensures that stock valuation reflects all components of production cost, WIP is properly accounted for, and financial reconciliation between inventory and accounting is straightforward.
Before starting the manufacturing process, it is important to have in mind that there are certain accounts that need to be configured:
- Stock Account for manufactured products: defined on the product category
- Stock Account for component: defined on the product category
- Cost of Production Account: defined on the production location
Practical Example:
Your office furniture company manufactures some of their products and you received a request for quotation for your brand new desk, with the following BOM:

Desktop Cost = 40$ Office Desk Legs Cost = 10$ x 4 = 40$ Office Desk Cost = 80$, Sales Price = 150$
Once the quotation is confirmed, an MO for the desk and a PO for its raw materials will be created.
Vendor Bill

Manufacturing

Note: The component name is not visible anymore, in Odoo 19, in the manufacturing journal entry as it was in Odoo 18. The manufacturing journal entry labels are now standardized to only display the manufacturing order reference.

Customer Invoice

- What changes? In previous versions, the process would go like this:
Receiving raw materials

Vendor Bill

Manufacturing

Delivering the finished product

Customer Invoice

As you can see, there are way more journal items in older versions compared to version 19.
- Receiving Raw Materials: When the raw materials arrived at your warehouse, their value was stored in the Raw Materials Valuation Account and the Stock Input Account. After posting the vendor bill, your Stock Input Account would be credited.
- Manufacturing: When the MO consumed your raw materials, the Raw Materials Valuation Account would be credited and your Cost of Production debited in counterpart. After finishing the manufacturing process, the Manufactured Products Valuation Account would be debited in counterpart of the Cost of Production Account.
- Delivering the finished product: After delivering the finished product to the client, the Finished Goods Valuation Account would be credited, while your Stock Output Account would be debited. When posting the invoice, the Stock Output Account would be balanced and the COGS would be registered.
Subcontracting
Subcontracting allows a company to save time and money by outsourcing part or all of its manufacturing process.
Basic Subcontracting
In Basic Subcontracting, the subcontractor is fully responsible for sourcing all components needed to manufacture a product. In this case there will be no purchase for the raw materials, only the bill for the subcontracting service.
Resupply Subcontractor on Order
In Resupply Subcontractor on Order, your company supplies the components that the subcontractor needs. You have a bill for your raw materials and another one for your subcontracting service.
Dropship Subcontractor on Order
In Dropship Subcontractor on Order, your company does not physically handle components, the vendor ships them directly to the subcontractor. In this case, you will also have two bills.
In this version, this route is added within the Dropship Route, you can find it by going to: Inventory -> Configuration -> Routes -> Dropship.
In this article we will focus on the Resupply Subcontractor on Order. In this scenario, your company still owns the raw materials, but production occurs at a third-party location, which affects stock valuation.
In Odoo 19, subcontracting valuation is handled as follows:
- Receiving the raw materials: To resupply your subcontractor, you need to have your components in stock.
- Sending components to the subcontractor: Raw materials are moved from the company stock into the subcontracting location.
- Receiving finished products: Once the subcontractor delivers the finished goods, the material and subcontracting service costs are accumulated into the Finished Goods Stock Valuation Account. It’s important to note that this works better with AVCO/FIFO costing methods.
- Vendor bill: Once the bill is posted, the Finished Goods Valuation Account will be debited.
- Delivering the product to the client: After receiving the finished products, you can post the invoice so that the Finished Goods Valuation Account can be credited.
The calculation of the cost in subcontracting is the same across Odoo 17, 18, and 19, but Odoo 19 improves traceability and clarity in accounting and inventory reports.
Practical Example:
There are certain products that you do not manufacture, you subcontract the manufacturing process. Let’s use the product Big Lamp for example: Components Cost : Lamp Structure = 10$ Light Bulb = 5$ Big Lamp Cost = 25$ (BOM + Subcontracting Service)
Receiving the raw materials (Bill)

Receiving the finished product


Finished product (Bill)

As you can see, here we only pay the subcontractor for their service. This cost will be included in the finished products cost as mentioned above.
Customer Invoice

- What Changes?
Receiving the raw materials

Raw materials (Bill)

Receiving the finished product

Finished Goods (Bill)

Delivery to the client

Customer Invoice

As said before, older versions of Odoo have way more journal items than version 19.
- Receiving the raw materials: When receiving the raw materials, the Stock Input Account would be credited and when posting the bill, this account would be debited.
- Receiving the finished product: After the subcontractor finished the manufacturing process, you would receive the finished goods in your warehouse. The raw materials account and cost of production account would behave the same way as in version 19, the only difference is that the cost of the subcontracted service would be registered in the stock input account. After posting the bill, the input account would present a balance of 0.
- Delivery to the client: When delivering the finished product to the client, the output account would be debited while your finished goods valuation account would be credited. After posting the invoice, your output account would be balanced and your COGS registered.
Dropshipping
Dropshipping allows a company to sell products without holding them in stock. The supplier ships products directly to the customer, bypassing the company’s warehouse. While inventory levels are not impacted, stock valuation and accounting still need to reflect the purchase and sale properly.
In Odoo 19, dropshipping valuation works as follows:
- Purchase order and vendor bill: When a dropship order is created, the company purchases the product from the supplier. The cost is recorded in an Expense Account rather than a Stock Account, because the product never enters inventory.
- Dropship: After the dropship is completed, there is nothing recorded in any account and there is no change in the inventory valuation.
- Sales order and invoice: When the customer invoice is posted, revenue is recorded, and the system automatically posts the corresponding amount to a sales account. There is no COGS line on the invoice.
This approach ensures that dropshipping is accounted for as a pass-through transaction, aligning financial records with the reality of products moving directly from supplier to customer.
Practical Example:
For this use case, let's use a wood cabinet that you buy to a vendor, that directly delivers the product to your client.
Vendor Bill

Customer Invoice

- What Changes?
Confirmation of the Dropship

Vendor Bill

Customer Invoice

In older versions of Odoo:
- Dropship: Even though there is no entry/outflow of physical stock in your warehouse, the interim accounts would behave as if there was, as well as your stock valuation account.
- Vendor Bill and Customer Invoice: These would register the values in the same accounts as if, again, there was an entry/outflow in your warehouse.
Selling Products Not in Stock
Sometimes, you may create a sales order for products that are not currently in stock. This situation, common in high-demand or just-in-time operations, has implications for stock valuation and accounting, especially when the product is received later and at a different unit cost.
When products are delivered before they are physically received that results in negative stock. When the incoming shipment is later received at a different unit cost, Odoo automatically triggers a stock revaluation. To learn more about this read the following article: https://www.erpgap.com/blog/inventory-revaluation/
In Odoo 19, this process works as follows:
- Sale of out-of-stock products: When you have a sales order for a product not available in stock and confirm the delivery of that product to the client, the quantity on hand will be negative. If you have the MTO route enabled, a PO is automatically created to replenish your stock.
- Replenishing the product: Inventory is updated and your on hand quantity will be 0.
- Product Cost: The cost of your product will increase or decrease if in the PO that was generated, the cost of the product was altered.
Practical Example:
Let’s consider a Bookcase with a sales price of $200 and an initial cost price of $100. You currently have 10 units in stock but a sale order was processed for 11 units, the system allows the delivery despite the shortage, resulting in an on-hand quantity of -1.
Customer Invoice

Vendor Bill

Product Cost

As you can see the product cost automatically adjusted to $120.
- What changes?
Customer Invoice

Vendor Bill

Revaluation Entries

- Customer Invoice: At this stage, the system records the outgoing unit at the current cost of $100. The only difference here is the use of the interim accounts.
- Vendor Bill: After replenishing the product the vendor bill would be posted.
- Expense Revaluation Entry: This entry, which is created automatically, captures the difference between the valuation at the time of delivery ($100) and the actual cost at the time of replenishment ($120), ensuring inventory valuation remains accurate.
Note: In Odoo 19, there are no expense revaluation entries automatically created as it would happen in older versions.
In conclusion, the new valuation system is in many ways more practical and less bulky than it was before. With the removal of the interim accounts and of the valuation layers, Odoo 19 offers a fresh and quicker valuation methodology.