Odoo Inventory Setup: A Practical Guide for Growing Businesses
A misconfigured inventory module doesn't just produce wrong reports — it ships wrong orders to real customers. Here's how to set up Odoo Inventory correctly the first time.
Get This Right the First Time
Inventory is where Odoo shines brightest and where bad configuration hurts most. A misconfigured accounting module means wrong reports. A misconfigured inventory module means wrong shipments, wrong stock levels, and angry customers. The stakes are different because inventory errors hit your customers directly.
This guide is for businesses managing physical products, shipping to customers, receiving from vendors, and needing accurate stock levels. Not a demo walkthrough — a real setup guide.
Step 1: Define Your Warehouse Structure
Before touching Odoo, answer these on paper:
- How many physical locations store inventory?
- Within each location, do you need to track zones (shelving, receiving dock, QC area)?
- Do you ship from multiple locations?
- Do you transfer stock between locations?
Single Warehouse
If you operate from one location, Odoo’s default warehouse config works out of the box. One warehouse, three default locations: input (receiving), stock (main storage), output (shipping). For most businesses under 5,000 SKUs, this is sufficient.
The key decision: do you need a receiving step before stock goes to shelves? If products go straight from the delivery truck to the shelf, use one-step receipt (receive directly to stock). If you inspect incoming goods, use two-step (receive to input, then transfer to stock after inspection). Three-step adds a quality control location between input and stock.
Find this under Inventory > Configuration > Warehouses. Select your warehouse and check the “Shipments” section for incoming and outgoing step options.
Multi-Warehouse
For multiple locations, create a separate warehouse per physical location. Each gets its own address, stock, and receipt/delivery workflow.
Critical settings:
- Resupply routes: If Warehouse B can request stock from Warehouse A, enable inter-warehouse resupply routes.
- Default warehouse per user: Warehouse workers should see their location by default. Set this in user preferences.
- Delivery orders: Decide whether orders ship from the nearest warehouse, a primary warehouse, or based on availability.
Step 2: Product Configuration That Scales
Product Types Matter
Odoo has three product types. Choosing wrong causes real problems:
- Storable Product: Tracked in inventory. Has on-hand, incoming, and outgoing quantities. Use this for any physical product you stock. This is your default.
- Consumable: Not tracked. Quantities are always assumed available. Use for packing materials or office supplies where tracking isn’t worth the effort.
- Service: No physical product. Use for labor, consulting, or warranties.
The most common mistake: setting products as “Consumable” to avoid dealing with initial stock counts. Odoo never says “out of stock” for consumables, so you discover the problem when a customer orders something you don’t have. On paper, inventory looks fine. In reality, the shelf is empty.
Product Variants
If you sell products in multiple sizes, colors, or configurations, use variants instead of separate products. A T-shirt in three sizes and four colors should be one product with variants, not twelve separate products.
Set up variant attributes (Size, Color) under Inventory > Configuration > Attributes. On the product form, add attributes and specify values. Odoo generates all valid combinations automatically.
When to use variants vs. separate products:
- Variants: items share the same base description, differ only in defined attributes (size, color, material)
- Separate products: items are fundamentally different, even if related (a laptop and its carrying case)
Product Categories Drive Accounting
Product categories in Odoo aren’t just organizational — they control accounting behavior. Each category defines which accounts receive inventory transactions, the costing method (standard, average, or FIFO), and whether valuation is manual or automated.
For most growing businesses: automated valuation with average cost. Odoo automatically updates financial records when inventory moves, and product costs adjust as you purchase at different prices over time.
Configure under Inventory > Configuration > Product Categories. Get this right before importing products. Changing costing methods after transactions exist is a headache you don’t want.
Step 3: Reordering Rules That Actually Work
Reordering rules are the most powerful feature most businesses either set up wrong or skip entirely.
How They Work
A reordering rule says: “When Product X drops below Y units, create a purchase order to bring it back to Z.” The scheduler runs periodically (default: daily) and checks all rules against current stock.
Setting the Right Parameters
For each product needing automatic replenishment:
- Minimum quantity: Your lead time demand — how many units you’ll sell while waiting for a new order to arrive.
- Maximum quantity: Minimum plus your desired safety buffer.
- Quantity multiple: Round orders to this number. If your vendor ships in cases of 24, set this to 24.
Real example: You sell ~10 units/week. Vendor takes 2 weeks to deliver. Minimum = 20 (2 weeks of demand). Maximum = 40 (adds 2 weeks safety stock). Quantity multiple = 12 (vendor ships in dozens).
Common Reordering Mistakes
- Setting minimum to zero. You’ll hit stockout before the reorder triggers because the purchase still takes time to arrive. Zero means you’re always late.
- Forgetting vendor lead times. Without a defined delivery lead time on the product’s Purchase tab, the scheduler can’t calculate timing correctly.
- Not running the scheduler. Reordering rules don’t trigger in real-time. The scheduler must run (Inventory > Operations > Run Scheduler, or via cron job). Make sure it runs daily at minimum.
Step 4: Routes and Operations
Routes define how products move through your system. For basic setups, default routes (Buy, Manufacture) cover most needs. Routes get interesting with complex flows.
Dropshipping
Some products ship directly from vendor to customer? Enable the Dropshipping route. A sales order triggers a purchase order sent to the vendor with the customer’s delivery address. Your warehouse never touches the product.
Enable under Inventory > Configuration > Settings, then add the Dropship route to applicable products.
Make to Order
For products you don’t stock but purchase when ordered, combine Make to Order (MTO) with the Buy route. A sales order automatically triggers a purchase order. Good for slow-moving items — prevents cash sitting on shelves.
The tradeoff: longer delivery times to customers since you’re ordering after the sale. Make sure your sales team knows which products are MTO so they set correct expectations. Promising two-day delivery on a product with a three-week vendor lead time is a customer service disaster waiting to happen.
Step 5: Inventory Counts and Adjustments
No matter how perfectly you configure the system, physical inventory drifts from system inventory. Plan for it.
Initial Stock Setup
Import current stock levels via an inventory adjustment: Inventory > Operations > Physical Inventory. Enter quantities manually or import from a spreadsheet. This creates a journal entry valuing your opening stock.
Do not skip this or enter rough guesses. Spend a day doing an actual physical count. Your entire system accuracy starts here. Garbage in, garbage out — but with inventory, garbage out means wrong shipments to real customers.
Ongoing Cycle Counts
Skip the painful annual shutdown count. Use cycle counting instead — count a subset of products regularly:
- A items (top 20% by value): Count monthly
- B items (next 30%): Count quarterly
- C items (bottom 50%): Count annually
Track accuracy over time. If it drops below 95% for any category, investigate the root cause. It usually points to a process problem: receiving errors, picking mistakes, or unrecorded adjustments.
Common Setup Pitfalls
- Forgetting units of measure. If you buy in cases but sell individually, configure the product with both UoM and purchase UoM. A product bought in cases of 12 and sold as singles needs that conversion defined, or your numbers will be wrong from day one.
- Ignoring lot/serial tracking until later. If your products need traceability (food, electronics, pharma), enable tracking before importing inventory. Adding it after products are in the system is possible but messy.
- Skipping barcode scanning. If your warehouse processes more than 20 orders per day, barcode scanning pays for itself within a month. Odoo’s barcode module works with standard USB scanners and dramatically reduces picking errors.
Inventory configuration is foundational — it touches sales, purchasing, accounting, and manufacturing. Getting it right early saves significant rework later. If you’re unsure about the right structure for your operation, it’s worth getting expert input before you build. Parameter helps businesses design Odoo Inventory systems that match their actual operations, not generic templates.
Ready to get Odoo working for your business?
Whether you're evaluating, migrating, or scaling — we can help you build the right system without burning budget.