Odoo Multi-Company for UAE Groups: Free Zone and Mainland in One Database
Almost every UAE group I set up in Odoo has the same shape: a free zone company holding the trading licence, and one or more mainland companies doing the on-the-ground work. The first question I get is never about VAT. It is simpler: can this whole group live in one Odoo database, or do the entities need to stay apart? Here is how I structure it, and where mixing free zone and mainland genuinely makes the build harder than a same-jurisdiction group.
One database, multiple companies — not multiple databases
Odoo's standard architecture answers the first question directly: multiple companies can be configured under one database, with a company selector in the header for working inside one company, or several at once. In my experience, separate databases only make sense when entities genuinely have nothing to do with each other day to day — a newly acquired business still running its own systems, for instance.
A free zone entity and a mainland entity under the same group, sharing management and trading with each other, belong in one database — splitting them to keep the books "clean" throws away the inter-company automation that is the whole point of running them together. The split I do keep is between a company and a branch: a branch shares its parent's chart of accounts, which suits a regional office of one legal entity, not two separate legal persons with separate trade licences. Odoo's own documentation is direct about this: independent subsidiaries should be created as additional companies, not branches.
What's shared, and what stays company-specific
Inside one database, you decide per record whether it belongs to a single company or the whole group. Products and contacts are shared by default across every company in the database — useful, since your free zone trading arm and your mainland services company are not maintaining two different records for the same customer. A record tied to a specific company, like a quotation, an invoice or a vendor bill, is only visible when you are logged into that company.
I share the product catalogue and partner list across the group as standard; duplicated master data is where multi-company setups quietly go wrong. I never share the chart of accounts, tax configuration or fiscal year settings — those stay one per company, because each entity files its own return against its own tax registration. This is the same fiscal localization I walk through in my Odoo UAE VAT setup guide; it installs, and is configured, per company, not once for the database.
Inter-company transactions: the mirror documents
The feature that makes running related companies in one database worth it is inter-company transactions. Switch it on per company under Settings, and when one company sells to another, Odoo keeps both sides of the paperwork in sync: confirm a sales order from your mainland company addressed to your free zone company, and Odoo can automatically create the matching purchase order; post an invoice the same way and it creates the matching vendor bill.
This depends on the companies sharing the underlying product record, and on the fiscal position being set correctly between them — the same mechanism that handles cross-border imports in the VAT guide linked above. Get it wrong on an inter-company relationship and the mirrored document still posts, just with the wrong tax treatment, which is worse than not automating it at all. I confirm this pairing on every build before go-live — it is the same layer behind the multi-company retail and branch inventory builds I run.
Consolidated reporting
A holding company wants one number, not four. Odoo's Consolidation feature combines each company's own books into a single view of group performance. It sits inside Full Accounting, which is Enterprise-only — I cover that edition split in my Community vs Enterprise comparison, and for a group planning to consolidate, it settles the licensing question early.
Each company keeps its own regular ledger, and the consolidating company gets an additional multi-ledger that pulls in the others' consolidation adjustments. Because a free zone company and a mainland company rarely share an identical chart of accounts, Odoo maps similar accounts from different companies together, so the consolidated report combines them correctly instead of listing several versions of the same receivable account. Adding the group's companies to the header's selector and viewing reports through the consolidating company then produces a consolidated Balance Sheet or P&L, with horizontal groups showing what each entity contributed.
Access rules: every entity sees only its own data
The other side of one database is making sure one company's staff cannot see another's. Every user's Access Rights tab has an Allowed Companies field, every company that user can open, and a Default Company, the one they land in at login. Odoo enforces this with record rules keyed on company access, at the data layer, not just as a menu filter.
The rule I set on every UAE group build: free zone finance staff get the free zone company only in Allowed Companies, mainland staff get their own entity only, and only the group controller gets every company, with the holding entity as the default. Nobody sees a second entity's numbers by accident.
For a group where several mainland entities run under one contracting parent, this is the same access pattern behind the multi-entity contracting builds I run with project accounting scoped per licence.
Currency handling across the group
Most UAE-only groups barely touch multi-currency — free zone and mainland companies alike usually report in AED. It matters once the group has an overseas leg, or a free zone entity that deliberately invoices in another currency. Odoo sets a company's main currency by default from its country and lets you override it in Accounting settings; turning on Allow multi currencies makes every other currency you enable usable against that base.
Exchange rates update manually, or automatically on a daily, weekly or monthly interval from a web service you choose, and Odoo posts the resulting gain or loss to a dedicated Exchange Difference journal automatically. If your free zone entity invoices in USD and your mainland entity settles in AED, this keeps the difference visible on the books instead of buried in a rounding adjustment.
What free zone plus mainland adds on top
Everything above applies to any UAE multi-company group. Mixing free zone and mainland licences adds two complications that a same-type group does not have.
Separate TRNs, and a free zone licence is not a VAT exemption
Free zone and mainland companies are separate legal persons, each carrying its own Tax Registration Number and filing its own return — the VAT201 process in my UAE VAT setup guide runs per company, and the same l10n_ae_reports module adds corporate tax reporting capability, again per company. A free zone licence is not, by itself, a VAT exemption: special VAT territorial treatment applies only inside FTA-designated zones, mainly to goods — a services invoice from your free zone company to your mainland company generally still carries standard-rated VAT like any domestic supply. Related UAE entities can also register as a single VAT group instead of filing separately, changing which entity's return actually gets filed.
Transfer pricing visibility
UAE Corporate Tax requires related-party transactions, including those involving free zone entities, to be priced on an arm's-length basis, with disclosure required once dealings pass certain thresholds. This is where the inter-company automation above stops being a convenience and starts being documentation: every sale between your two companies produces a mirrored, dated, priced document on both sides — the transaction-level record a transfer-pricing file asks for, instead of one reconstructed from bank statements later. Setting the pricing stays your tax advisor's work; Odoo does not run that analysis.
This article is implementation guidance on configuring Odoo — not tax or legal advice. VAT, corporate tax and free zone rules change and depend on your specific entities. Confirm your obligations with the Federal Tax Authority at tax.gov.ae, the Ministry of Finance, or a qualified tax advisor before you act.
Frequently asked questions
Can one Odoo database run both my free zone and mainland companies?
Does Odoo automatically create the paperwork between my companies?
Can I stop one company's staff from seeing another company's data?
Can Odoo consolidate my group's financials into one report?
Does a free zone trade licence mean I do not charge VAT to my mainland company?
Related reading
More guides from my desk: Odoo UAE VAT setup, done properly — how the FTA tax categories, fiscal positions and the VAT201 return work underneath every company in your database; Odoo Community vs Enterprise, explained — the edition decision behind Consolidation and the rest of Full Accounting, before you scope a multi-company build; and what actually drives Odoo implementation cost in the UAE — where a multi-company, multi-entity build sits inside the wider project budget.
Running a free zone and mainland structure and want it mapped properly in Odoo?
I'm Muhammad Salman Ali Khan, an Odoo Techno-Functional Consultant in Dubai and Head of Projects at Techbot Information Technology LLC, a UAE Odoo partner — 10+ years, 100+ implementations, certified on Odoo v13, v14, v15, v16, v18 and v19, and I presented Odoo 19's new features at Odoo Experience 2025 in Brussels. Tell me how your group is structured and I'll give you a scoped, honest view of what a proper multi-company setup actually involves — at no cost.
Get a free business evaluation