Cross‑docking is ideal when goods should pass through your warehouse quickly and go straight to the customer. Instead of building stock, items are moved through a cross‑dock area and shipped immediately. This guide explains how to configure cross‑docking in Odoo—no code, clear menus, and a practical workflow.
Note: Odoo 19 is very close to Odoo 18/17 in inventory configuration. The steps below follow official Odoo documentation and can be applied in Odoo 19 in practice. Minor menu differences are possible.
1) What Cross‑Docking Means in Odoo
Cross‑docking is a process where incoming goods are not placed into stock. Instead, they are unloaded into an Input area, briefly handled (sorted, bundled, repacked), and moved directly to an Output area for shipment. Odoo models this with multi‑step receipts/shipments and a dedicated Cross‑Dock route.
Core idea:
- No stocking into inventory
- Input → Output instead of Input → Stock → Output
- Fast outbound after minimal handling
Cross‑docking is especially useful when you need fast throughput and lower storage costs—typically for standardized, fast‑moving items.
2) When Cross‑Docking Makes Sense (and When It Doesn’t)
Good fit if
- goods move quickly and don’t need storage,
- items are standardized and predictable,
- supplier lead times are reliable,
- you need brief checks or bundling before shipping.
Not ideal if
- partial deliveries are frequent,
- suppliers are unreliable,
- demand is highly volatile,
- you need complex picking or lot/serial splitting in stock.
Cross‑docking should not be the default. Define clearly which items are cross‑dockable and which should be stocked normally.
3) Prerequisites in Odoo
Before enabling cross‑docking, make sure:
- The Inventory app is installed.
- Multi‑Step Routes can be enabled.
- The warehouse is configured with 2‑step Incoming and 2‑step Outgoing.
These are mandatory. Without them, the Cross‑Dock route will not be created.
4) Enable Multi‑Step Routes
- Open Inventory → Configuration → Settings.
- Enable Multi‑Step Routes.
- Save.
Note: Enabling Multi‑Step Routes also enables Storage Locations, which are required for Input/Output zones.
5) Set Incoming and Outgoing to 2 Steps
Cross‑docking requires 2‑step Incoming and 2‑step Outgoing.
- Open Inventory → Configuration → Warehouses.
- Select your warehouse.
- Set Incoming Shipments to Receive goods in input and then stock (2 steps).
- Set Outgoing Shipments to Send goods in output and then deliver (2 steps).
- Save.
After saving, Odoo automatically creates a Cross‑Dock route, visible under:
Inventory → Configuration → Routes
Odoo also creates Input and Output locations (default: WH/Input and WH/Output). You can rename them under Inventory → Configuration → Locations.
Tip: Incoming and outgoing steps can differ, but for cross‑docking Odoo’s docs recommend 2 steps for both directions.
6) Configure Products for Cross‑Docking
Cross‑dock is not applied globally. You must set it per product.
Step 1: Open the product
- Open Sales → Products.
- Select a product or create a new one.
Step 2: Set routes
- Go to the Inventory tab.
- Enable Cross‑Dock.
- If procurement should be automatic, also enable Buy.
Why Buy? Odoo creates procurement via buying rules. Without the Buy route, no automatic RFQ/PO is generated.
Step 3: Add a vendor
- Open the Purchase tab.
- Add at least one vendor.
- Set the purchase price.
Without a vendor, Odoo cannot create the RFQ/PO.
Step 4: Check vendor priority
If multiple vendors are listed, Odoo uses the top vendor by default. The order is a real priority.
7) The Standard Workflow in Practice
Once the product is configured, the flow looks like this:
- You create a Sales Order with a cross‑dock product.
- Odoo automatically creates an RFQ to the supplier.
- After confirmation, a Purchase Order is created.
- Odoo generates two transfers linked to the sale:
- Input → Output (internal transfer)
- Output → Customer (delivery)
- Both transfers start in Waiting Another Operation, because the goods have not arrived.
- When the supplier delivers, you validate the receipt into WH/Input.
- Then you validate the internal transfer Input → Output.
- Finally, you validate the delivery to the customer.
Result: goods never enter stock, but the flow is fully documented.
8) What You Should See in the System
These are often confused:
- a Purchase Order triggered by the sale,
- an Internal Transfer from Input to Output,
- a Delivery Order from Output to the customer.
Until the receipt is validated, transfers remain Waiting. After receipt, they move to Ready.
9) Cross‑Docking vs. Dropshipping
These are often confused:
- Dropshipping: goods go directly from supplier to customer. No internal movement.
- Cross‑Docking: goods pass briefly through your warehouse (Input/Output), without stocking.
Cross‑docking is useful when you need to bundle, repack, or inspect goods. Dropshipping is best when you want zero warehouse handling.
10) Multi‑Warehouse Note
If you have multiple warehouses with different step settings, check the Purchase Order destination location. Otherwise Odoo might receive into the wrong warehouse and break the cross‑dock chain.
11) Common Mistakes – and How to Avoid Them
- Multi‑Step Routes not enabled → Cross‑Dock route won’t appear.
- Incoming/Outgoing not set to 2 steps → Route won’t be created correctly.
- Buy route missing → No automatic procurement.
- Vendor missing → No RFQ/PO.
- Wrong products → Cross‑dock isn’t ideal for every item.
12) Costing Note
Because goods never enter stock, inventory valuation can look different compared to classic stocking. Review how you want to reflect cross‑dock costs and margins in reporting.
13) Go‑Live Checklist
- Multi‑Step Routes enabled.
- Incoming & Outgoing set to 2 steps.
- Cross‑Dock route exists.
- Product has Buy + Cross‑Dock.
- Vendor configured.
- Test Sales Order creates RFQ + PO.
- Transfers are created correctly (Input → Output → Customer).
14) Best Practices for Stable Operations
1. Select cross‑dock products intentionally
Not every product fits. Cross‑dock works best for stable demand and predictable lead times.
2. Communicate lead times clearly
Cross‑dock depends on suppliers. Share realistic lead times during sales.
3. Define roles
Decide who validates receipts, who confirms internal transfers, and who closes deliveries.
4. Plan exceptions
What happens with partial deliveries, damaged goods, or late shipments? Define these before go‑live.
15) Practical Test (Recommended)
Use this test flow to validate setup:
- Create a test product with Buy + Cross‑Dock.
- Add a vendor.
- Create a test sales order.
- Check that an RFQ was created.
- Confirm the RFQ to a PO.
- Validate receipt into WH/Input.
- Validate internal transfer Input → Output.
- Validate delivery to the customer.
If all steps pass, your cross‑dock setup is correct.
16) 60‑Second Team Summary
- Enable Multi‑Step Routes.
- Set Incoming & Outgoing to 2 steps.
- Check the Cross‑Dock route.
- Configure product with Buy + Cross‑Dock.
- Add a vendor.
- Trigger a test sales order.
- Validate receipt → transfer Input → Output → validate delivery.
If these steps work, your setup is stable.
17) Short FAQ
Do I need cross‑docking for all products?
No. Define clear rules and enable it only for suitable products.
Can I combine cross‑dock and classic stocking?
Yes. It’s route‑based per product, so both can run in parallel.
Do I need to rename locations?
No. You can, but it’s not required.
Why are transfers “Waiting Another Operation”?
Because Odoo waits for the receipt. Once the receipt is validated, transfers become ready.
18) Routes and Operation Types (Non‑Technical)
When cross‑dock is enabled, Odoo creates a Cross‑Dock route automatically. You can view it under Inventory → Configuration → Routes. It shows which rules and operation types Odoo uses. In most cases, you should not change these rules, so updates and standard flows remain stable.
You can also check Inventory → Configuration → Operation Types to see processes like Receipts, Internal Transfers, and Delivery Orders. For cross‑dock, the key steps are:
- Receipt into Input
- Internal transfer Input → Output
- Delivery Output → Customer
You can rename these operation types to match your internal terminology if you want.
19) Status Logic (Waiting, Ready, Done)
Transfers follow strict dependencies:
- Waiting Another Operation: a previous step is not done yet.
- Ready: the step can be executed.
- Done: step is completed.
In cross‑dock, the receipt is the trigger. Until the receipt is validated, internal transfers and deliveries stay in “Waiting.” Once the receipt is validated, internal transfers become “Ready,” then deliveries follow.
This prevents shipping goods that haven’t physically arrived.
20) Reporting KPIs to Track
Cross‑dock only works if throughput improves. Track at least:
- Cycle time from receipt to delivery
- Supplier reliability
- Cross‑dock share of total volume
- Transfer error rate (blocked or reversed steps)
These KPIs show whether cross‑dock is outperforming traditional stocking—and where to optimize.
21) Handling Exceptions and Returns
Cross‑dock reduces stock but increases supplier dependence. Define clear rules for exceptions:
- Partial deliveries: ship partials or wait?
- Damaged goods: who inspects and how returns are handled?
- Delays: how sales/support are informed?
Odoo supports exceptions through standard transfers and returns, but organizational rules should be set before go‑live.
22) Timeline Example
A short example makes the flow concrete. Assume a customer orders at 09:00 and the supplier delivers the same day:
- 09:00: Sales Order confirmed.
- 09:01: RFQ created, confirmed into PO.
- 14:00: Receipt validated into WH/Input.
- 14:05: Internal transfer Input → Output.
- 14:15: Delivery Output → Customer validated.
Result: no stock entry, but a fully traceable document flow—exactly the cross‑dock benefit.
23) Master Data Check Before Go‑Live
Cross‑dock stands or falls with clean master data. Verify:
- Product routes: only cross‑dock items have Buy + Cross‑Dock enabled.
- Vendor data: supplier, prices, lead times maintained.
- Locations: Input/Output clearly labeled and communicated.
- Operation types: receipts, internal transfers, and deliveries unambiguous.
Clean data reduces operational friction dramatically.
Conclusion
Cross‑docking in Odoo 19 is not complex if the right switches are set. The core logic is Multi‑Step Routes, 2‑step incoming/outgoing, and correctly configured products. Once that is in place, Odoo automatically runs a clean, fast flow from supplier through the cross‑dock zone to the customer.
If you want, I can tailor the guide to your warehouse layout or product categories.
Odoo 19 Cross‑Docking Configuration: The Complete How‑To