Skip to Content
AccountingInventory
Erwin van der Ploeg Erwin van der Ploeg Published Updated 11 min read

How Does Inventory Valuation Work in Odoo?

From Costing Method to Journal Entry: How to Keep Control of Your Inventory Value

Summarize this article with AI

Want to quickly get to the core and key insights? Open this article in your favorite AI tool.

Inventory valuation determines what financial value your inventory has and how this value is processed in your accounting. This affects your balance sheet, cost of goods sold, gross margin, and financial reports.

Odoo keeps track of two things:

  • the physical inventory and its value in the inventory administration;

  • the financial processing of that inventory value in the accounting.

In this article, we explain how inventory valuation works in Odoo. We discuss the different costing methods, inventory movements, bookings, logistics costs, batches, and serial numbers.

What is inventory valuation?

Inventory valuation is determining the financial value of all products you have in stock at a given time.

Suppose you have a hundred products in your warehouse. These products may have been purchased at different times and at different prices. Still, you must be able to determine the total value of the inventory at any moment.

This value is important for:

  • the inventory on the balance sheet;

  • the cost of goods sold;

  • your gross margin;

  • financial monthly reports;

  • monthly and yearly closings;

  • the control between the warehouse and accounting.

Odoo calculates the inventory value based on inventory movements and the chosen costing method. A receipt increases the inventory value. A delivery, return to a supplier, or scrap decreases the inventory value.

An internal transfer within your own inventory does not change the total inventory value. The products are simply located in a different place.

The three costing methods in Odoo

Odoo has three cost price methods:

  1. standard cost;

  2. Average cost price;

  3. FIFO: First in, first out.

You set the cost price method for the product category. The method determines at what value products are received, delivered, and remain in stock.

1. Standard cost price or fixed settlement price (VVP)

With the standard cost price, also known as the fixed settlement price, you use one fixed cost price per product. This price is set manually and does not change automatically when you purchase at a different price.

Example:

  • fixed settlement price: € 10;

  • receipt at € 12;

  • inventory value per received product: € 10.

The difference between the fixed settlement price and the actual invoice price must be processed according to the established accounting accounts. An account for price differences can be used for this.

The standard cost price is particularly suitable when:

  • purchase prices are stable;

  • you work with fixed cost prices;

  • you want to keep the valuation predictable;

  • you want to analyze price differences separately;

A fixed settlement price does not automatically indicate what you actually paid for a product. It is an agreed value with which you process inventory and inventory movements.

2. Average cost price

With the average cost price, Odoo calculates a weighted average after each new receipt.

Example:

  • receipt of 8 products at € 10: total value € 80;

  • receipt of 4 products at € 16: total value € 64;

  • total stock: 12 products;

  • total value: € 144;

  • average cost price: € 12.

When you then deliver 10 products, Odoo values this delivery at € 12 per product. The cost price of the delivery is then € 120.

The two remaining products together represent a value of € 24.

The average cost price is suitable for products where:

  • purchase prices change regularly;

  • you trade large quantities;

  • individual stock layers are less important;

  • you want to spread price differences over the stock.

3. FIFO: First in, first out

With FIFO, or First in, first out, Odoo values outgoing products based on the oldest stock layers.

Use the same example:

  • 8 products received at € 10;

  • 4 products received at € 16;

  • 10 products delivered.

The delivery then consists of:

  • 8 products at € 10 = € 80;

  • 2 products at € 16 = € 32.

The total cost price of the delivery is € 112.

The two remaining products come from the second receipt and together have a value of € 32.

FIFO is suitable when:

  • purchase prices fluctuate significantly;

  • the order of arrival is important;

  • older stock must be consumed first;

  • you want to be able to track the remaining stock layers separately.

FIFO is not the same as a warehouse strategy. A warehouse strategy determines which products an employee collects. The cost price method determines at what value the inventory is processed financially.

Inventory management and accounting

The inventory management in Odoo is updated immediately when products physically move.

Upon receipt

  • the inventory quantity increases;

  • the inventory value increases;

  • a new inventory layer is created or the average cost price is adjusted.

Upon delivery

  • the inventory quantity decreases;

  • the inventory value decreases;

  • the cost price of the delivered products is determined.

The financial processing in accounting follows a separate process. With perpetual inventory valuation, the accounting inventory value is aligned with the inventory movements, invoices, and closing entries.

As a result, the inventory value in the inventory management may temporarily differ from the value in accounting.

This occurs, for example, when:

  • products have already been received, but the supplier invoice has not yet been booked;

  • products have already been delivered, but the customer invoice has not yet been booked;

  • an invoice is processed in a different period than the inventory movement;

  • there are returns or corrections;

  • there are differences due to rounding or price changes.

With the closing entry and additional entries for amounts to be received or to be invoiced, Odoo ensures that the inventory management and accounting are aligned again.

Important: a receipt directly increases the inventory value in Odoo, but that does not mean that an identical financial entry is always created in the accounting at the same time.

Which entries are created?

The exact entries depend on your settings, product categories, cost price method, and the moment invoices are processed.

Upon receipt

The physical inventory and the inventory value increase. The inventory management records what has been received and at what value.

When the supplier invoice is booked, Odoo processes the financial side of the purchase. The inventory valuation account and the supplier account are updated according to the configured setup.

Upon a supplier invoice

The supplier invoice contains the financial value of the purchase. If the invoice deviates from the receipt, for example due to additional costs or a different price, Odoo can process the difference through the accounts set up for that purpose.

Upon delivery

The physical inventory and the inventory value decrease. The cost price of the delivered products is determined based on the chosen cost price method.

