Skip to content
DevMarket
Odoo ModulesWordPress PluginsWordPress ThemesShopify ThemesApp TemplatesScripts & UtilitiesBlogSell on DevMarket
Odoo guides

Odoo Inventory Management: How It Works and How to Set It Up

How Odoo inventory management works: operations, warehouses and locations, routes, reordering rules, lots and serial numbers, valuation methods and stock counts, with a first setup for a small warehouse.

By DevMarket EditorialPublished: 9 min read
Odoo Inventory Management: How It Works and How to Set It Up
On this page

Odoo inventory management happens in the Inventory app: it records every movement of goods in and out of your warehouses and keeps a live count of what you have, what is reserved and what is on its way. You create a warehouse, decide where stock can sit, and let receipts, deliveries and transfers update the numbers as the work happens. This guide follows the parts in the order you will meet them and ends with a first small-warehouse setup. Menu paths were checked against the Odoo 19.0 documentation in October 2026, and screens may differ in 20.0, released in September 2026.

In short

  • Stock changes through operations: receipts bring goods in, deliveries send them out, internal transfers move them.
  • Storage locations and multi-step routes are optional: switch them on when the work needs them.
  • Reordering rules (a minimum and a maximum) can raise purchase requests or manufacturing orders.
  • The costing method (Standard Price, Average Cost or FIFO) decides how stock is valued, and the accounting settings decide when that value reaches your books.
  • A stock count changes nothing until you apply it.

How does Odoo inventory management work?

The Inventory app rests on one idea: every change in stock is a move between two locations, and every move belongs to an operation. The documentation lists the usual ones as receiving, putaway, internal transfers, picking and delivery. A purchase order creates a receipt, a confirmed sales order creates a delivery, and you validate each document when the goods really arrive or leave. The on-hand quantity changes at validation, so validating on time matters more than any setting.

A row of cards joined by arrows from left to right
Goods move through operations in order: a receipt brings them in, transfers place them, and a delivery sends them out.

Stock is kept for Goods products: tick Track Inventory on the product form to keep stock records, use lots or serial numbers, or apply reordering rules. The forecasted quantity looks ahead, combining what is on hand with demand and supply already booked. Inventory works beside Sales, Purchase, Accounting and Manufacturing (see the Odoo manufacturing guide). New to Odoo? Start with what Odoo is.

Warehouses, locations and operation types

Create a warehouse under Inventory > Configuration > Warehouses with a name, a short name of up to five characters (WH by default), an address and a company. The short name prefixes references such as WH/IN and WH/OUT. To track shelves or bins, tick Storage Locations in Inventory > Configuration > Settings, then add locations under Inventory > Configuration > Locations. Each has a name, a parent and a Location Type: Vendor, Virtual, Internal, Customer, Inventory Loss, Production or Transit. Your shelves are Internal.

Each operation belongs to an operation type, set under Inventory > Configuration > Operations Types: a Type of Operation, a Sequence Prefix, a Create Backorder rule (Ask, Always or Never) and, with locations on, default source and destination. The reservation method is set there too: At Confirmation, Manually or Before scheduled date.

With Multi-Step Routes on, which also enables Storage Locations, the Warehouse Configuration tab offers one, two or three steps for receipts (receive and store; receive into WH/Input, then store; receive, quality control, store) and for deliveries (deliver; pick, then deliver; pick, pack, deliver). Use these options instead of editing rules by hand, which the documentation advises against. Two-step receipts suit freezers or locked areas, and two-step deliveries suit FIFO, LIFO or FEFO picking.

Putaway rules and storage categories

Inventory > Configuration > Putaway Rules say where arriving goods go: a product or category, the arrival location and the sub-location to store in. The documentation says they need Multi-Step Routes. Storage categories (Inventory > Configuration > Storage Categories) add limits on weight, quantity per product and package type. Odoo does not split a receipt across locations: if a location holds 10 units and 12 arrive, all 12 are recommended for it.

Routes and reordering rules

A route tells Odoo how products travel between locations, through push and pull rules, and the standard warehouse routes come from the steps you chose. In 19.0 the Buy and Manufacture routes are hidden by default, and Odoo applies them from the product's purchase or manufacturing setup (a vendor, a bill of materials). Two routes you switch on yourself:

  • Replenish on Order (MTO). Tick it in the Logistics section of the Inventory settings, then pick it in the product's Routes field. Confirming a sales order then always creates a purchase request or manufacturing order, even with stock on hand. Adjust that order rather than cancelling it, because Odoo creates no replacement.
  • Dropship. Enable Dropshipping in the Purchase settings, add a vendor and select the Dropship route. A confirmed sales order creates a request for quotation, the vendor ships to the customer, and you validate the dropship receipt.

Reordering rules: minimum and maximum

