Odoo 19 Inventory is a Community app that handles warehouses, locations, receipts, deliveries and replenishment; valuation comes from the WMS Accounting module that sits beside it. Start every warehouse at one-step receipts and deliveries, switch on Storage Locations and Lots & Serial Numbers only where you need them, and decide your cost method and valuation (periodic or perpetual) before the first receipt, because changing them later recomputes the cost of stock you already hold.
Warehouses, locations and the settings that switch them on
A new database has one warehouse with a five-character short name (WH by default) and a stock location under it. That short name prefixes every transfer reference, so WH/IN/00012 is a receipt and WH/OUT/00012 a delivery. Pick short names you can read on a printed slip: CBE and BLR work better than WH2.
Most of the structure is hidden until you turn it on under Inventory > Configuration > Settings, in the Warehouse block:
- Storage Locations lets you create bins, racks and zones under the stock location and track quantities in each.
- Multi-Step Routes enables two- and three-step flows, custom routes and putaway rules. Turning it on also turns on Storage Locations.
Locations are a tree, and only internal locations hold stock you own. Vendor, customer, inventory loss and production locations are virtual; stock moving into them leaves your books. Putaway rules (Configuration > Warehouse Management > Putaway Rules) send incoming products straight to a specific child location, and storage categories cap what a bin can hold.
One, two or three steps for receipts and deliveries
Each warehouse has an Incoming Shipments and an Outgoing Shipments setting. These are the exact options in 19.0:
| Direction | Option | What happens |
|---|---|---|
| Incoming | Receive and Store (1 step) | Goods go straight into stock on the receipt. |
| Incoming | Receive then Store (2 steps) | Receipt into an input location, then an internal transfer to stock. |
| Incoming | Receive, Quality Control, then Store (3 steps) | Input, then a quality control location, then stock. |
| Outgoing | Deliver (1 step) | Delivery order ships from stock. |
| Outgoing | Pick then Deliver (2 steps) | Pick to an output location, then deliver. |
| Outgoing | Pick, Pack, then Deliver (3 steps) | Pick, pack in a packing zone, then deliver. |
The default is one step both ways. We keep it there unless there is a physical reason not to: a separate dock and storage area, a packing bench, or goods that must wait for inspection. Every extra step is another document someone has to validate, and an unvalidated pick is a common reason a delivery shows "waiting" when the stock is sitting on the shelf.
Three-step receipts do not create inspection records by themselves. The checks come from the Quality app, covered in part 15.
Routes, reordering rules and replenishment
A route is a set of rules that says where stock comes from. The ones you will meet first are Buy (from Purchase), Manufacture (from Manufacturing), Replenish on Order (MTO) and Dropship. MTO and Dropship are switched on in the Logistics block of the settings. A product's routes, together with the warehouse steps above, decide what document Odoo creates when demand appears.
Reordering rules are the everyday tool. Each rule has a location, a Min and Max quantity and a Trigger of Auto or Manual. With Auto, the scheduler creates RFQs or manufacturing orders when forecast stock falls below the minimum. With Manual, the need only appears in Operations > Procurement > Replenishment for someone to order. The Advanced Scheduling setting adds a horizon in days so rules fire earlier.
We usually start new clients on Manual for the first few weeks. Buyers see what Odoo would have ordered, correct the min and max figures and vendor lead times, and only then flip the trustworthy products to Auto.
Reordering rules are only as good as the lead times behind them. Fix the vendor delay on the product first, then tune min and max.
Lots, serial numbers and removal strategies
Turn on Lots & Serial Numbers under Traceability, then set tracking per product: By Unique Serial Number, By Lots or By Quantity. Only products with Track Inventory ticked can be tracked. The Expiration Dates setting adds best-before, removal and alert dates to lots.
Removal strategies decide which stock is picked first. Odoo 19 ships First In First Out (FIFO), Last In First Out (LIFO), Closest Location and Least Packages, plus First Expiry First Out (FEFO) with Expiration Dates. Set them on the product category or location. Note that the removal strategy governs which physical units leave; it is not the cost method, which is a separate choice below.
For Indian businesses moving goods between GST registrations or to customers without an invoice, the Indian - E-waybill Stock module creates e-way bills directly from transfers. GST setup itself is part 22.
How Odoo 19 values inventory
Valuation changed noticeably in 19.0. There are two separate settings, both set per company and overridable per product category:
- Cost Method: Standard Price, First In First Out (FIFO) or Average Cost (AVCO). The company default is Standard Price.
- Valuation: Periodic (at closing) or Perpetual (at invoicing). The company default is Periodic.
With periodic valuation, vendor bills post to expense and stock value is brought onto the balance sheet by a closing entry. The Inventory Valuation report (its menu is Enterprise) has a Generate Entry button for this, and the company's Inventory Period can be Manual, Daily or Monthly to post it automatically. With perpetual valuation, the vendor bill line posts to the stock valuation account and the customer invoice posts cost of goods sold against it; stock moves only create entries when they touch a location with its own valuation account, such as inventory loss or production.
In Enterprise the company defaults live in Accounting > Configuration > Settings > Inventory Valuation, with the stock journal and valuation account. On the product category form, the Inventory Valuation group holds the category overrides. A product can also be valued per lot or serial with Valuation by Lot/Serial.
What to configure first and what can wait
- Warehouse names and short codes, one step in and out.
- Product categories with cost method, valuation and accounts.
- Products with Track Inventory, units of measure, vendor and lead time.
- Opening stock through a physical inventory count, dated at go-live.
- Reordering rules on Manual; review the Replenishment screen weekly.
- Later: storage locations, multi-step routes, lots, barcode scanning.
Inventory > Configuration > Settings Inventory > Configuration > Warehouse Management > Warehouses Inventory > Operations > Procurement > Replenishment Inventory > Operations > Adjustments > Physical Inventory Accounting > Review > Inventory > Inventory Valuation
Inventory, routes, lots and the valuation engine are all Community; the Barcode app, the valuation settings screen and the valuation report are Enterprise. Next in the series is purchase and vendor management, which is where most replenishment ends up. If you want a second pair of eyes on your location and valuation design, we can review it before you load stock.
Questions we get asked
Is Odoo 19 Inventory free in Community edition?
Yes. The Inventory app, WMS Accounting (valuation), routes, reordering rules, lots and serial numbers, putaway rules and the e-way bill stock module for India are all LGPL Community modules. The Barcode app, the Enterprise Inventory Valuation report and the accounting settings screen for valuation defaults are Enterprise-only. Community users set cost method and valuation on product categories instead.
What is the difference between periodic and perpetual valuation in Odoo 19?
Periodic (at closing) posts vendor bills to expense and adjusts stock value with a closing entry, generated manually or daily or monthly. Perpetual (at invoicing) posts vendor bills directly to the stock valuation account and books cost of goods sold when the customer invoice is posted. Periodic is the company default in 19.0; both can be overridden per product category.
Should I use 1-step, 2-step or 3-step receipts in Odoo?
Use one step unless your building forces otherwise. Two steps suit a separate receiving dock and storage area; three steps suit goods that must be inspected before storage. Each step adds a document to validate, so extra steps slow the team down if the physical process does not match. You can change the setting on the warehouse later without reinstalling anything.
Can I change the costing method after go-live in Odoo 19?
Yes, on the product category, but Odoo then recomputes the unit cost of every product in that category from its stock history, so the value of stock already on hand changes. Your accountant will need to reconcile that. It is much cleaner to choose between Standard, AVCO and FIFO before the first receipt, and to test any mid-year change on a copy of the database first.