All posts
Functional4 min read

Auditing Product Movement History in Odoo Inventory

Trace the complete movement history of any product in Odoo - tracking every receipt, delivery, internal transfer, and adjustment to understand exactly where stock came from and went.

Product Movement History in Odoo#

Every inventory movement in Odoo is recorded as a stock move - creating a permanent audit trail. Tracing this history answers questions like: "Where did these units come from?" "When did we ship this batch?" "What happened to the missing units?"

Accessing Stock Move History#

Inventory → Products → [Product] → In/Out (smart button) or:

Inventory → Reporting → Moves Analysis:

  • Filter by product
  • Date range for the audit period
  • Location (from or to)

Stock Move Record Details#

Each stock move shows:

  • Date: when the move occurred
  • From → To: origin and destination locations
  • Quantity: units moved
  • Lot/Serial Number: tracking reference (if applicable)
  • Source Document: the PO, SO, MO, or manual transfer that generated this move
  • State: Done / Ready / Cancelled

Traceability for Lot-Tracked Products#

Inventory → Products → Lots/Serial Numbers → [Lot]:

  • Traceability tab: full chain of custody

- Received from vendor (PO/2027/00245)

- Used in manufacturing order (MO-00891)

- Shipped to customer (Delivery/2027/00623)

This chain satisfies recall requirements: given a lot number, you can identify every customer who received product from that lot.

Inventory Valuation History#

For products using automated valuation:

Inventory → Reporting → Inventory Valuation:

  • Value at each date: what was the inventory worth on the balance sheet?
  • Drill down: which moves caused the value changes?

Reconciling with Accounting#

The physical inventory movements should match the accounting entries exactly:

  • Each stock move → a valuation layer → a journal entry
  • If they don't match: investigate unposted moves or manual journal entries not linked to stock moves

Accounting → Reporting → General Ledger → filter by the Inventory account → compare to Inventory Valuation report for the same period.

Common Investigation Scenarios#

"Why is our stock lower than expected?"

→ Inventory Moves filtered by product + date range → look for unexpected deliveries, scrap, or negative adjustments

"Where did lot X go?"

→ Lot traceability report → trace from vendor receipt to customer delivery

"Was this product received before or after the price change?"

→ Stock move date on the PO receipt → compare to the price change date in the price history

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free