Few things undermine trust in an ERP faster than inventory that doesn’t match reality. If Odoo says you have 50 units but the shelf has 42, the temptation is to blame the system. But Odoo records exactly what it’s told — discrepancies almost always trace to a process gap. Here’s how to find and fix the real cause.
First: Odoo Isn’t Lying
Odoo’s inventory reflects the transactions entered into it. A discrepancy means reality and the recorded transactions have diverged — something physical happened that wasn’t recorded, or something recorded didn’t happen physically. The fix is finding that gap, not distrusting the system.
The Common Root Causes
| Root Cause | How It Happens |
|---|---|
| Unrecorded movements | Stock moved/used without a transaction |
| Receiving errors | Quantities received not matching POs |
| Wrong units of measure | Boxes vs units confusion |
| Damage/waste not logged | Spoilage or breakage uncounted |
| Theft/shrinkage | Stock removed without record |
| Timing differences | Counted before a transaction posted |
Step 1: Quantify and Isolate
Use Odoo’s inventory reports to identify which products have discrepancies and how large. Patterns matter — if discrepancies cluster on certain products, locations, or times, that points to the cause.
Step 2: Check the Transaction History
Odoo logs every stock move. For a discrepant product, review its movement history — receipts, deliveries, transfers, adjustments. Often the gap becomes visible: a receipt that doesn’t match the PO, a missing movement, a double entry.
Step 3: Investigate the Likely Causes
- Unrecorded movements: Are people moving stock without recording it in Odoo?
- Units of measure: Is someone entering boxes where Odoo expects units?
- Receiving accuracy: Are received quantities being verified against POs?
- Waste/damage: Is spoilage being logged or just discarded?
Step 4: Correct With an Inventory Adjustment
Once you understand the cause, correct the stock with a proper inventory adjustment in Odoo (not by editing records directly). This brings the system in line with reality while keeping an auditable record of the correction.
Step 5: Prevent Recurrence
The real fix is process, not just adjustment:
- Ensure all stock movements are recorded in real time (barcode scanning helps enormously)
- Verify received quantities against POs at receiving
- Standardize units of measure and train staff
- Log waste and damage as it happens
- Run regular cycle counts to catch issues early
Cycle Counting: The Ongoing Defense
Rather than one disruptive annual stocktake, implement cycle counting — regularly counting subsets of inventory. Odoo supports this, and it catches discrepancies while they’re small and traceable, keeping accuracy consistently high.
We’ll diagnose the root cause and set up processes to keep your Odoo inventory accurate.
Get Inventory Help