Odoo February 18, 2026 8 min read

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.

Osiris Nunez
Osiris Nunez
Author

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.

Product types, valuation and replenishment steps below were checked against Odoo’s version 20 documentation in October 2026. Where Odoo 18 or earlier works differently, we say so.

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: Goods, Service and Combo. For physical products, the choice that matters is whether the item is tracked: the Track Inventory checkbox in Odoo 18 and 19, the Tracking field in Odoo 20. (In Odoo 17 and earlier, tracked goods were Storable Products and untracked goods were Consumables.)

  • Goods, tracked: Has on-hand and forecasted quantities, and can use reordering rules, inventory adjustments, valuation, and lot or serial numbers. Use this for any physical product you stock. This is your default.
  • Goods, untracked: Quantities are always assumed available, and the product never shows on inventory reports. Use for packing materials or office supplies where tracking isn’t worth the effort.
  • Service: No physical product. Use for labor, consulting, or warranties.
  • Combo: A bundle of goods and services sold together.

The most common mistake: leaving tracking off to avoid dealing with initial stock counts. Odoo treats untracked goods as always available, 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. A category can carry its own accounts, costing method (standard price, average cost, or FIFO) and valuation method, overriding the company defaults.

In Odoo 19 and 20, the company defaults live under Accounting > Configuration > Settings, in the Inventory Valuation section. You choose Periodic or Perpetual valuation there, plus the costing method. With Perpetual, the ledger is updated when bills and invoices post, and a stock closing entry covers the rest. In Odoo 18 and earlier, each category is set to Manual or Automated valuation instead.

For most growing US businesses: Perpetual valuation with average cost. Odoo’s documentation names Perpetual as the practice for US accounting, and average cost adjusts as you purchase at different prices over time. Confirm both with your accountant before go-live.

Set the company defaults first, then any category overrides 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.
  • Forgetting how rules are triggered. An automatic rule fires when the scheduler runs, once a day by default, or when a confirmed sales order pushes the forecast below the minimum. To run the scheduler by hand, turn on developer mode and use Inventory > Operations > Run Scheduler.

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 Dropshipping under Purchase > Configuration > Settings, then tick the Dropship route on the Inventory tab of each product it applies to.

Make to Order

For products you don’t stock but purchase when ordered, use Replenish on Order (MTO). Turn it on under Inventory > Configuration > Settings, tick the route on the product (plus the Buy route on Odoo 18 and earlier), and add a vendor on its Purchase tab. A confirmed sales order then creates a request for quotation for that vendor. Good for slow-moving items, because it keeps cash off the 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. Set each product’s Cost first, because Odoo values an adjustment at the product’s current cost. When the ledger picks that value up depends on your valuation method, so agree the opening balance entry with your accountant.

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.

Related Odoo services

Odoo consulting A straight answer on fit, plan, and hosting, in writing. Odoo pricing guide What Odoo itself charges: plans, users, hosting, and implementation.

Ready to get Odoo working for your business?

Start with the free Odoo Assessment: a first conversation, then a written Preliminary Scope within 5 business days. Not sure Odoo fits yet? The Odoo Score tells you in under 3 minutes.