Create rules under Inventory > Operations > Replenishment or from the product. When forecasted stock falls below the Min, Odoo orders enough to reach the Max: a request for quotation for Buy, a manufacturing order for Manufacture. That needs a vendor on the product, or a bill of materials. An Auto Trigger acts when the scheduler runs, once a day by default, while a Manual rule keeps the product on the replenishment dashboard until you click Order. Multiple rounds orders up to a package size, which can exceed the Max. Odoo times orders from lead times, and Horizon days on manual rules look further ahead.

Lots, serial numbers, barcodes and counts

Lots and serial numbers

A lot is a batch, useful for recalls and expiry dates. A serial number identifies one item, useful for after-sales service. Enable Lots & Serial Numbers in the Traceability section of the settings, then set the product to Track Inventory with By Lots or By Unique Serial Number. Odoo will not validate a tracked receipt until you enter numbers in the Detailed Operations window, and the operation type decides whether numbers can be created (Create New) or must already exist (Use Existing ones). To trace a number, open Inventory > Products > Lots/Serial Numbers and use its Traceability button.

Barcode scanning

The Barcode app lets USB, Bluetooth or built-in scanners run receipts and deliveries as they happen, using barcodes set on products, packagings and locations. The pages we checked do not say which edition it needs, so confirm on Odoo's editions page or in a trial database. The barcode documentation has the setup guides.

Inventory adjustments and cycle counts

Inventory > Operations > Physical Inventory lists on-hand quantities. Type what you found in Counted, then click Apply or Apply All: nothing changes until you do, and the adjustment appears in Moves History. A count with no date defaults to 31 December. For cycle counts, set Inventory Frequency in days on a location (Cyclic Counting section); Odoo schedules the next count only after the first one is applied. Use Inventory > Operations > Scrap for damaged goods.

How does Odoo value inventory?

Odoo documents three costing methods. Standard Price (Standard Cost in the valuation cheat sheet) is a fixed unit cost you update by hand. Average Cost (AVCO) is the weighted average. FIFO values the oldest units first. Choose the method in Accounting > Configuration > Settings, Inventory Valuation section, with overrides per product category. The same section sets Perpetual (at invoicing) or Periodic (at closing) valuation.

Example, with made-up numbers: you receive 10 units at 5, then 10 at 8, and deliver 12. The standard price is 6.

Costing methodValue of the 8 units left
Standard Price48
Average Cost (6.5 each)52
FIFO64

Inventory updates stock value in real time, while Accounting updates accounts when bills or invoices are posted, and a closing entry reconciles the gap. Odoo 19 changed this: perpetual valuation used to post at every stock movement and now works at invoice level, so older tutorials may not match. Landed costs (shipping, duties and similar charges added to stock value) and valuation by lot or serial number support only AVCO and FIFO. Removal strategies (FIFO, LIFO, FEFO) decide picking order, not value. Check results in Inventory > Reporting > Stock, and agree choices with your accountant before the first receipt. The Odoo accounting guide covers the books.

How do you set up a small warehouse in Odoo?

Work on a test database with a sample of your real products.

  1. Write the scope: items, shelves to track, products needing lots or serial numbers.
  2. Agree the valuation with your accountant: costing method, Perpetual or Periodic.
  3. Install Inventory, plus Purchase and Sales if you use them.
  4. Set the switches: leave Multi-Step Routes off at first, and enable Storage Locations or Lots & Serial Numbers only if needed.
  5. Configure the warehouse: name, short name, address.
  6. Create products: Goods type, Track Inventory, vendors, barcodes and a category with the costing method.
  7. Load opening stock: in Physical Inventory click New, enter the count, apply it.
  8. Run both flows: purchase order to validated receipt, sales order to validated delivery, then compare the Stock report.
  9. Add reordering rules for your fastest sellers.
  10. Set the counting rhythm and train staff before go-live.

Common mistakes

  • Forgetting Track Inventory, then wondering why a product has no stock or rules.
  • Creating a reordering rule on a product with no vendor or bill of materials.
  • Entering counts and never applying them.
  • Confusing FIFO removal with FIFO costing.
  • Following a tutorial written for an older version, especially on valuation.

For add-ons, read how to choose an Odoo module first.

Frequently asked questions

Is the Odoo Inventory app part of Community?

Our Community vs Enterprise guide lists Inventory among the Community apps. Check individual features, such as barcode scanning, on the editions page.

Can Odoo manage several warehouses?

Yes. Create each under Configuration > Warehouses, and use Resupply From when one warehouse refills another.

Do I need lots or serial numbers?

Only when you must trace batches or single items. They add work at every receipt and delivery.

Can Odoo reorder stock automatically?

Yes, through reordering rules. An Auto rule acts when the scheduler runs, once a day by default, and a Manual rule waits for you to click Order.

Next steps

Run one product family end to end on a test database. If you make what you sell, continue with the Odoo manufacturing guide. The official Inventory documentation covers every screen, and when you need an add-on you can browse Odoo modules.

Find the right software for the job

Every item on DevMarket has a human-reviewed release, an instant licence key and clear update and support terms.