Introduction
Managing expired inventory is crucial for businesses dealing with perishable goods, pharmaceuticals, food products, or any time-sensitive stock. Odoo’s Inventory Management module provides an efficient way to identify and scrap expired items, ensuring compliance, reducing storage costs, and maintaining accurate stock records.
This guide will walk you through the process of finding, verifying, and scrapping expired inventory in Odoo, along with best practices for automation and reporting.
Why Scrap Expired Inventory in Odoo?
- Regulatory Compliance – Avoid penalties for holding expired goods (especially in pharmaceuticals & food industries).
- Reduce Storage Costs – Free up warehouse space by removing unusable stock.
- Prevent Accidental Sales – Ensure expired items are not shipped to customers.
- Accurate Financial Reporting – Write off expired stock to maintain correct valuation.
Step 1: Identify Expired Inventory
Before scrapping, locate expired batches in Odoo:
Method 1: Using the Lot/Serial Number Report
- Go to: Inventory → Reporting → Lot/Serial Numbers
- Apply a filter:
- "Expiration Date" → "is set"
- "Expiration Date" → "≤ today’s date"
- Review the list of expired batches.
Method 2: Using the Product Expiry Dashboard (Odoo 16+)
- Navigate to: Inventory → Dashboard → Expired Products (if available).
Method 3: Automated Alerts (Optional)
Set up scheduled actions to notify your team before expiry:
- Go to: Settings → Automation → Scheduled Actions
- Create a new rule to scan and email reports on expired stock.
Step 2: Scrap Expired Inventory
Once identified, remove expired stock from circulation using Odoo’s Scrap feature.
Option A: Manual Scrapping (Single Batch)
- Go to: Inventory → Operations → Scrap
- Select:
- Product (expired item)
- Lot/Serial Number (specific expired batch)
- Quantity to scrap
- Reason (optional: "Expired," "Damaged," etc.)
- Click Validate to confirm removal.
Option B: Bulk Scrapping (Multiple Batches)
- From the Lot/Serial Numbers report, select multiple expired batches.
- Click Action → Scrap Selected Lots.
- Confirm details and validate.
Option C: Automated Scrapping (Advanced)
For businesses with high expiry rates, automate scrapping via:
- Custom Python Script (via Odoo Studio or developer mode).
- Third-Party Apps (e.g., "Auto Scrap Expired Inventory" from Odoo App Store).
Step 3: Post-Scrapping Actions
A. Update Accounting (If Using Odoo Accounting)
- Expired stock write-offs can be recorded as losses in:
- Accounting → Journal Entries (linked to inventory adjustments).
B. Generate Scrap Reports
- Go to: Inventory → Reporting → Scrap Orders
- Filter by date/product for audit trails.
C. Analyze Expiry Trends
- Use Inventory Aging Report to identify frequent expiry issues.
- Adjust procurement strategies (e.g., order smaller batches).
Best Practices for Managing Expired Inventory
✔ Regular Audits – Schedule monthly expiry checks.
✔ FEFO (First-Expired-First-Out) – Prioritize near-expiry stock in sales.
✔ Supplier Returns – If possible, return defective/expired batches to vendors.
✔ Barcode Scanning – Use Odoo’s barcode app to speed up expiry checks.
Troubleshooting Common Issues
❌ Problem: No "Scrap" button visible.
✅ Fix: Ensure user has Inventory Manager access rights.
❌ Problem: Expired stock still appears in available quantity.
✅ Fix: Check if lots were properly reserved/scrapped.
❌ Problem: Need expiry alerts for specific products.
✅ Fix: Use Automated Actions or the Quality Module for custom alerts.
Conclusion
Scrapping expired inventory in Odoo ensures regulatory compliance, accurate stock records, and cost savings. By following this guide, you can:
- Quickly identify expired batches using filters/reports.
- Remove obsolete stock with manual or bulk scrapping.
- Automate alerts to prevent future expiry losses.
For advanced automation, consider Odoo’s PLM or Quality modules for deeper expiry management.