How to Configure Multi-Company Accounting and Intercompany Transactions in Odoo

How to Configure Multi-Company Accounting and Intercompany Transactions in Odoo

Growing a business into a group of companies rarely fails because of a lack of ambition. It fails when the finance function cannot keep pace.

Once you run two or more legal entities, you have to record every internal sale, transfer, and shared cost twice, match it across both sets of books, and then remove it again at group level.

A well-planned Odoo implementation turns that burden into a controlled and largely automated process, which is exactly why finance leaders keep asking how to set it up properly.

This guide walks finance managers, CFOs, and controllers through how Odoo ERP handles multi-company accounting and intercompany transactions. It covers planning the structure, configuring automated rules, handling journal entries and eliminations, and producing consolidated statements that stand up to audit.

Odoo lets you manage multiple legal entities all in one database. Each company has its own chart of accounts, currency, tax rules, and journals. You can choose what data to share, like products or contacts, and what to keep separate. That is the foundation of Odoo multi-company accounting: separate books where the law demands them, and shared data where sharing saves effort.

If you are a controller, this single-database setup saves you a ton of headaches. You do not have to waste time exporting data or stitching reports together by hand every month. Before you change a single setting, it helps to understand the four building blocks that shape any Odoo multi-company setup.

ConceptWhat It IsBest Used For
BranchA sub-unit of a company in the same country, sharing its chart of accounts, tax, and currencySame-country store networks or divisions
Separate companyAn independent legal entity, usually in another country, with its own localisation and currencyInternational subsidiaries or joint ventures
Intercompany rulesAutomated rules that decide how orders, invoices, and stock flow between two companiesInternal trade and procurement
Consolidation moduleCombines entity data into formal group financial statementsGroup profit and loss, balance sheet, reporting

Configuration is the easy part. The planning around it decides whether your group reporting holds up. A disciplined Odoo ERP implementation for a multi-entity group starts with three decisions, made before anyone opens a settings menu.

  1. Group chart of accounts: Design one account structure and map every entity to it. Building each company’s chart in isolation creates mapping gaps that only surface at consolidation, when they are expensive to fix.
  2. Currency policy: Set each entity’s local currency and the group’s reporting currency early, and decide whether exchange rates update automatically or by hand.
  3. Access model: List which users can see which companies. This protects your Odoo financial management data and keeps each controller working inside their own entity.

Get these three right, and the rest of your Odoo accounting configuration follows a predictable path.

This is where an experienced Odoo partner earns its fee, because reworking a chart of accounts after go-live costs far more than planning it once. Sound Odoo financial management depends on that groundwork more than on any single feature.

With the plan agreed, the build is straightforward. The core Odoo company management steps are as follows.

1. Switch to your parent company using the company selector, then open Settings, Users and Companies, Companies, and create a new company.

2. Enter the legal name, address, currency, tax identifiers, and fiscal localisation for that entity. Each company can carry its own accounting settings and tax registration.

3. Add branches under the parent where entities share the same country and tax registration. Branches inherit the parent’s chart of accounts and currency.

4. Open each user profile and assign allowed companies. The company highlighted in the selector is the user’s active working environment.

One point trips up many teams: knowing what Odoo shares across the group by default and what stays locked to a single entity. Leaving the company field blank on a record makes it available to every company, which is useful for common suppliers and shared product catalogues. Set the company field to lock a record to one entity.

Data TypeDefault BehaviourHow To Control It
ProductsShared across companiesSet the company field to restrict
Contacts and partnersShared across companiesSet the company field to restrict
Invoices and billsCompany-specificSeparated automatically by active company
Warehouses and stockCompany-specificEach company holds its own warehouses
Journals and accountsCompany-specificConsolidated at group level

Here is where the automation pays off. When you enable Odoo intercompany transactions, the system creates the matching document in the second company as soon as you raise one in the first. A sale in Company A becomes a purchase in Company B with no rekeying and no risk of the two sides drifting apart.

Switch to the company you want to configure, open Settings, find the Companies section, turn on intercompany transactions, and save. Then choose the rules that match your trade flows. This step is the heart of any Odoo intercompany transactions configuration.

RuleWhat It DoesTypical Use
Generate bills and refundsAn invoice in Company A creates a vendor bill in Company BService charges between entities
Generate purchase ordersA confirmed sales order in Company A raises a purchase order in Company BInternal procurement flows
Create and validateThe counterpart document posts automatically, with no manual stepHigh-volume routine trade

