Branches

Odoo for professional services

Multiple entities, one organization. How multi-company administration, time tracking, and invoicing come together in Odoo, and why the three can't be viewed separately.

7 min read·Industry: professional services

In services, a logged hour is the raw material, the inventory, and the end product all at once. If you operate from multiple entities, that same hour also needs to land with the right one. And that's exactly where it usually goes wrong.

We've managed the Odoo environment for a Dutch consultancy firm with European impact for years. The focus of that environment rests on three interconnected components: a multi-company setup of the administration, the consultants' time tracking, and turning that into invoices.

Those three are often treated as separate questions. That's the core of the problem. An hour logged in one entity and invoiced in another touches all three at once, and a setup that doesn't think this through in advance creates manual work at closing every month.

1

Multiple entities, one organization

Anyone working across borders inevitably deals with multiple entities. To your people, it's one company; to your bookkeeping, they're separate ledgers.

What needs to stay separate per entity

Every entity has its own general ledger, its own VAT treatment, its own reporting obligations, and its own annual accounts. That's not negotiable and needs to stay separate in the system, down to the transaction level.

What should actually be shared

Customers, employees, projects, and rates, on the other hand, belong to the organization as a whole. A customer served by two entities, you want to record once. Duplicate contact lists per entity are the fastest route to reports that don't add up.

And what everyone gets to see

Access rights in a multi-company setup aren't an afterthought, they're part of the design. Who sees which entity, who can post, who can report across entities. This is the part that gets skipped in a quick setup and comes back at the first audit.

2

The administration: separate books, one view

The challenge is twofold: keep separate what must legally stay separate under statutory rules, while still being able to see the whole picture at the same time.

Separated where it must be

Each entity gets its own chart of accounts, its own journals, its own numbering sequences, and its own VAT return. In Odoo that means a well thought out setup of companies and access rights, so an entry can never end up in the wrong administration.

Combined where it helps

On top of that, you also want a consolidated view: revenue, margin, and utilization across all entities. That's a reporting question, not an accounting one, and it makes a huge difference whether that's built in from the start or rebuilt afterward in spreadsheets.

Currencies and country-specific requirements

Working across borders brings foreign currencies, different VAT regimes, and country-specific invoicing requirements. Odoo supports that, but it requires a deliberate choice per country, not the default setting of the first entity that was created.

3

Time registration: the raw material

Everything that happens financially later on depends on the quality of what the consultant entered. A poorly designed timesheet screen is therefore not a user problem but a revenue problem.

It has to take seconds

Consultants log their hours in between work. If it takes too many steps, it gets done from memory at the end of the week, and that's exactly when billable hours disappear. The setup should therefore start from how someone actually works, not from what looks best on paper administratively.

Billable, non-billable, and everything in between

Not every hour is billable, and not every non-billable hour is wasted. The distinction between client work, internal investment, and overhead determines your utilization figures, and in services those figures are your most important steering information.

Rates that aren't a single number

A rate depends on the role, the employee, the client, the contract, and sometimes the entity that invoices. That logic belongs in the system, not in the head of the person who creates the invoices. Otherwise every invoicing round is a series of exceptions that nobody can check.

Approval before invoicing

Hours should be reviewed before they reach the client. A fixed approval step with a clear cutoff per period prevents corrections afterward, and in services a credit note costs more than just the amount on it.

4

From hour to invoice, and the intercompany step

This is where everything comes together, and where the work sits that a standard setup won't solve for you.

Different agreements, one process

Time and materials, fixed price, a cap, or a monthly fee: each contract type translates hours into an invoice line differently. With time and materials, hours flow through directly; with fixed price they don't, while you still want to see them for margin purposes. That distinction needs to sit in the project setup.

The invoicing round as a fixed rhythm

Close the period, approve hours, generate drafts, check them, send them. The more of that is automated, the shorter your time to payment. This is where service providers leave the most working capital on the table.

When the hour and the invoice don't sit in the same entity

A consultant employed by one entity works on a project that gets invoiced by another entity. That calls for an internal recharge in between: one entity invoices the other, at a transfer price that has to be defensible. Done manually, that's a puzzle every month. Set up properly, the offsetting entry arises automatically, and the intercompany positions reconcile without anyone having to go looking for them.

Why this is the hardest part

Because an error here plays out three times over: in the revenue of two entities and in the project's margin. This is the part where we spend the most design attention for a multi-company service provider, and the part you should explicitly ask about when requesting a proposal.

5

Years of management, not one project

An environment like this is never finished, and that's not a shortcoming but the nature of the work.

The organization changes

A new entity is added in a new country. A rate structure changes. A contract type that didn't exist before becomes the standard. Every change touches the same three components, and needs to be carried out in a coordinated way.

The month-end close has to keep going

Here, management mainly means making sure the invoicing round simply runs every month. Being available at the moment it needs to happen, not two days later. That's a different kind of service than project work, and it calls for agreements set up accordingly.

Upgrades without interruption

Odoo releases a new version every year. In an environment with multiple entities, its own rate logic, and intercompany flows, an upgrade is a project with testing on each of those points. Planning ahead for that is cheaper than staying on a version that no longer gets support.

Do you operate from multiple entities?

Then the question isn't whether Odoo can handle multi-company, it can, but whether your setup properly captures the connection between administration, hours, and invoicing. That's the difference between a month-end close that takes a day and one that takes a week.

We're happy to take a look with you at your current setup, or at what a switch would mean for your situation.

Schedule a strategy session →