Odoo Multi Branch Retail: Stock Transfers, POS and Branch Reporting
Run a retail chain on Odoo: model stores as warehouses or branches, set up inter-branch stock transfers, POS per shop and reporting by store.
Retail chains rarely struggle in Odoo because a feature is missing. They struggle because store one was set up as a quick pilot and stores two to ten copied its shortcuts. Our Odoo implementation services start with the store model, before any till is configured.
Related service: Odoo for retail — POS, inventory and eCommerce running on one system.
This guide is for owners, operations heads and finance leads who run 2 to 50 stores. It goes deeper than our Odoo ERP for retail overview and covers structure, transfers, POS, reporting, rollout and cost.
What does Odoo multi branch retail look like in one database?
Odoo multi branch retail means every store sells, receives and counts stock in the same database as head office. There is no nightly sync between a till system, a stock system and an accounting package.
Three records carry the whole design:
- Warehouse: one per store and one for the central stock room. Odoo defines a warehouse as a physical space with an address, including a physical store.
- Point of sale: one per till or counter, linked to that store's stock, cash journal and staff.
- Company or branch: the legal and accounting layer that owns the warehouses and tills.
If your main question is linking a webshop to the stores, read our guide to Odoo omnichannel retail. This post stays on the store network itself: stock, tills and numbers by branch.
Branch, company or warehouse: how should you model each store?

