Skip to Content

Accounting consolidation in Odoo 20: groups of companies, currencies and intercompany

How to consolidate a dollar parent with its Spanish subsidiary in Odoo 20: reports per company, the CTA method, multiple ledgers and what improves over Odoo 19.
​ November 4, 2026 by
Accounting consolidation in Odoo 20: groups of companies, currencies and intercompany

A group with a parent company in the United States and a subsidiary in Spain needs two things at once: the subsidiary’s statutory accounts, in euros and under the Spanish chart of accounts, and the group balance sheet in dollars for the parent. With Odoo 20 you can do both in a single database.

This is the course we recorded at Contaldia. The full video is below. Here is what it shows, step by step, and what improves compared with Odoo 19.

13 min

course video
consolidation in Odoo 20

2

companies, currencies
and charts of accounts

Odoo 20

Enterprise edition
in the example

The scenario: US parent and Spanish subsidiary

The parent keeps its books in dollars, with a generic chart of accounts. Its 100% subsidiary, in Spain, works in euros with the Spanish PGC PYMES. The parent contributed the subsidiary’s capital in January.

We want two things: the subsidiary’s statutory reports and the group balance sheet in dollars. The key idea: each company keeps its books in its own currency and chart of accounts. Consolidation happens when you run the report, not when you post.

No separate module: five standard tools

Odoo has no consolidation app. You get there by combining Accounting tools that already ship with the product:

  • Multi-company selector: you tick the group companies and the reports add up their entries from the main company’s point of view.
  • Account mapping: each subsidiary account gets the equivalent code from the main company’s chart, so the report puts it on the right line.
  • Multiple ledgers (journal groups): they separate the statutory books from consolidation adjustments and eliminations.
  • Horizontal groups: one column per company or per ledger, plus the total.
  • Currency translation (CTA): subsidiaries in another currency are translated automatically.

Branches are not consolidated this way: they share the main company’s accounting. Consolidation is for independent legal entities.

Setup: currencies, charts and exchange rates

The setup is minimal:

  • Each company with its own currency and chart of accounts: the parent, the generic chart in dollars; the subsidiary, the Spanish PGC in euros.
  • On the parent, the euro enabled and its exchange rates. In a real case they update automatically.
  • Account mapping between the two charts. For many accounts it is faster to export, fill in Excel and import.
  • In the balance sheet settings, the currency translation field: it can use the latest rate for everything or the CTA method, the usual one in consolidation.

Watch out: translation uses the exchange rates of the selected company. If a rate is missing on a date, for example the capital contribution date, Odoo converts at 1:1 and the capital comes out wrong.

Transactions between group companies

The parent invoices the subsidiary in dollars for a management fee. The subsidiary books it in dollars and Odoo converts it to euros. When it is paid months later, at a different exchange rate, an exchange difference appears.

In Odoo 20, the payment wizard shows the exchange rate applied and the difference appears on a single line per invoice, which you can expand to see the calculation. To keep group balances apart from third-party balances, set the intercompany receivable and payable accounts on each company’s contact (433 and 403 in the Spanish chart).

In Spain, an invoice from a foreign company may be subject to the reverse charge mechanism. Check the tax before posting it.

The subsidiary’s Spanish reports

With only the subsidiary selected, you get its profit and loss and its balance sheet in PGC PYMES format, in euros. That is what it needs for its annual accounts and its taxes in Spain. The capital contributed by the parent appears at its euro value on the contribution date.

The group consolidation in dollars

You tick both companies, with the parent as the main company, and the balance sheet comes out in dollars. Odoo warns you that it uses the CTA method.

With CTA, the subsidiary’s capital stays at its historical rate, results are translated at the average rate and the rest of the balance sheet at the closing rate. Because the exchange rate moves during the year, a difference is left over. You used to calculate it in Excel. Now Odoo posts it to an equity line, Cumulative Translation Adjustments, and it is auditable: you expand it and see the entries behind it.

Use the generic balance sheet variant. The Spanish variant classifies by PGC codes and would misplace the parent’s accounts.

Multiple ledgers and the consolidation sheet in columns

Odoo lets you keep several ledgers in the same database. Consolidation eliminations, such as the investment against the subsidiary’s capital or transactions between companies, are posted in a journal of a separate ledger. That way they do not pollute each company’s statutory books.

With a horizontal group, the balance sheet is split into columns, one per ledger or company, plus the total. It is the classic consolidation sheet, without leaving Odoo. Which ledgers to tick depending on what you want to see:

You want to seeTick
Each company separatelyLocal accounting principles + Intercompany
Group consolidationLocal accounting principles + Consolidated (eliminations)
Everything together (makes no accounting sense)All accounting ledgers

If the ledger is assigned to a company, it only includes that company’s journals. To cover the whole group, leave the Company field empty.

Odoo 20 compared with Odoo 19

New in Odoo 20Before, in Odoo 19Edition
Auditable CTA line in the balance sheet, trial balance and general ledgerThe translation difference was calculated outside OdooEnterprise
Ledger groups: you choose the journals to includeYou chose the journals to excludeCommunity
Intercompany invoices automatically matched with their purchase orderManual reconciliationEnterprise
Exchange rate visible when registering foreign-currency paymentsNot shownCommunity
Exchange differences on a single line per invoice, expandableOne line per differenceCommunity
Parent accounts instead of account groups; optional account codeAccount groupsCommunity

If you migrate from Odoo 19, review your ledger groups: excluded journals have to be converted into included journals.

Sources: Odoo 20 release notes, Braintec and iVenture Team.

Tax units: not consolidation

In the settings you will see “Tax units”. That is not accounting consolidation. It lets several companies in the same country and with the same currency file their tax return together. In Spain it matches the special VAT group regime. It does not apply in this example, because the parent is American and the subsidiary Spanish. It would make sense if the group had several companies in Spain.

Monthly consolidation checklist

  1. Close each company: invoices, banks and depreciation.
  2. Load or review the exchange rates on the main company: closing, average and historical rates for capital contributions.
  3. Review the mapping of new accounts created in the subsidiaries.
  4. Reconcile intragroup balances.
  5. Post the elimination entries in the consolidation journal.
  6. Run profit and loss and balance sheet with the consolidated ledger and the horizontal group, and export.

More on Contaldia

Accounting, bank and reports: Odoo 20 news for accounting and reports.

Fabien’s keynote, with screenshots: Odoo 20: what Fabien just presented at OX 2026.

Does your group have companies in several countries?

We help you set up consolidation in Odoo: currencies, account mapping, ledgers and reports. We are the first tax advisory on Odoo in Spain and Portugal.

Write to us

info@contaldia.com · 931 94 94 80 · More courses and webinars: contaldia.com/events

in Odoo