How to Give Each Serial Number Its Own Cost in Odoo 18 · Calibre Consulting

Give each serial number its own cost in Odoo 18.

Make Odoo 18 cost each serial number from the components its manufacturing order consumed, so deliveries and sales margins stop using an average.

This guide shows how to make Odoo 18 carry a separate cost for each serial number, so that each unit built to order keeps the cost of the parts that went into it. The short answer: keep the product category on average cost or first in, first out, then tick Valuation by Lot/Serial number on the product. Each manufacturing order then sets the cost of the serial it produces, and the delivery and the sales order margin use that serial's own cost instead of an average.

It is for owners, controllers and operations managers who need the real cost of each unit, for example to pay commission on margin. The steps were verified on Odoo 18 Community.

Before you start

Why AVCO or FIFO alone falls short

Take a door built twice in a test database: once from components costing 35.00 in total, and once from components costing 70.00.

With lot valuation on, AVCO and FIFO both value a one-unit serial at what it cost to make. They differ in how a serial's cost can be corrected, covered below.

Turn on valuation by serial number

  1. Open the Inventory app and go to Configuration > Product Categories. Open the category the product uses and check that Costing Method is Average Cost (AVCO) or First In First Out (FIFO). Settle this first, because Odoo locks it later.
  2. Go to Products > Products and open the product.
  3. On the General Information tab, tick Track Inventory and choose By Unique Serial Number in the field beside it. The Valuation by Lot/Serial number checkbox appears below. It stays hidden while tracking is By Quantity.
  4. Tick Valuation by Lot/Serial number. Odoo saves it straight away, so if the product already has stock, read the section on existing stock first.

How a manufacturing order sets each serial's cost

When a manufacturing order for an AVCO or FIFO product is done, Odoo adds the value of the components it consumed and the time logged on its work orders multiplied by each work center's Cost per hour. A work center is a machine or team where an operation is done, and work orders only exist when Work Orders is ticked in the Manufacturing settings. The total, divided by the quantity produced, becomes the cost of the serial.

Switching a product that already has stock

Check that it worked

  1. Complete one manufacturing order for the product and assign it a new serial.
  2. In the Inventory app, go to Products > Lots / Serial Numbers and open that serial. Cost and Total Value show what the order cost. Inventory administrators also see a Valuation button that lists its entries.
  3. Sell the unit. Odoo reserves a serial on the delivery by itself (in a test, the oldest one), so set the serial you are shipping before you validate.
  4. Open the sales order and show the Cost and Margin columns from the optional columns toggle at the end of the order lines. Cost now matches the shipped serial. Before delivery, the line shows the product's general Cost.
  5. For a full list, go to Reporting > Valuation in the Inventory app and group by Lot/Serial Number.

In Odoo 19 and 20 the checkbox is labelled Valuation by Lot/Serial and sits in the Traceability section of the product's Inventory tab.

Steps verified on Odoo 18. Menus and labels can differ on other versions.

Common questions

Does FIFO give each serial number its own cost in Odoo 18?

Not on its own. Without Valuation by Lot/Serial number, FIFO costs each shipment at the oldest unit still in stock, whichever serial is shipped. Ticking that checkbox on the product makes the shipment use the shipped serial's own cost.

Where is the Valuation by Lot/Serial number checkbox in Odoo 18?

On the product form, on the General Information tab, below Track Inventory. It appears once Track Inventory is ticked and tracking is set to By Lots or By Unique Serial Number.

How does Odoo 18 work out the cost of a manufactured serial number?

When the manufacturing order is done, Odoo adds the value of the components consumed and the work order time at each work center's Cost per hour, then divides by the quantity produced. This applies to products whose category uses AVCO or FIFO.

Can I turn on valuation by serial number for a product that already has stock?

Yes, as long as every unit in stock has a serial number. Odoo revalues the existing serials at the product's current Cost, so on AVCO they all start at the average, and you can then correct each serial's Cost on its form.

Why can't I change the costing method of a product category in Odoo 18?

If the category contains a product valued by lot/serial number that already has stock history, Odoo blocks changes to the category's costing method and Inventory Valuation setting. It also blocks moving that product to a category with a different costing method.

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 →