Model each store as a warehouse by default, as a branch when it needs its own books inside one legal entity, and as a company only when it is a separate legal entity. This is the decision that is hardest to undo later.
| Question | Warehouse per store | Branch per store | Company per store |
|---|---|---|---|
| Legal status | Same company | Subdivision of one company | Separate legal entity |
| Books | One set of journals | Parent's chart and taxes, own journals | Own chart, taxes and journals |
| Tax ID | Company tax ID | Shared with parent or its own | Its own registration |
| Stock | Own warehouse and stock | Own warehouse and stock | Own warehouse, shared products |
| Reports | Grouped by warehouse or POS | Parent alone or with branches | Per company, then consolidation |
| Odoo plan | No multi-company functions | Enables multi-company functions | Needs multi-company functions |
Odoo's documentation describes branches as subdivisions within a company and says independent subsidiaries should be created as companies. It also warns that a parent company cannot be converted into a branch later.
The plan matters too. Odoo states that adding a branch enables multi-company functions, and that enabling multi-company on a Standard plan triggers an upsell to Custom. Decide on branches with that cost in view.
A chain owned by one company can often start with warehouses and tills only. Store sales and margin come from POS reports, while a full profit and loss per store needs branches or analytic accounts. For separate entities, see our Odoo multi company setup guide.
How do you set up Odoo multi store inventory?
Odoo multi store inventory starts with one warehouse per store and one for the central stock room, each with its own stock location. Odoo is clear on this: "Each location, including the central warehouse and each shop, must be configured as its own warehouse."
Some teams try one warehouse with a location per shop. On the Odoo forum, a consultant comparing both options said their client chose separate warehouses because they expected fast growth and more sites.
- Turn on the features: enable Storage Locations and Multi-Step Routes in the Inventory settings.
- Create the warehouses: one per store plus the central one, each with a short name of up to five characters.
- Set the supplier warehouse: on each store warehouse, fill Resupply From with the central warehouse.
- Add routes to products: select the "Store: Supply Product from Main" style route on the products each store carries.
- Load opening stock: count each store and post an inventory adjustment per warehouse.
- Link the tills: point each POS to its own store's stock, as covered in the POS section below.
How do inter-branch stock transfers work in Odoo?
An inter-branch stock transfer in Odoo is a shipment out of one warehouse, a stop in a transit location and a receipt in the other warehouse. It is not the same as an Odoo internal transfer, which only moves goods inside one warehouse.
The Odoo inter-warehouse replenishment guide explains the mechanics. The supplying warehouse ships to a location called Inter-warehouse transit. The store's receipt stays in Waiting until that shipment is validated.
| Transfer type | When to use it | What Odoo creates |
|---|---|---|
| Automatic resupply | A shop drops below its minimum | Shipment to transit, then a store receipt |
| Manual store to store | One shop covers another's shortage | Shipment to the other store's address, plus its receipt |
| Internal transfer | Back room to shop floor in one store | One internal transfer inside the warehouse |
| Inter-company transfer | Stores owned by different legal entities | Shipment in one company, receipt in the other |
The receiving store validates what actually arrived, not what was sent, so a shortage shows up as an open difference to investigate. Pair this with the routines in our guide to Odoo inventory accuracy and cycle counts.
How does a central warehouse replenish each shop automatically?
A central warehouse replenishes each shop through reordering rules that use the store's resupply route. When a shop's forecast falls below its minimum, Odoo proposes or creates the transfer for you.
Each rule needs four values: the store's stock location, the resupply route, a minimum and a maximum. The rule triggers when the forecasted quantity drops below the minimum. Planners can also open Inventory, Operations, Replenishment and click Order on a line.
For special orders, the Replenish on Order (MTO) route pulls one item from the central warehouse for one customer sale. Use it for bulky or slow items, and keep min and max rules for fast sellers.
How do you run Odoo POS in multiple shops?
Odoo POS runs in multiple shops by giving each till its own point of sale record, tied to that store's stock, cash and staff. The most common early mistake is tills that all sell from the main warehouse.
One forum user created several tills and a new warehouse, then found that every POS "keep seeing all stock that i had". The fix is the operation type in each POS's Inventory settings, which decides the warehouse its sales reduce.
- Cash: Odoo advises a dedicated cash payment method and a cash journal for each POS, so entries are traceable to a specific till.
- Staff: enable Log in with Employees and use the four POS employee access levels: Supervised, Restrictive, Cashier and Manager.
- Prices: turn on Price Control so only managers change a price at the till, and choose the pricelists available in each store.
- Network: Odoo POS is built to keep working through temporary network outages, which matters for mall and high-street connections.
Licensing follows people, not tills. Cashiers can work as employees on a register that a full user opened. Our post on the Odoo 20 Light User explains how such staff are counted and billed.
How does consolidated reporting work across Odoo branches?
Consolidated reporting across Odoo branches works because every sale, transfer and journal entry already sits in one database. You group one report by store; you do not merge ten spreadsheets.
| Question | Where to look | Group or filter by |
|---|---|---|
| Sales by store | Point of Sale, Reporting, Orders | Point of sale |
| Who sold what | POS sessions and their orders | Employee, session |
| Stock by store | Inventory, Reporting, Stock | Warehouse, location |
| Goods on the road | Inventory, Reporting, Moves Analysis | Transit location |
| Cash differences | POS session closing | Point of sale, session |
| Profit and loss | Accounting reports | Parent alone or with branches |
Odoo's POS reporting offers graph and pivot views, and each order records its point of sale and employee.
With branches, the parent company sees the reports, invoices and bills of all branches, while each branch sees only its own data. The parent's lock dates apply to every branch, so month end closes once for the whole chain.
What changed for retail chains in Odoo 20?
Odoo 20 improved retail chains mainly in two places: transfers between companies and POS accounting. Our live notes on Odoo 20 Point of Sale changes and Odoo 20 Inventory changes list every item.
| Odoo 20 change | What it does | Why a chain cares |
|---|---|---|
| Inter-company resupply | Resupply From accepts another company's warehouse | Franchise or entity stores refill from a group warehouse |
| Transfer valuation | Receiving company takes the sender's cost | Stock values stay correct across entities |
| POS closing entries | One global sale per session, entries daily or at closing | Cleaner books and faster checks |
| Suggested min and max | Levels proposed from demand history | Less manual tuning per store |
| POS without Inventory | Stock logic moved to a bridge module | Custom POS modules need a review |
If you upgrade a running chain, test POS accounting first. Reports and custom code that read the old session entries must be reviewed before the first store opens on Odoo 20.
Which retail sectors gain most from Odoo multi branch retail?
Chains with many items, fast stock turns or strict expiry rules gain most from running every branch on one Odoo retail ERP. The table shows how the same building blocks answer different pressures.
| Retail sector | Pain or cost driver | Odoo approach | How iVentureTeam helps |
|---|---|---|---|
| Fashion and footwear | Sizes and colors spread unevenly across stores | Variants, store to store transfers | Design routes and variant barcodes |
| Grocery and convenience | Expiry dates and daily replenishment | Lots with expiry, min and max rules | Set rules per store and train counts |
| Electronics and mobile | Serial numbers and warranty claims | Serial tracking at POS and on transfers | Map serial flows and returns |
| Furniture and home | Bulky items sold from display | MTO resupply from the central warehouse | Set special order routes |
What does an Odoo retail chain rollout cost and how long does it take?