If the delivery and the invoice fall in different periods, Odoo uses additional entries to align the financial reporting with the correct period.

an internal transfer;

A transfer between two internal locations does not change the total inventory value. The products are still owned by the same company.

In the case of a return to a supplier

A return to a supplier decreases the inventory quantity and removes the associated value from the inventory. Odoo uses the same cost price method as with other outgoing inventory movements.

Logistics costs add to the inventory value

In addition to the purchase price, there may be additional costs associated with a product. Think of:

  • transport;

  • insurance;

  • import duties;

  • taxes;

  • handling costs;

  • other costs related to receiving goods.

In Odoo, you can link these logistical costs to a receipt. Odoo then distributes the costs over the involved products.

You can distribute the costs:

  • evenly;

  • based on quantity;

  • based on current cost price;

  • based on weight;

  • based on volume.

The logistical costs increase the inventory value of the involved products. They are therefore not automatically processed fully as general costs.

To apply logistical costs, the involved product categories must use the average cost price or FIFO. The receipt must be processed before the logistical costs can be calculated and confirmed.

Valuation per batch or serial number

Odoo can value inventory not only by product but also by batch or serial number.

This is useful when:

  • different batches have been purchased at different prices;

  • you want to track the actual cost price per batch;

  • you sell products with a limited shelf life;

  • you want to write down specific batches;

  • you want to track the costs of components in a produced product.

For valuation by batch or serial number, you must:

  1. activate batches and serial numbers;

  2. set up inventory tracking;

  3. use FIFO or average cost price;

  4. activate valuation by batch or serial number.

Odoo then shows the valuation layers by batch or serial number. You can view this information in the inventory valuation report or via the valuation button on the batch or serial number card.

Scrap and inventory loss

When products are damaged, expired, or unsellable, you can write them off as scrap.

A scrap movement:

  • lowers the physical inventory;

  • lowers the inventory value;

  • moves the product to a virtual inventory loss location.

If you want to make the value of scrapped products visible in your profit and loss statement, you set up a separate inventory loss location with a loss account.

This way, you can report separately on:

  • damaged products;

  • expired products;

  • breakage;

  • theft;

  • inventory discrepancies.

Scrap uses the same cost price method as other outgoing inventory movements. In FIFO, the value of the oldest relevant inventory layer is used. In average cost price, Odoo uses the current average value.

Where do you check the inventory value?

In Odoo, you can check the inventory value in various places.

Inventory report

Go to:

Inventory → Reporting → Inventory

There you can view among other things:

  • the current inventory quantity;

  • the value per product;

  • the cost price per unit;

  • the remaining value of received inventory;

  • the inventory value per location;

  • the inventory value per batch or serial number.

In the cost price, you can see how the value is built up. In the total value, you can see which incoming inventory is still present.

Accounting inventory valuation

Go to:

Accounting → Control → Inventory valuation

Here you see the difference between:

  • the value according to the inventory administration;

  • the value that has already been processed in the accounting;

  • inventory variations;

  • amounts yet to be received or yet to be invoiced;

  • any inventory losses.

From this report, you can generate a closing entry. Always check this entry before you process it definitively.

Common causes of differences

A difference between inventory and accounting can have various causes:

  • a supplier invoice is missing;

  • a customer invoice has not yet been booked;

  • a receipt and invoice fall in different periods;

  • a product is in the wrong product category;

  • an account is incorrectly set up;

  • a return has been processed incorrectly;

  • negative inventory has occurred;

  • logistics costs have not yet been processed;

  • an inventory adjustment has been made;

  • a product has an incorrect cost price method;

  • a valuation layer contains an incorrect value.

Therefore, check not only the final amount but also the underlying inventory movements and entries.

Practical control with a test product

You can easily test the operation with a test product.

Use the average cost price and start without stock:

  1. Receive 8 products for € 10.

  2. Then receive 4 products for € 16.

  3. Check the average cost price of € 12.

  4. Deliver 10 products.

  5. Check a cost price of € 120 for the delivery.

  6. Check a remaining stock value of € 24.

Repeat the same test with FIFO:

  1. Receive 8 products for € 10.

  2. Receive 4 products for € 16.

  3. Deliver 10 products.

  4. Check a cost price of € 112.

  5. Check the remaining stock layer of € 32.

Make sure to perform the test without prior stock, logistics costs, returns, or negative stock. Otherwise, the outcomes may vary.

Summary

Inventory valuation in Odoo consists of more than just the value of products at a warehouse location.

The outcome is determined by:

  • the chosen cost price method;

  • the inventory movements;

  • the set product category;

  • logistics costs;

  • batches and serial numbers;

  • returns and scrap;

  • the timing of invoices;

  • closing entries and additional entries.

With perpetual inventory valuation, the inventory data in Odoo is kept up to date directly, and the financial connection between inventory, invoices, and accounting is carefully monitored.

A proper setup prevents surprises during month-end and year-end closings. Therefore, regularly check not only how much inventory you have but also how Odoo values this inventory financially.

Does your inventory value match your accounting?

Have your inventory valuation checked. We check the cost price method, product categories, accounts, logistics costs, and closing entries.

Erwin van der Ploeg

Erwin van der Ploeg

Algemeen Directeur

Erwin van der Ploeg is the owner of Odoo Experts and helps companies work smarter with Odoo. As an entrepreneur and Odoo specialist, he writes about Odoo, ERP, AI, automation, and digitalization. In doing so, he combines years of practical experience with a healthy dose of stubbornness and a clear vision: software should make processes simpler, not more complicated.

Expertise

Odoo implementation Process optimization Integrations

Read more about this topic

Accounting Inventory

Share this article