Together, these rules automate Odoo intercompany transactions and keep both sides of every trade in sync. For finance teams, that means fewer mismatches, a cleaner audit trail, and a shorter path to a finished close.

Every internal trade leaves two sets of postings. When Company A transfers goods, it debits an intercompany receivable and credits inventory. Company B debits inventory and credits an intercompany payable. These are your Odoo intercompany journal entries, and they must agree entity-to-entity, or the group balance will not reconcile.

Sound Odoo intercompany accounting depends on standard cut-off dates. If Company A posts a sale on 31 March but Company B records the purchase on 2 April, the balances will not match at month-end.

Aligning posting deadlines across every entity removes most of that friction. During consolidation, Odoo eliminates these paired balances so group revenue reflects only genuine external trade. That elimination stops Odoo intercompany invoicing from inflating group numbers, and it is where careful Odoo intercompany accounting protects the integrity of the consolidated result.

Groups often move physical goods between entities, not just money. Odoo links stock moves to intercompany rules, so a confirmed internal purchase order generates a delivery order in one company and a receipt in the other, keeping both inventories accurate in real time.

On the accounting side, the sending company records the outgoing value as an intercompany receivable, and the receiving company books it as an intercompany payable. At consolidation, those balances cancel out, which keeps stock movements between related entities from distorting group inventory value.

Products must be shared for these transfers to work, so leave the company field blank on any item that moves between entities.

For groups that trade across borders, Odoo natively supports multiple currencies. Each entity runs in its own local currency while the group consolidates in a single base currency. Enable this under Accounting settings, then set exchange rates to update manually or automatically from a live source.

The Enterprise consolidation module then produces group statements: a consolidated profit and loss, a consolidated balance sheet with intercompany eliminations, and a real-time group cash position. These are the Odoo consolidated financial statements that boards and auditors expect, generated from one database rather than stitched together across spreadsheets and email.

A finance leader can also build a single dashboard that reports group revenue, cash, and intercompany balances without switching between company environments.

Even a capable team can lose weeks to a handful of recurring errors. The most frequent ones are worth guarding against from day one.

  • Separate charts of accounts. Building each entity’s chart in isolation breaks consolidation mapping and forces manual rework later.
  • Unshared products. Forgetting to share products across companies can cause intercompany purchase orders to fail without an obvious reason.
  • Missing fiscal positions. Skipping fiscal position setup produces tax mismatches on the documents Odoo generates automatically.
  • Premature archiving. Archiving a company before reconciling its open transactions damages data integrity across the group.

Avoiding these is rarely about product knowledge alone. It comes from having configured multi-entity groups before, which is where seasoned Odoo implementation services make the difference between a smooth go-live and months of cleanup.

A structured Odoo implementation scopes these risks at the design stage rather than discovering them after the first close.

Setting up multi-company accounting in Odoo takes some real thought. If you map out your chart of accounts, lock in currencies and access rules, and sort out intercompany automation, closing the books each month actually feels organised. Skip those steps or rush through them, and you will keep running into problems every time you consolidate.

That is what Envertis deals with every day. We are a certified Odoo Gold Partner and have handled over 80 implementations. Envertis works with finance teams to build multi-entity setups that stay accurate, compliant, and audit-ready. Whether you are starting a new Odoo project or want to clean up an old multi-company mess, we can help you build the right accounting plan from the start.

No. A single Odoo database holds every entity in the group. Each company keeps its own books and settings while sharing master data where you allow it, which is the whole point of Odoo multi-company accounting.

    Yes. Each company can use its own fiscal localisation and local currency, while the group reports in one base currency. Odoo applies the relevant exchange rates during consolidation, so cross-border groups stay compliant without external conversion tools.

      The consolidation module automatically eliminates paired intercompany balances. Revenue from a sale between two group entities is removed at group level, so the consolidated statements show only real external activity.

        They can. With the create and validate rule enabled, Odoo posts the counterpart document with no manual step. Many teams begin with manual validation and move to full Odoo intercompany transactions automation once they trust the flow.

          It can be, but it requires planning around the chart of accounts, tax, and user access before Odoo accounting configuration begins. A provider experienced in multi-entity work will scope this during design, not after go-live.

            Simple two-entity setups are manageable in-house. Groups with cross-border trade, complex tax, or serious consolidation needs usually benefit from an Odoo implementation provider that has done it before, as small configuration gaps compound quickly at the group level.

              Get expert insights and tailored
              Odoo ERP solutions
              with us!

              Book a Free Consultation

              images