- Every commercial registration in the group is a company in Odoo; anything operating under another entity's registration is a branch. Decide the hierarchy before go-live.
- Inter-company rules mirror a sale on one side into a bill on the other at the same moment, so balances agree by construction.
- Consolidation runs on account mapping, dedicated consolidation journals and horizontal groups, with currency translation for foreign subsidiaries. No spreadsheet.
- Shared services are allocated through analytic accounts and recharged with mirrored invoices; group approvals and expense policy apply across entities.
- Each entity files VAT and ZATCA separately from its own clean ledger, and the group pack is a set of saved views on the first working day.
Saudi groups grow by adding commercial registrations. A trading company acquires a distributor, opens a contracting arm, puts the warehouses into a property company and the head office into a services company that bills the others. Within a few years the group has six entities, four accounting systems, and a month end that is mostly a reconciliation between subsidiaries that never quite agree.
This article covers how Odoo runs that group in one database: how entities are structured, how transactions between them mirror automatically, how consolidation works without a spreadsheet, and what the group's leadership sees on the first working day of the month. If the group includes a franchise network, Odoo ERP for franchisors covers that layer.
What a holding company's system has to do
- Keep every legal entity's books separate and complete, each with its own commercial registration, VAT number, journals and statutory reports.
- Share what should be shared: customers, suppliers, products and employees that exist once across the group rather than once per entity.
- Mirror inter-company transactions so that a sale from one subsidiary to another creates the matching bill on the other side, and the balances agree by construction.
- Consolidate into group statements with eliminations and, where subsidiaries are abroad, currency translation.
- Allocate shared services, the head office, HR, IT and procurement, to the entities that use them.
- Control access so that a subsidiary's team sees its own company and the group's finance team sees all of them.
- Report the group as a group: revenue and margin by entity and sector, cash by bank and entity, receivables and payables inside and outside the group.
Structure: companies, branches and the holding entity
Odoo distinguishes two things that Saudi groups often blur.
- A company is a legal entity with its own books. Every commercial registration in the group is a company in Odoo, including the holding entity itself.
- A branch is a subdivision of one company: a regional office, a second warehouse, a showroom under the same registration. Branches share the parent's accounting settings and roll into it.
The rule is simple. If it has its own commercial registration and files its own VAT return, it is a company. If it operates under another entity's registration, it is a branch of that company. Plan the hierarchy before go-live, because a company defined as a parent cannot later be turned into a branch without access-rights problems.

Contacts and products are shared across the group by default and can be restricted to one entity where needed. An employee who works for the services company and is recharged to three subsidiaries is one record, not three.
Inter-company transactions: mirrored, not retyped
This is where most groups lose the month. In Odoo, inter-company rules do the mirroring. When the trading company raises a sales order to the contracting company, the contracting company receives the matching purchase order. When the invoice is issued, the bill is created on the other side with the same lines, the same VAT treatment and a reference back to the source document. The two entities' inter-company balances agree because they were written at the same moment from the same data.
The same applies to the services company billing management fees, the property company billing rent, and the warehouse company billing storage. Each is an invoice on one side and a bill on the other, tagged as inter-company so it can be eliminated at consolidation.
Consolidation without a spreadsheet
Odoo consolidates legally separate companies through three mechanisms, and understanding them is most of understanding whether the setup will hold.
| Mechanism | What it does | Why it matters for a Saudi group |
|---|---|---|
| Account mapping | Links each company's accounts to a group code, so different charts of accounts combine into one line per group account | Acquired subsidiaries keep their statutory chart; the group still reports on one |
| Consolidation journals and multi-ledgers | Elimination and adjustment entries sit in dedicated journals; each company's regular ledger excludes them, the group's multi-ledger includes them | Statutory reports per entity stay clean; the group view carries the eliminations |
| Currency translation | Equity at historical rate, profit and loss at average rate, balance sheet at closing rate, with the cumulative translation adjustment | Subsidiaries in the UAE, Egypt or elsewhere consolidate into riyals correctly |
| Horizontal groups | Combine ledgers into a consolidated balance sheet and profit and loss, showing each company's contribution | Leadership sees the group total and the entity behind every line |

