Confirming a transfer creates exactly two pickings (OUT at the source
warehouse, IN at the destination warehouse) connected through the
company’s internal transit location. The document state is automatically
derived from the underlying picking states and supports backorders.
To keep this the only path for moving stock across warehouses, the
module also blocks any internal stock move whose source and
destination locations belong to different warehouses, forcing users
through the Inter-Warehouse Transfer document.
Business Need
Companies with multiple warehouses sometimes need to initiate stock
transfers based on an operational decision — not triggered by
procurement demand. Typical use cases:
- Proactively balancing inventory between locations.
- Reviewing and confirming both the outgoing and incoming legs before
any stock moves.
- Tracing the full inter-warehouse operation as a single document.
Odoo’s standard resupply routes are demand-driven and do not provide a
single document grouping both legs of a transfer.
Approach
On confirmation, the transfer creates exactly two pickings connected
through the company’s internal transit location: an OUT picking at
the source warehouse and an IN picking at the destination warehouse.
Both use dedicated operation types (IW / IWR) created lazily per
warehouse, keeping inter-warehouse moves out of regular delivery and
receipt queues.
The OCA module stock_warehouse_resupply_route_push (v18.0+,
OCA/stock-logistics-workflow) provides a similar capability via push
rules, but the IN picking is only created after the OUT picking is
validated — making it impossible to review both legs before stock moves.
Useful Information
- Requires an Internal Transit Location configured on the company
(Inventory > Configuration > Warehouses).
- Designed for single-company, multi-warehouse setups.
- Source and destination locations default to each warehouse’s main
stock location and can be overridden per transfer.
- Works with Odoo’s standard backorder flow: partial validations create
backorders automatically linked to the same transfer document.
Go to Inventory > Operations > Inter-Warehouse Transfers and create a
new transfer:
- Select From Warehouse and To Warehouse (same company).
- Optionally override the From Location and To Location (they
default to each warehouse’s main stock location).
- Add one or more product lines with quantities.
- Click Confirm.
Two stock pickings are created automatically — an OUT picking at the
source warehouse and an IN picking at the destination warehouse,
connected through the company’s internal transit location. Use the
Transfers smart button to open them.
Validate the OUT picking when the goods leave the source warehouse. The
transfer moves to In Transit. Validate the IN picking when the goods
arrive at the destination. The transfer moves to Done.
Partial validation creates backorders that are automatically linked to
the same transfer document.
A confirmed transfer stays editable: changing a line quantity, adding a
line or removing one propagates to the stock moves of both legs. The
Shipped and Received columns show how much of each line is
already validated.
- Increasing a quantity extends the open moves. If a leg has no open
picking left — for instance the OUT was already validated — a new
picking is created for the additional quantity.
- Decreasing a quantity reduces the open moves, and cancels them when it
reaches zero. A quantity cannot be decreased below what is already
validated on that leg; create a return instead.
- Removing a line cancels its moves. A line that is already partly
validated cannot be removed.
Internal transfers between locations of different warehouses are no
longer allowed outside this document: attempting to create such an
internal move raises a validation error asking to use an Inter-Warehouse
Transfer instead.
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
feedback.
Do not contact contributors directly about support or help with technical issues.