What is the Best Practise to Manage Companies in Multiple Countries?

Dear members…

What is the best practise to manage companies in multiple countries (multi-currency accounting) in ERPNext?

  • Option-1: Create Separate Companies in ERPNext with default Currencies (Common USD and native country currency for each company). This setup will have Reports in one page.

  • Option-2: Create Separate Instance for each Company. Consolidated reports can achieved by add Frappe Insights. But there are certain limitations.

Here the accounts are managed from the Head Office in India and have branches in multiple Countries.

Awaiting any of your suggestion. Thank you.

1 Like

I would counsel against option 2. Combining separate instances is significantly harder than splitting them apart if that becomes appropriate.

Some things you’ve already realized that I would like to add some flavor to:

  • If your business is domiciled and/or legally registered in a country, that should correspond to a (1) Company doctype
  • For each currency you do business in, it is appropriate to have a A/R and/or A/P account in that currency. Using multicurrency accounts is not considered a best practice.
  • It is much more convenient to have a consolidation and/or eliminations company in the same instance as your others, or at least your primary company.

Consolidated reports can achieved by add Frappe Insights. But there are certain limitations.

The limitation is time and effort - you will have to rewrite all consolidating reports in Insights, which isn’t unsurmountable, but if a customer brought this to me, I’d probably decline the project. Insights can only combine queries across databases into a “OLAP” SQLite table and then query that. A more mature or enterprise-y solution would be to build a data lake using the write logs from your various instances - that’s “just” an ETL pipeline that pushes everything into the database of your choice. This is a similarly large and difficult project based on the scope of the businesses you are describing. Additionally, you loose all native intercompany ERPNext features if you do this, which would be a shame because they’re good features, and you’re introducing new exception reporting requirements to catch the intercompany activity that would otherwise just work.

We have implemented a solution for a customer who chose Option 2 that calls the report APIs between the ERPNext instances. It’s hard to test and hard to debug and things that should be common across instances don’t end up being that way - CoA, Cost Centers, etc. It is similarly limited, very much like the Insights approach.

I think it’s better to make this as a horizontal scaling infrastructure problem than it is to combine data from multiple instances in a performant way.

1 Like

Hi @ameerbabu

Go with Option 1 unless:

  • The companies are entirely unrelated (different legal ownership, processes, or compliance needs).
  • Or You need strict data firewalls with zero shared infrastructure.
  • Or, there’s a compelling technical/organizational reason for full isolation.

The consequences of opting Option 2 can be;

  • No native consolidated reporting: Requires Frappe Insights or external BI tools — more setup, more complexity, and limitations on drill-down/report customization.
  • Duplicated setup/maintenance: Upgrades, backups, user management all multiply.
  • More expensive: Hosting and admin overhead is higher.