MI ERP Branch Transfers — Inter-Branch Stock Transfers
Move goods between warehouses of different branches from one single window: both pickings are created and chained automatically, and freight or insurance can be capitalised into the receiving branch inventory value.
What you get
Sending stock from one branch to another in standard Odoo means creating a delivery in one company, a receipt in the other, remembering which transit location keeps both sides balanced — and giving the sender access to a company that is not theirs. MI ERP Branch Transfers replaces all of that with one document.
Pick the source warehouse, pick the destination warehouse (even if it belongs to a branch the user cannot access), list the products and confirm. The module creates the delivery in the source company and the receipt in the destination company, chained through Odoo's native inter-company transit location, so that validating the delivery automatically reserves the receipt on the other side. Nothing is stranded in transit and no stock is duplicated.
When the transfer has a cost — freight, insurance, handling — tick Apply Extra Costs and add it either as manual lines (choosing the account yourself) or from one or several vendor bills. The module generates a landed cost on the receipt, posts its journal entry in the destination company and links the document back to the transfer.
stock.picking, chained
stock.move, stock.landed.cost — so valuation,
traceability and accounting behave exactly as Odoo expects.
Key features
One window, two pickings
A single stock.branch.transfer document with source
warehouse, destination warehouse and product lines. On confirmation the
delivery and the receipt are created, confirmed and reserved —
no manual picking creation, no forgotten counterpart.
Draft → Confirmed → Sent → Received Smart buttons
Send without destination access
The destination warehouse selector lists every warehouse of the corporate group, including branches the user cannot read, while the receipt is created in that company with elevated privileges. A record rule makes the transfer visible to both the sending and the receiving branch.
Multi-company rules Branch aware
Chained moves, automatic reservation
The incoming move is linked to the outgoing one
(move_orig_ids + make_to_order) through the
native inter-company transit location. Validate the
delivery and the receipt jumps from Waiting to Ready
with the exact quantity that left — partial deliveries included.
Inter-company transit No stranded stock
Extra costs → landed cost
Capitalise freight, insurance or handling into the value of the goods that arrive. Add manual lines (description, account, split method, amount) or pull the cost lines from one or more vendor bills. The landed cost is created, computed and posted in the destination company.
Manual lines Multiple vendor bills Journal entry
Availability at a glance
Every line shows the free quantity in the source warehouse while you type, and confirmation is blocked with a clear message when a product does not have enough unreserved stock to leave.
Free qty Guard rails
Traceability
Chatter and tracked fields on the transfer, both pickings reachable as smart buttons (only for the branch allowed to see them), source document stamped on each picking, and the landed cost linked back to the transfer that generated it.
mail.thread Source document
How it works
1 · Fill one form
Source warehouse, destination warehouse and the products to move.
2 · Confirm
Delivery and receipt are created and chained through transit.
3 · Ship
Validate the delivery; the receipt is reserved automatically on the other side.
4 · Receive
The destination branch validates the receipt. Stock lands in its warehouse.
5 · Cost it
Apply extra costs — now or later — and the landed cost adjusts the value.
Product screenshots
Real screenshots of the module running on Odoo 19 with demo data: two branches (Bogotá and Medellín) of the same group.
One document, the whole trip
Source and destination branch, products with the free quantity available at source, and the status bar Draft → Confirmed → Sent → Received. The smart buttons open the delivery, the receipt and the landed cost generated for this transfer.
Pick a warehouse from another branch
The destination selector lists every warehouse of the group — including branches this user has no access to. The source warehouse selector, by contrast, only offers the warehouses the user is allowed to work with.
The receipt nobody had to create
Generated automatically in the destination company, coming from the inter-company transit location, with the transfer stamped as source document and the quantities already reserved when the delivery was validated.
Manual cost lines with your account
Tick Apply Extra Costs — when you create the transfer or later on the same document — choose manual lines and enter the description, the account to hit, the split method (by current cost, by quantity, equal, by weight, by volume) and the amount.
Or pull the cost from several vendor bills
Select one or more vendor bills of the destination branch and their landed-cost lines are merged into a single cost document — here freight and insurance from two different bills — each line traced back to the bill it came from, with its journal entry posted.
Valuation actually adjusted
The cost is split across the received products following the chosen method: former value, added cost and new value per product — the real inventory value of the receiving branch, not a note in a comment field.
Everything in one list
Source branch, destination branch, person responsible and status. Filters for outgoing from my branches and incoming to my branches, plus grouping by status or branch.
Requirements & good to know
Dependencies
Odoo 19.0 (Community or Enterprise) with
stock and stock_landed_costs. Both install
automatically with the module.
Company set-up
Each branch is a company (typically a child company) with its own warehouse. The shared inter-company transit location is the native one and is activated automatically.
i18n/es.po, Latin-American wording — it also covers
es_CO, es_MX, es_419 and the other Spanish variants). The
screenshots above show the Spanish interface.
GRUPO MI ERP SAS — José Luis Vizcaya López
www.mi-erp.app
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Inventory (stock)
• Discuss (mail) • Purchase (purchase) • Invoicing (account) |
| Lines of code | 805 |
| Technical Name |
stock_branch_transfer |
| License | LGPL-3 |
| Website | https://www.mi-erp.app |
Please log in to comment on this module