Traceability as an Operational Decision
Building on our previous article on how inventory flows work in Odoo 19, where we broke down stock movements, operations, and location structure, the next layer to understand is how inventory is identified and controlled as it moves through the system.
When traceability is enabled, Odoo no longer simply records that ten units of a product moved through the warehouse. It records which ten units, where they came from, where they went, and when each movement occurred. This distinction matters most when something goes wrong: a product recall, a quality issue, a warranty claim, or an operational discrepancy.
As outlined in our breakdown of inventory flows in Odoo 19 article, Odoo supports three tracking methods: by quantity, by lot, and by serial numbers. For most distribution environments, quantity tracking is sufficient. Lot and serial tracking exist for situations where knowing the identity of a product, not just the count, becomes operationally or strategically important.
This article breaks down how lot and serial number tracking work in Odoo 19, how to configure them correctly, and where implementation risks typically emerge.
Lots vs. Serial Numbers: Understanding the Distinction
Before configuring anything, it is worth being clear about what each method actually tracks and when each is appropriate.
Lot tracking assigns a shared identifier to a group of products received or produced together. Multiple units are tied to the same lot number, allowing those units to be managed and moved collectively. This is typically used when traceability is required at the batch level, such as a shipment of 500 units received from a supplier or items produced in a single manufacturing run. If an issue arises, the entire batch can be identified and traced across operations.

Serial number tracking assigns a unique identifier to every individual unit. Each item is tracked independently, with its own movement history throughout the system. This is required when products need to be managed at the unit level, such as electronics, machinery, medical devices, or any item with a distinct warranty or service lifecycle.

The distinction is operational as much as it is conceptual. Lot tracking allows multiple units to be handled under a single identifier, meaning quantities can be split, moved, or reserved across operations while maintaining batch-level traceability. Serial tracking enforces a one-to-one relationship between the product and its identifier, requiring each unit to be individually assigned, moved, and validated at every step.
The rule of thumb is straightforward: if a quality or operational issue would affect a group of identical products equally, use lots. If each individual unit needs its own distinct history, use serial numbers.
Choosing the wrong method has real consequences. Serial tracking applied where lot tracking would suffice introduces unnecessary operational overhead, requiring warehouse staff to assign and validate a unique identifier for every unit across receipts, transfers, and deliveries. Lot tracking applied where unit-level traceability is required creates gaps in visibility, making it difficult to isolate issues or trace specific items accurately.
Getting this decision right before configuration begins prevents significant operational friction later.
Enabling Lot and Serial Number Tracking
Lot and serial number tracking is activated in Inventory → Configuration → Settings, under the Traceability section. Enabling the Lots & Serial Numbers checkbox activates the feature system-wide.

Once this setting is enabled, additional traceability options become available.

Display Lots & Serial Numbers on Delivery Slips. When enabled, lot or serial number identifiers are printed on delivery documentation. This is useful when customers require this information for warranty tracking, product recalls, or internal validation.
Expiration Dates. When enabled, date-based tracking fields become available on lots and serial numbers. This allows products to be managed based on expiry, removal, and alert dates, and is covered in more detail later in this article.
Odoo also includes GS1 barcode support for lots and serial numbers. This is typically only relevant for businesses using GS1-standard labeling and scanning workflows.
Enabling the setting at the system level is only the first step. The feature must then be configured at the product level and, separately, at the operation type level.
Configuring a Product for Lot or Serial Tracking
On the product form, open the General Information tab and locate the Track Inventory field. Enable it, then select either By Lots or By Unique Serial Number from the dropdown, and save the product record.

From this point forward, Odoo will require a lot or serial number to be assigned whenever this product moves through a tracked operation.
One important consideration is how this change affects existing stock. If a product already has on-hand quantities without assigned lot or serial numbers, Odoo will display a warning when tracking is enabled. The existing inventory must then be corrected using an inventory adjustment to assign the missing identifiers.

This step should be planned carefully. Enabling tracking on an active product without a clear process can introduce inconsistencies in the traceability records that are difficult to correct later.
Configuring Operation Types
Enabling the feature at the system level and configuring it on the product are only part of the setup. Operation types must also be configured to control when lot and serial numbers can be created or used.

Navigate to Inventory → Configuration → Operation Types and open the operation type you want to configure — typically Receipts, Delivery Orders, or internal transfers.

In the Lots and Serial Numbers section of each operation type, two settings control how numbers are handled during that operation.
Create New lets you generate new lot or serial numbers during the operation. This is usually enabled for receipts, where products are entering your inventory for the first time.
Use Existing Ones lets you select lot or serial numbers that are already in the system. This is typically enabled for deliveries and internal transfers, so you’re always working with numbers that already exist in inventory.
By default, Odoo allows new numbers to be created on receipts, but not on deliveries. Existing numbers work the opposite way. This setup follows how inventory should flow. New numbers are introduced when stock comes in, and then those same numbers are used as the products move or get shipped out.
You can change these settings, but it should be done carefully. For example, if you allow new serial numbers to be created on delivery orders, you risk assigning numbers that were never actually received into inventory.
Assigning Lot and Serial Numbers at Receipt
When a purchase order is confirmed and a receipt is created for a product tracked by lot or serial number, Odoo requires those numbers to be assigned before the receipt can be validated. If they are missing, an error will appear prompting you to supply a lot or serial number before continuing.

