When One Company Code Stops Being Enough
The moment a North American SMB opens a second entity, a Canadian subsidiary, a US holding company, an offshore purchasing arm, the ERP gets tested. Most mid-market systems handle one set of books with reasonable competence and struggle with a second. Odoo multi company is different: intercompany transactions, consolidated reporting, and multi-currency revaluation are standard configuration, not add-on modules. These eight capabilities cover how Odoo does it and what to configure before you write a line of custom code.
Native Multi-Company Structure with Shared and Segregated Data
Odoo's Multi-Company framework lets you run every entity inside one database. Data can be shared (products, contacts, pricelists) or segregated (journals, accounts, inventory locations) at the model level. Users switch context from the company-switcher in the top bar, with no separate login and no VPN hop to a second instance. For a holding company with three operating subsidiaries, this means one monthly close, one IT environment, and one support contract. Deep dive in multi-company configurations for operations managers.
Intercompany Rules: Automated PO/SO Pairing Across Entities
When entity A sells goods to entity B, the last thing you want is a human creating a mirror purchase order by hand. Intercompany rules automate that: a confirmed sale order in entity A generates a draft purchase order in entity B (or vice versa) without manual intervention. Payment terms, currency, and transfer price are resolved at the rule level. The configuration lives under each company's accounting settings, with no custom code and no middleware. See the full setup in configuring intercompany transactions in Odoo 19.
Multi-Currency Accounting with Live Exchange-Rate Feeds
Every entity operates in its own functional currency; transactions that cross currencies need a reliable rate and a clear revaluation path at period-end. Odoo's multi-currency engine pulls live rates from a configurable provider (ECB, Fixer, manual), applies them to invoices and bank transactions, and posts unrealized exchange-difference entries automatically at month-end. Under US GAAP or IFRS, the revaluation journal entries are audit-ready without a third-party FX module. Walk-through in multi-currency accounting in Odoo 19.
Consolidated Financial Reporting Across All Entities
The CFO wants one P&L. Odoo's Accounting module includes a consolidation report that aggregates entities, eliminates intercompany balances, and translates non-functional-currency subsidiary results at the closing rate. You configure the consolidation accounts once; the report reruns at any period without a spreadsheet merge. Not a substitute for a dedicated consolidation tool on a complex group with minority interests, but it covers the vast majority of North American mid-market groups cleanly.
Separate Chart of Accounts per Entity, Shared Where Useful
A Canadian subsidiary under IFRS and a US operating company under US GAAP do not share the same chart of accounts, different deferred tax treatments, different lease capitalization rules, different segment presentation. Odoo lets each company maintain its own chart of accounts while sharing a common product catalog and vendor master. You can map accounts for intercompany eliminations without forcing both entities into an identical account structure. See best practices in chart of accounts best practices.
Tax Compliance per Jurisdiction, GST/HST, QST, US Sales Tax
Operating in Canada and the US means managing GST/HST, QST for Quebec operations, and multi-state US sales-tax nexus, sometimes all in the same group. Each Odoo company carries its own fiscal positions and tax configuration. For US entities with significant e-commerce or cross-state volume, the AvaTax connector applies Avalara's tax engine at invoice time, handling multi-state nexus without manual rate tables. Canadian entities configure GST/HST and QST directly in the tax configuration.
Access Control and Record-Level Security per Entity
An accountant for the US entity should not see the Canadian entity's vendor invoices by default. Odoo's record rules enforce company-level data isolation at the database row level, not just at the UI, so a user assigned to one company cannot accidentally access another entity's records even with broad access rights. This matters both for data integrity and for regulatory reasons when entities are in different jurisdictions. See the full security model in access control and record rules in Odoo 19.
Multi-Language Operations and Localized Document Output
A Canadian group with French-speaking Quebec operations and English-speaking Ontario or US operations needs invoices, quotations, and delivery orders in the right language per partner. Odoo's multi-language support translates document templates and printed outputs per customer language preference. The ERP interface itself switches per user. QST-registered Quebec entities can print bilingual tax summaries compliant with Loi 25 data-residency requirements. See multi-language operations in Odoo 19.
How to Evaluate an Odoo Partner for a Multi-Entity Project
Multi-entity projects fail more often than single-entity ones, usually because the partner underestimates intercompany complexity rather than because the software is harder to configure. Seven checks to run before signing:
- Ask for a live multi-company reference. Not "we've done multi-company", a client with two or more entities in production willing to take a call.
- Verify intercompany rule experience. Automated SO/PO pairing and intercompany clearing accounts are non-trivial to configure correctly for reconciliation.
- Confirm IFRS vs. US GAAP split knowledge. If your group spans jurisdictions, the partner must understand both standards, not just one.
- Scoping document covers each entity separately. A single scope that treats all entities as one is a scope that will miss requirements.
- Fixed-price discovery before fixed-price build. Multi-entity scope almost always surfaces surprises in discovery, a partner offering a fixed price without discovery is guessing.
- Senior architects on the project. Octura assigns senior architects only and does not hand off to junior teams after kickoff.
- Migration plan covers all entities. Data migration for a two-entity group with separate legacy systems is at minimum twice the work, confirm this is scoped explicitly.
The setup detail is in Odoo 19 multi-company setup and consolidated reporting.
Frequently Asked Questions
The questions readers ask us most often on this topic.
How does Odoo multi company work?
All entities share a single database. Data is partitioned by company at the model level, some records (products, contacts) can be shared; others (journals, accounts, inventory locations) are segregated. Users switch between companies using the top-bar switcher without a separate login.
Can Odoo automate intercompany transactions?
Yes. Intercompany rules create a mirror PO in entity B when entity A confirms a sale order, and vice versa. Currency, transfer price, and payment terms are resolved at the rule level, with no manual data entry and no middleware.
Does Odoo handle multi-currency accounting?
Yes. Odoo pulls live exchange rates from configurable providers (ECB, Fixer, or manual), applies them to invoices and bank transactions, and posts unrealized exchange-difference entries at month-end automatically. The revaluation entries are compliant with US GAAP and IFRS out of the box.
Can Odoo produce consolidated financial statements?
Odoo Accounting includes a consolidation report that aggregates entities, eliminates intercompany balances, and translates non-functional-currency results at the closing rate. It covers most North American mid-market groups. Complex minority-interest scenarios may require a dedicated consolidation tool alongside.
Can different Odoo entities use different charts of accounts?
Yes. Each company maintains its own chart of accounts while sharing a common product catalog and vendor master. You configure intercompany account mappings for elimination entries without forcing a single chart structure across all entities.
How does Odoo handle Canadian GST/HST and QST in a multi-entity setup?
Each entity has its own fiscal position and tax configuration. Canadian entities configure GST/HST and QST rates directly. For US entities with multi-state nexus, the AvaTax connector applies Avalara rates at invoice time. The two approaches co-exist cleanly in a cross-border group.
Is Odoo multi company data secure between entities?
Record rules enforce company-level isolation at the database row level, not just the UI. A user assigned to one company cannot read another entity's invoices or inventory moves even with broad access rights. This applies both for data integrity and for regulatory separation across jurisdictions.
Does Odoo support French and English in the same instance?
Yes. Document templates (invoices, quotations, delivery orders) render in the language of the partner or user. The ERP interface itself switches per user. This covers bilingual Canadian operations and satisfies Loi 25 communication requirements for Quebec entities.
How long does a multi-entity Odoo implementation take?
For a two-entity North American group (shared product catalog, intercompany rules, separate accounting), expect 14 to 20 weeks from discovery to go-live. Each additional entity with distinct accounting requirements adds 4 to 8 weeks. Migration of legacy data from separate systems is the largest variable.
What is the biggest risk in an Odoo multi-company project?
Underscoping intercompany complexity in discovery. Transfer pricing, intercompany clearing account design, and consolidated eliminations are non-trivial and frequently missed in generic SOWs. A fixed-price scope without a paid discovery phase is a warning sign.
Can Odoo run IFRS and US GAAP entities in the same database?
Yes. Each entity has its own fiscal positions, journal configuration, and chart of accounts. Lease capitalization, deferred tax, and segment presentation can be configured differently per entity. The consolidation report translates results at the closing rate for cross-standard groups.
