Inventory valuation is very essential functionality in odoo as it affects product pricing and the total inventory value, which result in impact to accounting. Odoo offers three primary methods for inventory valuation : Standard Costing, Average Costing & FIFO (First In, First Out) Costing. Each method has a different way of finding out value.
Managing product costing can take a lot of work for businesses. Using product costing methods simplifies assigning prices to manufactured products. Companies use inventory valuation to determine the value of products in storage. The Odoo ERP system helps users efficiently manage product prices and quickly evaluate their inventory's value using the costing methods in the Odoo Inventory module. Let's explore these methods and how they work..
At the end of this blog, we have an important announcement. During our projects, we encountered a unique situation related to inventory valuation that we successfully solved for a client. This situation and its impact on cost could offer valuable insights for your business. Be sure to check that section for more details. For further discussion, you can connect with us at SerpentCS Contact.
Product Key Valuation Methods
Standard Costing Method :
The idea behind standard pricing is simple. The price stays the same no matter what the purchase order price is, relying only on the cost field. This means that purchase receipts and deliveries don’t affect the cost.
With standard pricing, the cost price is usually updated manually. Often, the product's price changes once a year or at set intervals.
Let’s create a new product and set its costing method to "Standard Price," as shown below. In this example, the product's cost is set at $40, using the standard price method.
![](/web/image/5815-c22ffc8a/image10.png?access_token=7c99c7ed-5af4-4594-a1fe-d807f3f56a40)
![](/web/image/5817-f955eb79/image20.png?access_token=9ce64258-9612-4c62-a302-b9143658d79e)
Save the information and create a purchase order for the product to test the standard price method. In this case, we created a purchase order for the product "Pen" at a unit price of $30 and then validated the receipt.
After confirming and validating the purchase order, we will check the inventory valuation for the product "Pen." Although we paid $30 for the "Pen," the Inventory Valuation report shows that the value added for one unit is $40 instead of $30.
![](/web/image/5820-0a6ff130/image19.png?access_token=16b074e2-8bd8-4a9f-836a-6071d54d3532)
With the Standard costing method, the product's standard price is what matters. The inventory valuation ignores the actual price paid for the item and uses the cost price set in the product details instead.
Average Costing Method :
Each time you buy and receive products, the cost updates based on the purchase price and quantity. Once the items leave the warehouse, product cost remains fixed.
Each time you purchase and receive a product, the cost is updated based on the amount paid and the quantity in the purchase order. However, once the items leave the warehouse, their price doesn't change.
![](/web/image/5823-78761386/image11.png?access_token=e5111894-f0b6-4a09-8f2f-f2bd14cf0ef2)
Now, create a purchase order for 10 units at ₹10 per unit. Then, confirm and validate the order.
Currently, after creating the first purchase order, the product price is ₹10.
![](/web/image/5827-487b3612/image15.png?access_token=f277affa-9838-4363-9209-99e8419c71bd)
![](/web/image/5826-6cbd9a62/image1.png?access_token=58ac5e68-144a-477a-8188-8dad2b33c2d1)
This is how the stock valuation is calculated after creating the first purchase order:
- 10 units at ₹10 each (10 * 10) = ₹100
- Unit value (100 / 10) = ₹10
Now, let's create a second purchase order for 10 units at ₹20 each. Then, confirm and validate the order.
![](/web/image/5831-8a6e879d/image17.png?access_token=80a826e9-0179-4ef3-ada4-18e0063219ef)
![](/web/image/5830-067c95ff/image14.png?access_token=91e531fd-3380-4bcf-acc6-c28d2763d2b3)
This is the current stock valuation after creating the second purchase order:
- 10 units at ₹20 each (10 * 20) = ₹200
- Unit value (200 / 10) = ₹20
After creating the 2nd purchase order, the current product price will be calculated by dividing the total stock valuation by the total quantity in stock that is ₹250 ÷ 15, which equals to ₹16.67.
![](/web/image/5833-59584be7/image8.png?access_token=d1257218-4a5d-4510-b94b-6742f7a62abe)
We purchased a total of 20 items. So far, we've sold 10 products. Initially, we sold 5 units at a price of ₹20 each. Then, we sold another 5 units at a price of ₹10 each.
FIFO Costing Method :
In this method, the cost of a product changes based on the latest item added to the inventory. So, strategies for removing products, such as FIFO, can affect the overall cost.
Now, let's create the first purchase order after changing the costing method to FIFO. We'll order 5 units at ₹20 each. Then, confirm and validate the receipt.
![](/web/image/5835-a8668556/image13.png?access_token=27ea663d-8e8d-4bb1-b1fd-d620fcec76e6)
![](/web/image/5837-6cbd9a62/image1.png?access_token=804a210a-cdc3-44ce-93a3-1b63f31db63b)
Currently, we have 15 items in inventory. We're going to create a sales order for 10 units. According to the First In First Out costing method, the value for these 10 units will be ₹16.67 each, based on the previous purchase price.
Let's now make a second purchase order for 5 units priced at ₹15 each. After creating it, we'll confirm and validate the purchase order.
![](/web/image/5878-3e9bdff3/image12.png?access_token=a7659af8-a5f5-4ba7-ae05-2cc394adcf6b)
![](/web/image/5879-59584be7/image8.png?access_token=a99bc454-b55e-4cfd-9f10-483298438cd7)
Currently, the product's cost price is ₹20 because all the quantities priced at ₹16.67 are being sold. Once the units priced at ₹20 are sold, the next price will be ₹15.
When selling the product, the system will automatically calculate the average price between the two available prices as the default.
Overcoming Challenges: Upgrading Odoo Inventory Valuation
Let's discuss the challenge we faced in our project, detailing each step of the process. For further information, you can drop your inquiry at Contact Us Page.
As many of you know, Odoo calculates inventory valuation based on the chosen costing method. When purchasing products with varying prices, Odoo uses an average calculation.
We had an idea: Why not use the purchase price of the product when it's bought and consider that as the valuation? This approach would only work if the Lot & Serial option is utilized. Each Lot & Serial number has its price, so the valuation can be calculated based on that.
Let's begin with a situation that will help us grasp the concept better.
1. First, we'll create a product and set it as a "Storable Product" type. Then, in the Inventory tab, we'll choose the "Lot & Serial" option.
![](/web/image/5880-833e6743/image9.png?access_token=71820520-b622-4e37-83b2-f41ed3d1d344)
2. Next, we'll make two purchase orders. For the first one, we'll order 5 units priced at ₹100 each.
![](/web/image/5888-7b58ccd7/image21.png?access_token=ef1dd58b-5361-4810-b300-24c87454e209)
3. Currently, the value for each of the 5 products we purchased is ₹100.
![](/web/image/5886-cdee8ba6/image2.png?access_token=2225e888-237b-4b5a-b16d-ec4af5f27c7d)
4. Now, we'll make a 2nd purchase order for another 5 units, priced at ₹150 each.
![](/web/image/5889-3ebb620c/image16.png?access_token=155d5f23-0b9e-4417-8125-f5e28416ff0a)
5. After the second purchase order, the value for each of the 5 products we purchased is ₹150.
![](/web/image/5887-dfd6d770/image5.png?access_token=4568f5c2-f7ba-48ff-80e3-2cc72c5bf2cc)
6. Next, we'll create a sales order to observe how the costing affects the product valuation. We'll order 8 units at a price of ₹100 each. After confirming the order, we'll receive the delivery.
![](/web/image/5890-f8de4f26/image18.png?access_token=dbaadc30-b65e-4043-bd2e-c8e462493c1c)
7. After receiving the delivery order, click on the Three Vertical Lines icon for the Lot & Serial number in the Operation Tab. There you'll see that it is 5 units from the 1st purchase order & 3 units from the 2nd PO that combines a total of 8 units. Each Lot/Serial Number is associated with the product's purchase price from the respective purchase order.
![](/web/image/5894-f9780765/image6.png?access_token=65d52050-778b-47c5-88c0-55191e7f89a8)
8. The final valuation will be calculated like this : 5 units were purchased at ₹100 each & 3 units at ₹150 each. So the total amount of ₹500 + ₹450 = ₹950. The total amount is ₹950 divided by 8, which equals 118.75₹ per unit. If the purchase cost from the PO is unavailable, the cost will be taken from the Master Product form.
![](/web/image/5893-6aaa3e29/image4.png?access_token=ca308bb4-7cfc-4311-b8b2-2b0117d096fc)