Odoo's Inventory module is one of the most powerful parts of the platform โ but it's also one of the most complex to set up correctly. Get the foundations right and you'll have accurate stock levels, automated reordering, and seamless integration with sales, purchasing, and accounting. Get them wrong and you'll be chasing stock discrepancies for months.
This guide walks through the complete setup process from scratch.
Step 1: Install and configure the Inventory module
- Go to Apps and install Inventory. This will also install the base Stock module.
- Navigate to Inventory > Configuration > Settings.
- Under Operations, enable Storage Locations if you need to track where items are within a warehouse (racks, bins, shelves).
- Enable Multi-Step Routes if you need pick โ pack โ ship workflows rather than simple one-step delivery.
- Under Traceability, enable Lots & Serial Numbers if you track products by batch or individual serial.
- Under Warehouse, enable Multi-Warehouse if you operate from more than one location.
Don't enable every setting at once. Start with what you actually need. You can always enable additional features later. Turning on features you don't use creates unnecessary complexity in daily operations.
Step 2: Set up your warehouse(s)
Odoo creates a default warehouse when you install Inventory. Configure it to match your physical setup:
- Go to Inventory > Configuration > Warehouses.
- Edit your default warehouse. Set the Short Name (e.g., "MEL" for Melbourne) โ this appears on all operations.
- Set the Address to your physical warehouse address.
- Configure Shipment steps: Choose between 1-step (deliver goods directly), 2-step (pick + ship), or 3-step (pick + pack + ship) based on your workflow.
- Configure Reception steps: Choose between 1-step (receive directly into stock), 2-step (receive into input zone, then store), or 3-step (receive, quality check, then store).
- For additional warehouses, click New and repeat. Each warehouse gets its own set of locations, operations, and stock rules.
Step 3: Define locations within your warehouse
If you enabled Storage Locations, set up your physical layout:
- Go to Inventory > Configuration > Locations.
- Your warehouse already has default locations: Stock, Input, Output, Packing Zone.
- Add child locations to represent your physical layout. Common structure: Warehouse > Zone > Rack > Shelf > Bin. Example: MEL/Zone-A/Rack-01/Shelf-02.
- Keep naming consistent and logical. Your warehouse team needs to find products quickly.
- Set Location Type to "Internal Location" for all physical storage locations.
- For returns, create a dedicated Returns location to hold returned goods before they're inspected and restocked.
Step 4: Configure products for inventory tracking
Product configuration is critical. Every inventory problem can be traced back to incorrect product setup:
- Go to Inventory > Products > Products and create or edit a product.
- Set Product Type to "Storable Product" for anything you want to track in inventory. "Consumable" products don't track stock levels. "Service" products have no physical inventory.
- Set the Internal Reference (SKU). This is the code your team will search and scan. Keep it structured โ e.g., "ELEC-CABLE-CAT6-30M".
- Under the Inventory tab, set the Weight and Volume if relevant for shipping calculations.
- Set the Barcode โ either your product's existing barcode (EAN-13, UPC) or a custom internal barcode.
- Configure Tracking โ "No Tracking" for generic products, "By Lots" for batch-tracked goods (e.g., food, chemicals), or "By Unique Serial Number" for individually tracked items (e.g., electronics, equipment).
- Under Routes, select how this product moves: "Buy" (purchased from vendors), "Manufacture" (produced in-house), or both.
Step 5: Set up stock valuation
Stock valuation determines how your inventory is valued on your balance sheet and impacts your cost of goods sold. Get this right before entering any stock:
- Go to Inventory > Configuration > Product Categories.
- For each category, set the Costing Method:
- Standard Price โ Fixed cost per unit. You set the price manually. Best for businesses with stable, predictable costs.
- Average Cost (AVCO) โ Running weighted average recalculated with each purchase. Best for most wholesale and distribution businesses.
- First In, First Out (FIFO) โ Costs are tracked per incoming lot. Most accurate but most complex. Required for some industries and tax situations.
- Set Inventory Valuation to "Automated" to have stock movements automatically create accounting journal entries. This keeps your balance sheet in sync with your warehouse.
- Configure the Stock Input Account, Stock Output Account, and Stock Valuation Account to match your chart of accounts.
Choose your costing method carefully โ changing it after go-live with existing stock is painful. For most Australian wholesalers and distributors, AVCO (average cost) is the best balance of accuracy and simplicity. Discuss this with your accountant before deciding.
Step 6: Enter opening stock
Before go-live, you need to enter your current stock levels into Odoo:
- Go to Inventory > Operations > Inventory Adjustments.
- Click New to create a new adjustment.
- You can enter products one by one, or use the Import function to upload a spreadsheet with product references, locations, quantities, and costs.
- For each product, set the Counted Quantity to your actual on-hand stock and the Unit Cost to the current value.
- Double-check high-value items and fast-moving products โ errors here will compound.
- Once verified, click Apply All to confirm the adjustment. This creates stock moves and, if automated valuation is enabled, the corresponding accounting entries.
Step 7: Configure reorder rules
Automated reordering is where Odoo saves serious time for wholesale businesses:
- Go to Inventory > Operations > Replenishment and click Reordering Rules.
- Click New and select a product.
- Set the Location (which warehouse/location to monitor).
- Set Min Quantity โ when on-hand stock falls to this level, Odoo triggers a replenishment. Base this on your lead time and average daily sales.
- Set Max Quantity โ Odoo will order enough to bring stock up to this level.
- Set the Route โ "Buy" to create a purchase order, "Manufacture" to create a production order.
- Set the Preferred Vendor and Vendor Lead Time so purchase orders are created with the right supplier and expected delivery dates.
- Run the scheduler manually to test: Inventory > Operations > Run Scheduler. The scheduler also runs automatically on a schedule (typically daily).
Step 8: Set up barcode scanning
If you're running a warehouse operation, barcode scanning is essential:
- Install the Barcode module from Apps.
- Go to Inventory > Configuration > Settings and ensure Barcode Scanner is enabled.
- Ensure all products have barcodes set (existing product barcodes or internal codes).
- Ensure all storage locations have barcodes printed and posted at each location.
- Access the barcode interface from Inventory > Barcode. This opens a mobile-optimised interface for warehouse operations.
- You can use dedicated USB/Bluetooth barcode scanners, or use the Odoo mobile app on smartphones and tablets with camera-based scanning.
- Test the full workflow: scan a location, scan products, validate quantities, and confirm the operation.
Step 9: Configure reporting and dashboards
- Stock on hand report โ Inventory > Reporting > Inventory Report. Shows current stock levels by product, location, and lot/serial.
- Stock valuation โ Inventory > Reporting > Valuation. Shows the total value of your inventory, broken down by product and category.
- Moves analysis โ Inventory > Reporting > Moves Analysis. Analyse stock movements over time โ useful for identifying fast/slow movers.
- Forecasted stock โ On each product form, the Forecasted smart button shows expected future stock levels based on incoming purchases and outgoing sales.
- Create custom dashboards by pinning reports to your favourites for at-a-glance visibility.
Step 10: Test before go-live
Before launching inventory in production, test the complete cycle:
- Create a purchase order, receive the goods, and verify stock levels update correctly.
- Create a sales order, confirm it, pick/pack/ship, and verify stock decreases and the accounting entries are correct.
- Run a stock adjustment and verify the inventory valuation report matches.
- Test barcode scanning for receiving and picking operations.
- Test reorder rules by dropping a product below its minimum and verifying a purchase order is generated.
- Run a cycle count and verify the adjustment process works correctly.
- Confirm that accounting journal entries for stock movements are posting to the correct accounts.
Common mistakes to avoid
- Skipping product data cleanup โ Garbage in, garbage out. Clean your product master data before importing. Duplicate products, missing barcodes, and incorrect costs will create chaos.
- Wrong costing method โ Changing costing methods after go-live with existing stock is extremely difficult. Decide before you enter any inventory.
- Not training warehouse staff โ The system is only as good as the people using it. Invest in proper training for receiving, picking, and stocktake processes.
- Over-complicating locations โ Don't create a location for every shelf in a small warehouse. Start simple and add granularity as needed.
- Ignoring the accounting integration โ Inventory and accounting must be set up in coordination. Stock valuation accounts, COGS accounts, and journal mappings need to be correct from day one.
Setting up inventory in Odoo takes planning and precision, but once it's running, you'll have a system that gives you real-time visibility into your stock, automates your replenishment, and keeps your financials accurate. If you need help getting it right, get in touch.