Common Mistakes When Setting Up Odoo Multi‑Company and How to Avoid Them
Common Mistakes When Setting Up Odoo Multi‑Company and How to Avoid Them
Running several legal entities under one Odoo database is a powerful way to centralise reporting, share product master data and reduce IT overhead. Yet, many businesses launch a multi‑company environment only to hit surprising roadblocks: duplicated invoices, wrong tax calculations, or users seeing data that belongs to another company. The root cause is often a simple configuration slip‑up. Below we dissect the most frequent mistakes, explain why they matter, and give you concrete steps—complete with real Odoo menu paths, field names, and module references—to keep your multi‑company setup clean and compliant.
Mistake #1: Skipping Inter‑Company Transaction Rules
Why it matters. Without explicit inter‑company rules, Odoo treats sales from Company A to Company B as ordinary third‑party transactions. This leads to duplicated journal entries, double‑taxation, and inventory mismatches.
How to avoid it. Enable the built‑in Inter‑Company Transactions feature:
- Navigate to Settings → Companies → Inter‑Company Transactions.
- Check Generate Inter‑Company Sales Orders and Generate Inter‑Company Purchase Orders.
- Set the
intercompany_user_id(found on the company form) to a dedicated “Inter‑Company Bot” user. This user should have only thesale_userandpurchase_usergroups.
After saving, Odoo will automatically create the counterpart document in the target company, keeping stock levels and accounting entries synchronised.
Mistake #2: Using a Single Chart of Accounts for All Companies
Why it matters. Different legal entities often have distinct tax regimes, reporting formats, or statutory account numbers. A shared chart of accounts forces you to map incompatible accounts, producing misleading financial statements and audit headaches.
How to avoid it. Create a dedicated chart for each company:
- Go to Accounting → Configuration → Chart of Accounts.
- Duplicate the base template (e.g.,
account.chart.template) and rename it with the company code, such as “US‑COA” or “EU‑COA”. - On each company record (Settings → Companies → Companies), set the
chart_template_idto the appropriate template. - Use
company_idon every journal line to ensure entries are filed under the correct chart.
Mistake #3: Granting Users Global Access Instead of Per‑Company Rights
Why it matters. A user with the “Administrator” group sees every record across all companies, violating data confidentiality and potentially allowing accidental edits in the wrong entity.
How to avoid it. Configure user access per company:
- Open Settings → Users & Companies → Users and select the employee.
- In the Access Rights** tab, assign only the groups needed for the user’s role (e.g.,
sale_salesman,purchase_user). - In the **Companies** field, tick only the companies the user should belong to. Odoo will automatically filter the UI to those companies.
- For power users who need to switch between companies, enable the “Multi‑Company” option on the user form and set a default
company_id.
Mistake #4: Ignoring Multi‑Currency Settings for International Companies
Why it matters. If one of your subsidiaries trades in euros while another uses dollars, Odoo will store all amounts in the base currency unless multi‑currency is activated. This creates inaccurate profit margins and complicates tax reporting.
How to avoid it. Turn on multi‑currency early in the implementation:
- Open Accounting → Configuration → Settings.
- Check **Multi‑Currencies** and click **Save**.
- For each company, set the correct
currency_idon the company form (e.g., USD, EUR). - When creating products, ensure the
sale_priceandcost_pricefields are entered in the product’s base currency; Odoo will convert them on the fly for each company’s currency.
To keep conversion rates up‑to‑date, schedule the built‑in “Update Currency Rates” cron job or integrate a reliable API.
Mistake #5: Forgetting to Separate Email Routing per Company
Why it matters. Odoo uses a single outgoing mail server by default. When a sales order from Company A triggers a confirmation email, the recipient may see the wrong company logo or legal disclaimer, leading to brand confusion and compliance risks.
How to avoid it. Configure distinct mail servers and templates:
- Navigate to General Settings → Email → Outgoing Mail Servers. Create one server per company (e.g.,
smtp-us.example.comfor the US entity,smtp-eu.example.comfor the EU entity). - On each company record, set the
mail_server_idfield to its dedicated server. - Duplicate the standard email templates (e.g., “Sales Order: Confirmation”) and replace the logo, footer, and legal text with company‑specific content.
- Assign the template to the appropriate company via the
company_idfield on the template form.
With these steps, every automated email respects the originating company’s branding and legal requirements.
Mistake #6: Not Isolating Backups for Each Legal Entity
Why it matters. A single database backup restores all companies at once. If a subsidiary needs to roll back a month due to a faulty migration, the other companies are forced to revert as well, potentially wiping out valid data.
How to avoid it. Deploy each company on its own Odoo instance, or at minimum, schedule per‑company dump files. A practical way to achieve this without massive infrastructure costs is to host Odoo on a dedicated Cloud VPS. The VPS gives you root access, allowing you to script nightly pg_dump commands that include the --schema=public filter and a --data-only flag for each company’s schema (if you use separate schemas). Store the dumps on a separate block storage volume and rotate them weekly. This approach isolates recovery points while keeping operational overhead low.
Conclusion
Multi‑company in Odoo delivers powerful synergies, but only when the foundation is built on precise configuration. By avoiding the six pitfalls outlined above—inter‑company rules, shared chart of accounts, overly broad user rights, missing multi‑currency, undifferentiated email routing, and monolithic backups—you protect data integrity, comply with local regulations, and keep your finance team confident in the numbers. Take the time to audit each setting before you go live, and treat the multi‑company setup as a living document that evolves alongside your business structure.