The practical sequence each month is short. Each entity closes its own books. Inter-company balances are already matched. The finance team posts the elimination entries in the consolidation journal, runs the group balance sheet and profit and loss through the horizontal group, and the comparison against last month and last year is a filter rather than a second spreadsheet.
Shared services and cost allocation
A Saudi holding company usually carries the head office, HR, IT, procurement and sometimes a fleet in one services entity and recharges them. In Odoo those costs are tagged to analytic accounts by service and allocated to subsidiaries by an agreed key: headcount, revenue or usage. The recharge invoices are generated from the allocation and mirrored as bills, so the services entity's revenue and the subsidiaries' costs agree.
Group-level controls sit in the approvals application: purchase requests above a threshold, new suppliers, contracts and hires are routed to the group approver regardless of which entity raised them, and the expenses application applies one policy across the group with each claim landing in the right entity.
Zakat, VAT and the authorities, per entity
Every company in the group files separately. Odoo's Saudi localisation produces the VAT return per entity from its own ledger, and every invoice carries the ZATCA Phase 2 clearance or reporting for that entity's registration, with each entity onboarded to Fatoora separately. The mechanics are in our Phase 2 guide. Where the group qualifies to register as a VAT group, the structure accommodates it; whether to do so is a tax decision, not a system one.
Zakat and income tax computation sit on top of the statutory books per entity, and because the books are complete and separate, the group's auditors work from the system rather than from reconstructed schedules.
Who sees what
Access is set at the parent, company or branch level. A subsidiary's accountant works inside that subsidiary and sees nothing else. A regional manager sees the branches in their region. The group CFO sees every entity and the consolidated view. The company selector in the interface shows the entities a user is allowed to see, and reports follow the same rule.
Group reporting on the first working day
Because everything lives in one database, the group pack is a set of saved views rather than a monthly build: revenue and margin by entity and sector, cash by bank account and entity, receivables and payables split between external and inter-company, inventory value by warehouse and entity, headcount and payroll cost by entity. The spreadsheet application pulls these into the board format the group already uses, with live figures rather than pasted ones, and the documents application holds each entity's statutory filings against the entity.
Sector-specific entities
Most Saudi groups mix sectors, and each sector's entity switches on the applications it needs in the same database. The trading arm runs trading and distribution workflows; the factory runs manufacturing; the retail chain runs point of sale across branches; a food service concept runs the restaurant setup. Barlina is a single-brand example of production, warehousing and retail in one operating cycle; a holding company is the same idea across registrations.
How a group implementation is phased
- Discovery: map every entity, its registration, its systems, its inter-company flows and its shared services. Agree the group chart of accounts and the mapping for each entity.
- Holding and the largest operating entity first: prove the structure, the inter-company rules and the consolidation on two entities before adding the rest.
- Remaining entities in waves, each a migration from its current system with opening balances and open items, following the sequence in how to prepare your data for an Odoo migration.
- First consolidated close with Naqlah on call, which is the acceptance test.
Scope is set by the number of entities and branches, the sectors and applications each needs, the systems being replaced, the volume of inter-company activity, data quality and hosting. The only reliable number is a scoped quote after discovery.
Three mistakes groups make
- Modelling subsidiaries as branches to save setup time. It mixes their liabilities and breaks statutory reporting.
- Leaving inter-company to the month end. If the mirror is not automatic, the balances will not agree, and the finance team will spend the first week finding out why.
- Consolidating in a spreadsheet next to the ERP. The mapping and eliminations belong in the system, or the group pack will always be a week late.
If your group's month end is a reconciliation between entities, book a free consultation. Naqlah is an Odoo Gold Partner in Saudi Arabia, and we map one inter-company flow end to end in the first session.