Odoo consultants for regulated manufacturers · code you keep

Inventory · Odoo guide

How do I fix lot tracking not working in Odoo?

Lot tracking breaks when products, categories, or operation types do not require lots, or pickings validate without lot_id on stock.move.line. Enable Lots & Serial Numbers, set product tracking to By Lots, allow lot creation on receipts, assign lots in Detailed Operations, and reserve the same lots on manufacturing component moves before posting.

By Chase Robbins, Operator & Founder at The ERP Firm · Last updated October 24, 2026

Steps

  1. Inventory → Configuration → Settings: enable Lots & Serial Numbers.
  2. Set Tracking on product.template or product.category to By Lots (or serial) for each SKU.
  3. On stock.picking.type for Receipts and Deliveries, enable Create New Lots/Serial Numbers and Use Existing Lots.
  4. Open pickings → Detailed Operations; set lot_id and quantity on each stock.move.line before Validate.
  5. For mrp.production, enable lot production and assign component lots on raw move lines.
  6. Review Inventory → Reporting → Locations → Lots/Serial Numbers for on-hand by lot.
  7. Reconcile untracked quants with a counted inventory adjustment that creates lot-specific stock.quant records.

Common mistakes

  • Tracking enabled on sales only while receipts stay untracked.
  • Validating pickings with zero lot lines while forcing quantity done.
  • Duplicating lot names across vendors without unique internal references.
  • Editing stock.quant manually in SQL instead of through move lines.
  • Disabling tracking on category after products inherited lot settings inconsistently.

Odoo version notes

Lot traceability uses stock.lot and stock.move.line in Community and Enterprise on Odoo 16, 17, and 18. Enterprise adds advanced barcode apps but shares the same models. Custom modules that bypass move lines can break reports. After upgrades, re-test operation types because studio or migrated XML IDs sometimes reset picking type flags.

FAQ

Follow-up questions

Why does Odoo say lot is required?
The product is tracked and the operation type enforces lot entry; fill lot_id on each move line or disable enforcement only if policy allows.
Can one lot span multiple products?
No—stock.lot is tied to product_id; use distinct lot records per SKU even if supplier lot numbers match.
How do I fix old transactions?
Use controlled inventory adjustments or reverse moves; do not post new deliveries until on-hand quants carry correct lot_id values.
Does Odoo.sh differ from on-prem?
Configuration is the same; ensure staged upgrades copy lot settings on picking types and barcode rules.

Book a scoping call for your Odoo environment.

Bring your version, user count, and the workflow that is blocked today.

Book a scoping call