Negative stock means stock.quant quantity went below zero because deliveries or manufacturing consumed before receipts posted, or because inventory settings allow negative. Disable Allow Negative Stock on products or categories unless policy requires it, post missing receipts or adjustments, and re-run scheduler to fix reservations. Find root moves with Inventory → Reporting → Stock.
Steps
- Inventory → Settings: review Allow Negative Stock global and per-product via product or category.
- Identify negative quants: Inventory → Reporting → Locations or product On Hand with negative quantity filter.
- Open related stock.move lines that validated without available quants; note picking and user.
- Post compensating receipts or inventory adjustments with correct lot and location to restore zero or positive quants.
- Enable reservation enforcement on operation types if bypass was used via force availability.
- For MRP, confirm component availability before marking MO done; use backorder or partial production.
- Document policy change in SOP and train warehouse to scan before validate on outbound pickings.
Common mistakes
- Fixing only the quant without reversing the offending stock.move.
- Leaving force done enabled on picking types for speed.
- Adjusting parent location while child quants remain negative.
- Ignoring subcontracting locations in quant checks.
- Re-enabling negative stock to silence errors instead of fixing timing.
Odoo version notes
Negative stock control is in stock for Odoo 16–18 Community and Enterprise. Barcode apps can still validate if configuration allows bypass. Version 17 reservation changes may surface latent timing issues after upgrade. Custom modules calling button_validate without availability checks are a common culprit on Odoo.sh.
When to bring in help
If the fix touches custom modules, regulated traceability, or production outages, a focused rescue sprint beats months of trial and error. See our Odoo service.