Odoo Inventory's route and putaway system lets you model complex warehouse operations: two-step picking (pick then ship), three-step picking (pick → pack → ship), and intelligent putaway based on product category, lot, or capacity. This guide covers the full configuration.
Understanding routes#
A Route is a sequence of rules that Odoo follows when moving goods. Routes chain procurement rules (for inbound) and push/pull rules (for outbound and internal moves).
Routes are assigned at multiple levels:
- Product - override default route for specific products
- Product Category - apply to all products in a category
- Warehouse Operation Type - default for all moves through a given operation
- Warehouse - configure inbound and outbound steps globally
Setting inbound steps#
Go to Inventory → Configuration → Warehouses → [your warehouse]. Under Shipments, configure:
- Receive in 1 step: goods go directly from vendor to stock (Receipts → Stock)
- Receive in 2 steps: goods go to an input area first, then putaway moves to stock (Receipts → Input → Stock)
- Receive in 3 steps: quality control step between input and stock (Receipts → Input → Quality Control → Stock)
For most operations, 2-step receiving allows a quality inspection before stocking without full QC module complexity.
Setting outbound steps#
Under the same warehouse configuration → Shipments (outbound):
- Ship in 1 step: pick directly from stock and ship (Stock → Delivery)
- Ship in 2 steps (Pick + Ship): separate the picking operation from the loading/delivery (Stock → Output → Delivery)
- Ship in 3 steps (Pick + Pack + Ship): add a packing area between pick and ship (Stock → Pick → Pack → Delivery)
When to use 3-step#
3-step makes sense when:
- Pickers work in the warehouse aisles (bulk picking from racking)
- Packers work at a dedicated packing station (boxing, labelling, manifesting)
- Shippers load trucks from a staging area (output dock)
Each step is a separate operation type with its own responsible team, which enables parallel work: while packers are packing yesterday's picks, pickers are picking today's orders.
How the route engine works#
When a sale order is confirmed, Odoo runs procurement rules starting from the delivery destination and working backward:
- Delivery order needs goods at Output location → a rule says "pull from Stock" → creates a Pick transfer
- If 3-step: Pick order creates demand at Pack → another rule says "pull from Pick" → creates a Pack transfer
- The chain terminates when the source location is a procurement location (supplier) or a stock location
This is the Pull routing strategy. There is also a Push strategy where operations trigger the next step automatically upon validation (used in manufacturing flows).
Putaway rules#
Putaway rules tell Odoo where to put goods when they arrive at a receiving location. Without putaway rules, everything goes to the default destination on the receipt (usually WH/Stock).
Configure putaway rules under Inventory → Configuration → Putaway Rules → New:
| Field | Description |
|---|---|
| Having Product | Match by specific product |
| Having Product Category | Match by product category (broader) |
| On Receipt of Lot/Serial | Match by lot or serial characteristics |
| Store in | The destination sublocation |
| Capacity | Maximum quantity before overflowing to next rule |
Evaluation order: Product-specific rules take precedence over category rules. Capacity constraints trigger overflow to the next matching rule.
Example: category-based putaway#
You have three zones in your warehouse:
- WH/Stock/Frozen - frozen goods (capacity: 200 pallet positions)
- WH/Stock/Refrigerated - refrigerated goods
- WH/Stock/Ambient - ambient goods
Create putaway rules:
- Product Category Frozen Food → Store in WH/Stock/Frozen
- Product Category Fresh Produce → Store in WH/Stock/Refrigerated
- Product Category Non-perishable → Store in WH/Stock/Ambient
When a frozen item arrives, Odoo's putaway logic automatically routes it to the Frozen zone.
Capacity-driven overflow#
If Frozen is full (capacity reached), the next putaway rule for the same category with a different destination (e.g., an overflow Frozen-2 location) activates. Capacity tracking requires Storage Locations enabled in settings and the Putaway Strategies setting set to Product or Category + Putaway Rules.
Operation types and source/destination defaults#
Each operation type (Receipt, Internal Transfer, Delivery, Pick, Pack) has default source and destination locations. Open Inventory → Configuration → Operations Types → [operation]:
- Operation Type: Receipt, Internal Transfer, Delivery, etc.
- Default Source Location: where goods come from
- Default Destination Location: where goods go to
For a 3-step pick-pack-ship warehouse:
| Operation | Source | Destination |
|---|---|---|
| Pick | WH/Stock | WH/Packing Zone |
| Pack | WH/Packing Zone | WH/Output |
| Delivery | WH/Output | (partner location) |
Never set the source and destination to the same location - this creates zero-move transfers that confuse reporting.
Cross-docking route#
The Cross-Dock route bypasses stock: inbound goods go directly to the outbound area to fulfill a waiting order. To enable:
- Enable the Cross-Dock route on the warehouse
- On the sale order, set the route to Cross-Dock on the product line
- When the receipt arrives, a linked Transfer directly moves the goods to the Output zone
Cross-docking requires careful coordination between receiving and shipping teams and a same-day SLA on the inbound shipment.
Reporting: operation throughput#
Inventory → Reporting → Inventory Analysis shows move volumes by operation type and location. Use this to measure:
- Average time from Receipt confirmation to WH/Stock (inbound lead time)
- Average time from Pick creation to Ship validation (outbound cycle time)
- Backlog of open Pick/Pack/Ship operations
Common configuration mistakes#
- Putaway rules not firing: Check that the Storage Locations and Putaway Strategies settings are both enabled in Inventory → Configuration → Settings.
- 2-step picking not creating a Pick transfer: The route on the product must be Buy + 2-step (not just Buy). Verify the product routes tab or the product category route.
- Internal transfers stacking up between steps: Each step requires a human to validate it. If operators aren't validating the intermediate transfers (e.g., the Pick step), the next step (Pack) never starts. Review the transfer pipeline for stalled intermediate operations.
- Products going to WH/Stock instead of sublocation: No matching putaway rule exists for the product or category. Check rule priority and that the product's category matches the rule's category.
Use ERPeek to query your Odoo route configuration: "Which products have the Cross-Dock route but no waiting sale orders?" or "Show me all putaway rules for the Frozen food category" - directly against your warehouse setup.