To assign them, go to the Operations tab on the receipt and click Details next to the product line. This opens a Detailed Operations window where lot or serial numbers are entered alongside the quantity being received.
Access the Details window from the Operations tab

With lot tracking, you can assign a single lot number to the full quantity or split it across multiple lots if the shipment includes different batches. With serial tracking, each unit requires its own number, so every item must be entered individually.
A single lot number can be assigned to the full quantity.
Serial tracking requires a unique number for each individual unit.
If a large number of identifiers need to be assigned, they can be generated or imported in bulk using the Generate Serials/Lots or Import Serials/Lots options. This is commonly used when suppliers provide a predefined list of numbers.

Once all required lot or serial numbers have been assigned, the receipt can be validated.
Assigning Lot and Serial Numbers at Delivery
When a sales order is confirmed and includes products tracked by lot or serial number, Odoo automatically creates a delivery order and, if the product is available, reserves the corresponding lots or serial numbers from inventory based on the configured removal strategy.
To see what has been reserved, open the delivery order, go to the Operations tab, and click Details next to the product line. This opens the Detailed Operations window, where the assigned lot or serial numbers are displayed.
Access the Details window from the Operations tab to view reserved lot or serial numbers.

The removal strategy determines which stock is picked by default. These strategies are typically configured at the product category level, which we covered in our article on structuring product categories in Odoo 19. We will explore removal strategies in more detail in a separate article.
If needed, the assigned lot or serial numbers can be adjusted directly in this window. For lot-tracked products, quantities can be split across multiple lots by adding lines and adjusting the quantities. For serial-tracked products, each unit must be assigned its own number.
A lot number can be assigned to the full delivery quantity.
Serial tracking requires each individual unit being delivered to be assigned a unique number.
Once the correct lot or serial numbers have been assigned, saved, and validated, the assigned lot or serial numbers are recorded on the delivery slip and become part of the product’s traceability history.
The Lots/Serial Numbers Dashboard
All lot and serial numbers in the system are accessible through Inventory → Products → Lots/Serial Numbers.

This dashboard provides a centralized view of every identifier in the system, grouped by location. Each record can be expanded to show which lot numbers exist, which products are associated, and their on-hand quantities,

Clicking into an individual lot or serial number opens its detail record, which shows the product it belongs to, any internal reference tied to that identifier, and its company assignment in multi-company environments. It also surfaces the current inventory tied to that lot or serial number, including the on-hand quantity and the location where it is stored.

From this record, two smart buttons are available to further operationalize inventory visibility and traceability:
Location
Shows where the inventory associated with this lot or serial number currently exists in the warehouse.

Traceability
Opens the full traceability report for this identifier. This report captures every stock movement tied to that lot or serial number, including the source document (reference), product, date, and the locations involved. It serves as the primary tool for tracing a product forward or backward through its entire lifecycle, from supplier receipt through internal transfers to final delivery.

This is one of the core strengths of lot and serial tracking in Odoo. During a recall or quality issue, you have immediate access to the complete movement history of affected inventory, making it possible to trace its origin and distribution with precision.
Expiration Dates and FEFO
For businesses handling perishable or time-sensitive products, Odoo extends lot and serial tracking to include date-based controls through the Expiration Dates feature.
This feature is enabled separately in Inventory → Configuration → Settings, in the Traceability section, and is only available once Lots & Serial Numbers has already been activated.

Once expiration date tracking is enabled at the system level, it must then be configured on each relevant product within the Inventory tab.

At the product level, four date rules can be defined. These are not entered manually per transaction. Instead, they are used by Odoo to automatically calculate dates for each lot or serial number based on the receipt date.
The four date types are:
Expiration Date
Defines when the product is no longer considered safe or usable. This is the primary date used for compliance and regulatory purposes.
Best Before Date
Indicates when the product may begin to decline in quality, while still remaining safe for use. This is typically used for informational or quality control purposes.
Removal Date
Determines when the product should be removed from available stock. This date directly drives the FEFO (First Expired, First Out) removal strategy in Odoo.
Alert Date
Specifies when the system should flag the product as approaching expiration. Once reached, the lot or serial number appears in expiration alerts and can trigger notifications for the responsible user.