An Odoo retail chain rollout usually falls inside our published implementation ranges, with store count, integrations and custom work deciding where. These are ranges, not quotes.
On the Odoo pricing page, the US price billed yearly is US$31.10 per user a month for Standard and US$61.00 for Custom. Branches and extra companies need the multi-company functions of Custom, so the structure choice has a license effect.
Our published Odoo implementation cost ranges are US$3,000 to US$9,000 for small projects (4 to 8 weeks), US$9,000 to US$27,000 for mid-size (8 to 14 weeks) and US$27,000 to US$150,000+ for large (12 to 24 weeks). Data migration adds US$1,200 to US$9,000.
Tills, scanners and printers are a separate hardware budget. For a number matched to your stores and users, try the Odoo implementation cost calculator.
How do you roll out Odoo across branches without stopping trade?
Roll out Odoo across branches in waves: prove the model in one store, then repeat it without changes. Every exception you allow in store two becomes a support ticket in store ten.
- Clean master data: one product list, one barcode per item, one set of prices.
- Pilot: start with the central warehouse and one store, including real transfers and a real month end.
- Count and load: count each store on its switch day and load stock by warehouse.
- Train by role: cashiers on the register, store managers on receipts, counts and closing.
- Roll out in waves: add a few stores at a time, then review stock and cash differences after 30 days.
How iVentureTeam helps with Odoo multi branch retail
iVentureTeam designs, builds and supports Odoo for retail chains, from the first store model to the last branch rollout. We have delivered 150+ ERP projects across 35+ countries with 40+ Odoo specialists over 13+ years.
- Store model: a clear recommendation on warehouses, branches or companies, with the license effect spelled out.
- Stock design: warehouses, resupply routes and reordering rules for each store.
- POS setup: tills, cash journals, access levels, pricelists and receipts per shop.
- Training: role-based Odoo ERP training for cashiers, store managers and finance.
- New branches: a repeatable checklist for each store you open after the first rollout.
Odoo multi warehouse stock case study: KMF Technologies
KMF Technologies is an IT hardware distributor, not a retail chain, but it had the same core problem: nobody trusted the stock figure. The firm supplies IT services, computer hardware and network infrastructure from The Gambia.
Products and categories were tracked by hand, and there was no real-time stock view. Sales, purchase and store teams did not share data, so customers waited while staff checked with each department.
We implemented Odoo Sales, Purchase, Inventory and Accounting in seven phases over 8 weeks. The work defined warehouses, product categories, stock locations and units of measure, set role-based access, and imported the full product master with cost and sale prices.
KMF now runs a connected purchase to shipment workflow with real-time stock levels across its warehouses and fewer entry errors. Read the KMF Technologies Odoo inventory case study.
The bottom line on Odoo multi branch retail
Odoo handles a multi branch retail chain well when each store is a warehouse with its own POS, and when you choose branches or companies on purpose, not by accident. The features are standard; the structure is the project.
Decide the store model with finance, prove transfers and closing in one pilot store, then copy that store without exceptions.
Ready to run every branch on one Odoo database?

Tell us how many stores, tills and legal entities you run, and we will map them to an Odoo structure. Request a multi branch retail structure review, call +91-90235-15208, or email business@iventureteam.com.
Frequently Asked Questions
Can Odoo handle multiple stores?
+
Yes. Each store becomes a warehouse with its own stock and one or more points of sale, all in one database. Head office sees sales, stock and cash for every store without a sync between systems.
Do I need Odoo multi-company for multiple shops?
+
No, not when one legal entity owns all the shops. Warehouses and POS records per store are enough. Use branches when stores need their own books, and companies only for separate legal entities.
How do I transfer stock between branches in Odoo?
+
Set the central or sending warehouse in Resupply From on the receiving store's warehouse. Odoo then creates a shipment to a transit location and a receipt at the store, by reordering rule or on request.
Can each Odoo POS use its own warehouse?
+
Yes. Each point of sale has an operation type in its Inventory settings, and that operation type belongs to one warehouse. Sales from that till then reduce that store's stock only.
Does adding branches change my Odoo plan?
+
It can. Odoo states that adding a branch enables multi-company functions, and that enabling multi-company on a Standard plan triggers an upsell to the Custom plan. Confirm with Odoo before you create branches.
How do I see sales by store in Odoo?
+
Open Point of Sale, Reporting, Orders and group the pivot or graph by point of sale. You can also group by employee, product or date to compare stores, staff and ranges.
Does Odoo POS work when a store loses its internet connection?
+
Odoo POS is built to keep working during temporary network outages, so a till can continue selling. Orders reach the database once the connection returns. It is not designed for long periods without a network.
How long does an Odoo rollout take for a retail chain?
+
Our published ranges are 4 to 8 weeks for small projects, 8 to 14 weeks for mid-size and 12 to 24 weeks for large ones. A pilot store first, then waves of stores, is the usual pattern.
Free retail walkthrough
Linking your webshop, POS and stock in Odoo?
We walk you through how Odoo keeps stores, online orders and stock in one place, and what to set up first.
Free, with no obligation. A senior consultant replies within 12 business hours.
Free Odoo tools
All tools- Odoo Health CheckVersion, modules, findings and upgrade cost
- Odoo App SelectorWhich apps you need, by industry
- Odoo Project EstimateIndicative cost and timeline in minutes
- Odoo Implementation Cost CalculatorImplementation cost and timeline, in minutes
- Odoo Migration Cost CalculatorVersion jump or legacy ERP, priced in minutes
Continue reading
Odoo Omnichannel Retail: Link Webshop, POS and Stock in Odoo 19/20
Odoo omnichannel retail for Odoo 19 and 20: link webshop, POS and warehouse stock in one database, set up click and collect, and follow our checklist.
Odoo Restaurant Integration: Talabat, Multi-Branch POS and Food Cost
Odoo restaurant delivery integration for multi-branch chains: Talabat and Uber Eats via UrbanPiper, branch POS setup, food cost tracking and Odoo 20.
Odoo Payment Gateway Integration in MENA: Fawry, Tap, Moyasar, POS
Odoo payment gateway integration for MENA: built-in Paymob and APS, custom Fawry, Tap and Moyasar connectors, POS terminals, reconciliation and costs.
