Multi-Company Setup & Inter-Company Transactions in Odoo 19
Introduction
Managing multiple legal entities under a single ERP platform is one of the biggest challenges for growing businesses. Odoo 19 Enterprise addresses this head-on with a powerful, deeply integrated multi-company architecture — enabling seamless inter-company transactions, consolidated financial reporting, and centralised control, all from a single database.
Whether you are a conglomerate managing subsidiaries across different countries, a retail group with multiple branches, or a manufacturing company with distinct procurement and distribution entities — Odoo 19's multi-company feature is built to handle it all efficiently and accurately.
In this blog, we walk you through everything you need to know: how to set up multiple companies, configure inter-company rules, manage shared vs. restricted data, automate transactions between entities, and generate consolidated reports — all within Odoo 19 Enterprise.
What Is the Multi-Company Feature in Odoo 19?
Odoo 19's multi-company setup allows you to manage several legal entities within a single Odoo database. Each company has its own chart of accounts, currencies, warehouses, employees, and tax settings. At the same time, they can share common master data such as products and contacts, making data governance flexible and efficient.
A key capability formalised from Odoo 18 onwards and refined in Odoo 19 is the distinction between a Branch and a Separate Company:
Entity Type | Description | Best Used For |
|---|---|---|
Branch | A subsidiary of the main company within the same country and fiscal environment. Shares chart of accounts, taxes, and currency. | Same-country store networks or departments |
Separate Company | An independent legal entity — typically in a different country — with its own chart of accounts, localisation, and currency. | International subsidiaries or joint ventures |
Inter-Company Rules | Automated rules defining how orders, invoices, and stock moves flow between any two companies. | Automating internal trade and procurement |
Consolidation Module | Odoo 19 Enterprise module for generating formal group financial statements. | Group-level P&L, Balance Sheet, reporting |
Step-by-Step: Setting Up Multiple Companies in Odoo 19
Getting your multi-company environment right from the start is crucial. Here is a step-by-step guide:
Step 1 — Create the Companies
Navigation: Settings > Companies > New
In the top-right company selector, switch to the parent/primary company, then go to Settings → Users&Companies → Companies and click New.
Enter the company name, address, currency, logo, and fiscal localisation (e.g., l10n_in for India, l10n_us for USA). Each company can have its own VAT/Tax ID and accounting settings.
On the main company form, go to the Branches tab and click Add Branch. Branches share the parent's chart of accounts and currency, making them ideal for same-country store networks.
Go to Settings → Users, open a user's profile, and under Allowed Companies, assign which companies the user can access. The highlighted company in the selector is the active environment.
Important: Enabling multi-company functionality on a Standard plan automatically triggers an upgrade to the Custom plan in Odoo 19. For yearly contracts, an upsell order is created with a 30-day window. Monthly contracts switch automatically at the next billing cycle. |
Shared vs. Company-Specific Data
One of the most important aspects of multi-company management is understanding which data is shared across entities and which is locked to a specific company.
Data Type | Default Behaviour | How to Restrict |
|---|---|---|
Products | Shared across all companies | Set the Company field on the product form |
Contacts / Partners | Shared across all companies | Set the Company field on the contact |
Invoices & Bills | Company-Specific | Auto-separated by active company |
Stock / Warehouses | Company-Specific | Each company has its own warehouse(s) |
Employees & Payroll | Company-Specific | Assigned per company at creation |
Journals & Accounts | Company-Specific | Branches can have own journals consolidated into parent |
Pricelists | Configurable | Shared or restricted via Company field |
Leaving the Company field empty on a product or contact record makes it accessible to all companies in the database. This is useful for common suppliers, shared product catalogues, and group-wide service offerings.
Configuring Inter-Company Transactions
Inter-company transactions are at the heart of the multi-company feature. When enabled, Odoo 19 automatically generates counterpart documents — purchase orders, bills, stock moves — in the second company whenever a transaction is initiated in the first.
How to Enable Inter-Company Transactions
Navigation: Settings > General Settings > Inter-Company Transactions
Switch to the company you wish to configure, open Settings, navigate to the Companies section, enable Inter-Company Transactions, and save. Then select the automation rules to apply:
Rule Option | What It Does | Typical Use Case |
|---|---|---|
Generate Bills & Refunds | When Company A posts an invoice to Company B, a vendor bill is automatically created in Company B. | Service charges between subsidiaries |
Generate Purchase Orders | When Company A confirms a Sales Order for Company B as customer, a Purchase Order is auto-created in Company B. | Internal procurement flows |
Create and Validate | The auto-generated counterpart document is also confirmed automatically without manual intervention. | High-volume, routine inter-company trades |
Real-World Scenario: JS Store Belgium sells goods to JS Store US. When JS Store Belgium confirms the Sales Order, Odoo 19 automatically creates a Purchase Order in JS Store US. When the invoice is posted in Belgium, a vendor bill instantly appears in JS Store US — no manual data entry, no risk of mismatches. Both sides of the transaction are perfectly synchronised. |
Inter-Company Inventory & Stock Transfers
Beyond financial transactions, multi-company operations often require physical goods to move between warehouses belonging to different entities. Odoo 19 handles this through intercompany stock moves linked directly to intercompany rules.
Setting Up Intercompany Stock Moves
Create an Intercompany Transfer Route in Inventory with the source location set to Company A's warehouse and the destination as Company B's warehouse.
Assign this route to all products that need to move between entities. Products must be shared (Company field left empty) for this to work.
When an intercompany Purchase Order is confirmed, Odoo auto-generates a Delivery Order in Company A and a Receipt in Company B — keeping both inventories accurate in real time.
Inventory valuation between companies is handled correctly. Company A records the outgoing transfer (Debit Intercompany Receivable / Credit Inventory). Company B records the incoming goods (Debit Inventory / Credit Intercompany Payable). During financial consolidation, these intercompany balances are automatically eliminated.
Multi-Currency Support Across Companies
For businesses operating internationally, Odoo 19 supports multi-currency transactions natively. Each company can operate in its own local currency while the group consolidates financials in a single base currency.
To enable this, go to Settings → Accounting and activate Multi-Currency. You can then configure individual currencies per company and set exchange rate updates to either manual or automatic fetching from live financial data sources.
Example: A multinational retail group operating in India (INR), the UAE (AED), and the USA (USD) can manage each subsidiary in its local currency while generating group-level consolidated reports in USD — all from a single Odoo 19 database, without any manual currency conversion or external tools. |
Consolidated Financial Reporting
Odoo 19 Enterprise includes a dedicated Consolidation module under Accounting, purpose-built for generating formal group financial statements. Finance teams can produce consolidated Balance Sheets, Profit & Loss statements, and Cash Flow reports that combine data from all subsidiaries into a single, accurate view.
A standout capability is the automatic elimination of intercompany transactions during consolidation. Revenue generated when one subsidiary sells to another is automatically removed from group-level reports, preventing inflated numbers and ensuring that the consolidated financials reflect only real external business activity.
What the Consolidation Module Provides
Consolidated Profit & Loss — by entity or group-wide
Consolidated Balance Sheet with intercompany eliminations
Real-time cash position across all entities
Overdue receivables broken down by subsidiary
Inventory valuation per warehouse and company
Multi-Company Executive Dashboard
Odoo 19's Dashboard module supports widgets that pull data from multiple companies simultaneously. Executives and finance managers can build a single dashboard showing:
Group-level revenue vs. target
Cash position across all entities
Intercompany balance summary
Overdue receivables broken down by entity
Inventory valuation per warehouse and company
This eliminates the need to switch between company environments for management-level oversight, giving decision-makers a true bird's-eye view of the entire group.
Best Practices & Common Pitfalls to Avoid
Best Practices
Design a group chart of accounts template before creating individual companies. Setting up each company's chart independently leads to consolidation mapping errors later.
Use Branches for same-country entities sharing the same fiscal environment. Use separate companies only for legally distinct international entities.
Configure intercompany pricelists to enforce arm's-length transfer pricing, ensuring compliance with OECD guidelines for cross-border transactions.
Enable multi-currency exchange rate auto-fetching to avoid stale rates in consolidated reports.
Test inter-company rules in a staging environment before enabling them in production — even a small transaction volume reveals configuration gaps.
Common Pitfalls
Bidirectional rules without filtering can create circular document generation. Always define rules directionally and test thoroughly.
Forgetting to share products across companies causes intercompany purchase orders to fail — ensure the Company field on shared products is left empty.
Not configuring fiscal positions correctly for each company leads to tax mismatches in automatically generated counterpart documents.
Archiving a company without first transferring its assets and reconciling open transactions causes data integrity issues.