Once these rules are configured, the corresponding dates are automatically assigned to each lot or serial number at the time of receipt, ensuring that every batch or unit is tracked according to its actual lifecycle. These dates can be viewed directly on the lot or serial number record or surfaced in the Lots/Serial Numbers dashboard by enabling the relevant columns.
FEFO and How It Works in Practice
The First Expired, First Out (FEFO) removal strategy relies on these expiration dates to determine which lots are selected when fulfilling orders.
Rather than selecting stock based on receipt date (as FIFO does), FEFO selects the lots with the nearest removal date first. This ensures that inventory approaching its removal threshold is consumed before stock that has more time remaining.
If a single lot does not have enough stock to fulfill the order, Odoo draws from the next lot in removal date order automatically, without any manual intervention required.
Traceability in Manufacturing
Lot and serial number tracking also extends into manufacturing when the Manufacturing module is installed.
When a manufacturing order is confirmed for a tracked product, a Lot/Serial Number can be assigned or generated, ensuring traceability continues through production. For serial-tracked items, Odoo handles each unit individually to maintain precise tracking.
We’ll cover this in more detail in a separate manufacturing-focused article.
Implementation Risks to Understand
Lot and serial number tracking is one of the more unforgiving areas of Odoo configuration. Several risks are worth understanding before enabling these features.
Enabling tracking on products with existing, unassigned stock. Turning on lot or serial tracking after stock is already in the system creates a mismatch. Odoo knows a quantity exists but has no identifier to associate it with. This requires a structured inventory adjustment process to correct and, if done improperly, can produce inconsistent records that persist in the traceability history.
Choosing serial tracking where lot tracking is sufficient. Serial tracking requires a unique identifier for every single unit moving through every operation. The operational overhead is significant. For products where batch-level traceability meets the business requirement, lot tracking is almost always the better choice.
Not configuring operation types correctly. If Create New is inadvertently left enabled for delivery orders, warehouse staff can assign serial numbers that do not exist in the system, creating phantom inventory records. Operation type settings should be reviewed deliberately as part of any traceability implementation.
Adding traceability as an afterthought. Lot and serial number tracking reshapes how every warehouse operation is performed. Receiving, picking, transfers, and adjustments all change when identifiers are required. Introducing this after a team has already formed its operational habits tends to create resistance and errors. It is significantly easier to build the discipline from the start.
When to Use Each Method: A Summary
The framework is simple, but the consequences of getting it wrong are not.
Lot tracking is best suited for situations where products need to be managed in groups. This is common in industries like food, beverages, pharmaceuticals, and chemicals, where a quality issue can impact an entire batch.
Serial tracking is the right choice when each unit needs to be treated as its own entity. This applies to products like electronics, machinery, and medical devices, where warranty, service, or compliance is handled at the individual level.
For most distribution environments, standard quantity tracking without lot or serial assignment remains the most practical approach. In many cases, the added complexity of traceability does not justify the operational overhead.
The wrong level of tracking can compromise how products are managed across the business, leading to inaccurate inventory, broken workflows, and unreliable reporting.
Final Thoughts
Lot and serial number tracking in Odoo is a high-impact capability that, when implemented correctly, provides full visibility into where inventory originates and how it moves through the business.
The configuration itself is straightforward. Enabling the feature, setting it on products, adjusting operation types, and assigning identifiers at receipt are all simple steps once the underlying logic is understood.
What tends to get overlooked are the decisions that come before configuration. Which products require traceability? At what level should it be applied? How should existing inventory be handled? How will identifier assignment fit into day-to-day warehouse operations?
These choices shape how effective the system will be in practice. When thought through early, traceability becomes a natural part of operations. When rushed or treated as a setup task, it often results in gaps, inconsistencies, and limited visibility when it matters most.
Frequently Asked Questions: Lot and Serial Number Tracking in Odoo 19
What is the difference between lot tracking and serial number tracking?
Lot tracking assigns a shared identifier to a group of products, allowing traceability at the batch level. Serial tracking assigns a unique identifier to each individual unit. Lots are appropriate when a quality event would affect an entire batch; serial numbers are used when each unit needs its own distinct history.
When should I enable lot or serial tracking?
When the business has a regulatory, quality, or operational requirement to trace products beyond overall quantity. Common use cases include food and beverage, pharmaceuticals, chemicals, electronics, and high-value manufactured goods.
What happens if I enable tracking on a product that already has stock?
A warning will appear. The existing inventory will need to be corrected using an inventory adjustment to assign lot or serial numbers retroactively. This process should be planned carefully to avoid creating inconsistent records.
How do I trace where a specific lot or serial number has been?
Navigate to Inventory → Products → Lots/Serial Numbers, select the identifier, and click the Traceability smart button. This opens a complete movement history showing every stock transaction associated with that identifier.
Can I print lot or serial numbers on delivery documentation?
Yes. Enable the Display Lots & Serial Numbers on Delivery Slips setting in Inventory → Configuration → Settings. Once enabled, these identifiers will appear on validated delivery slips.
What is the operational impact of enabling serial tracking?
Significant. Every individual unit must have a unique identifier assigned at receipt and confirmed at delivery. This adds scanning and verification steps to every warehouse operation involving that product. The operational overhead should be weighed against the traceability benefit before enabling serial tracking.