In Odoo, you can have one database for multiple companies. It allows for some data to be shared, and for management to have oversight of all companies, including consolidated financial reports.
As well as the convenience, it may be more cost-effective to have multiple companies in a single database (though there are many different things to consider, and sometimes it is not the best option).
There are many different scenarios for multi-company.
- The companies may all operate independently
- The companies may share some data (e.g. products and services, customers)
- The companies may trade with each other (see below)
- There can be Parent and Child companies
Another approach is to use “branches” or “operating units” in a single company. There are some third party add-ons available:
Inter-company transactions
In a multi-company database, inter-company transactions can also be setup to buy and sell between companies, for example:
- US company buys from Hong Kong office that sources from suppliers in Asia;
- UK company buys from its own factories in China.
Note that these inter-company transactions will need to be eliminated from the Financial Reports (e.g. Profit & Loss). Fiscal positions can be used to override accounts based on rules, so that could be used to post intercompany transactions to an eliminations account.
This can be setup in the Sales and Purchase applications so the flow is automated.
- This is an optional feature in Odoo Enterprise (configured in General Settings):

- Add-ons are available for Odoo Community:
Odoo 12 and earlier
Related: Multicompany in Odoo 12
Multi-company Record Rules
Here are a few of the multi-company record rules in Odoo 12:

The important part here is the domain
['|', ('company_id','=',False), ('company_id','child_of',[user.company_id.id]) ]
The logic is that a user can access:
- Records with a blank company code
- Records in the “children” of the current company
- this includes the current company itself
Some are a bit different:
['|','|', ('company_id.child_ids','child_of', [user.company_id.id]), ('company_id','child_of', [user.company_id.id]), ('company_id','=',False) ]
This allows access to records in the parent company.
This rule applies to Contacts (res.partner), so customers and suppliers in the parent company will be available in the “child” company. If this is not what you want, you can amend this Record Rule.
Odoo 13
Odoo 13 includes some big changes to multi-company.
This includes the removal of the “parent-child” logic, and its replacement with something more flexible.