Distributed ERP: running multiple sites and entities on one system
Distributed ERP, for a company with a handful of sites, means shared items and customers across those sites, with a separate set of books for each legal entity.
Distributed ERP, for a company with a handful of sites, means shared items and customers across those sites, with a separate set of books for each legal entity. Two to six sites usually fit one Odoo database or one Business Central tenant. Give each legal entity its own company. Add a second Business Central environment only when the United States and Canada each need their own localization. As of October 2026, Business Central Essentials is USD 80 per user per month, paid yearly, and that license can open every environment on the tenant unless an admin removes access.
A second address is often a warehouse, not a second company. A US corporation and a Canadian corporation are two companies. The pages below separate those cases, then price licenses, tax, and the month-end work that internal sales create.
What distributed ERP means for two to six sites
Search results for the phrase still mix in the dictionary sense of the word distributed. In a buying conversation it means something narrower: two to six sites, often two to six legal entities, sometimes one country and sometimes the United States plus Canada, replacing a stack of separate accounting files.
Three structures cover that range.
- One legal entity, several warehouses. Shared items and customers are the default. Site profit is a dimension or an analytic account. There is no intercompany sale, because there is only one set of books.
- Several legal entities in one database. This is the Odoo multi-company pattern, including the retail example Odoo gives for a chain in the United States and Canada.
- One environment or database per country, with companies inside each, and a consolidation on top. This is the Business Central pattern when one office needs the US localization and another needs the Canadian one.
Odoo defines a company as a separate legal entity with its own financial records, and a branch as a subdivision of a parent, such as an office or a department. Independent subsidiaries should be companies. Business Central treats each company as the legal entity or business unit with its own accounting. A branch office that invoices under the parent's tax number is structure 1. A sister corporation with its own GST or IRS filing is structure 2 or 3.
Our ERP implementation work starts by writing that list down: legal names, tax registrations, warehouses, and which items are the same SKU in every building. The platform choice follows that list.
How to choose one company, one database, or a country environment
Use the matrix on your own facts. A distributor with two warehouses and one GST number almost always stays on one company. A group with a US Inc. and a Canadian corporation does not.
- One company, extra warehouses (Items and customers: One item and customer list · Documents between sites: Inventory transfers and analytic or dimension profit · Tax and currency: One country localization; provincial or state rules inside it · Month-end group view: No consolidation company · License effect: No second-company plan change and no second production environment)
- One Odoo database, a company per legal entity (Items and customers: Products and contacts shared by default; document stays on the company that created it · Documents between sites: Inter-company can create the other side's order, bill, and stock move · Tax and currency: Each company has its own currency and fiscal localization · Month-end group view: Mirrored documents are documented; specify the elimination entry in the design · License effect: Standard plan upsells to Custom when multi-company is turned on)
- Business Central environment per country (Items and customers: Each environment has its own database · Documents between sites: Intercompany sales and purchases, including across environments · Tax and currency: Country on the environment sets localization and Azure geography · Month-end group view: A consolidation company can pull other environments; eliminations are a manual journal · License effect: User license covers the tenant; each extra production environment is a CSP add-on)
Read the license column with the scope in mind. A shared tenant can still be two databases. Companies inside one Business Central environment share one database and one compute cluster. A Canadian environment is a second database. Intercompany setup and consolidation connect the two. Odoo's shared product record applies inside one database.
If you want the same grid with your own weights, use the ERP comparison matrix and bring the scored version to the design call.
A new product line is a common false trigger for a new company. Odoo says a new product line often should stay one company and use analytic accounts and extra warehouses. Open a company when the legal entity, the tax authority, or the statutory chart changes. Open a warehouse when the dock address changes.
When a site is a warehouse, a branch, or its own company
Odoo 19 holds multiple companies in one database. Authorized users can select several companies at once, share some records, and see aggregated figures without changing screens. That is the practical meaning of one system for a group this size.
Shared by default does not mean identical in every field.
- Products and contacts are shared. The sales price and the internal reference are shared. Cost is company-specific, so a US company and a Canadian company can carry different unit costs on the same product.
- Quotations, invoices, and vendor bills stay on the company that created them. A user who has selected the wrong company will file the document on the wrong ledger.
- Inter-company rules can auto-create vendor bills, sales orders, purchase orders, and synchronized stock moves.
- Odoo does not auto-create a warehouse for a company you add after the first setup. Put the warehouse on the implementation checklist for every company you add after the first setup.
Branches are stricter than they look. Adding a branch turns multi-company on. Branch accounting settings are inherited from the parent, and other configuration is per branch. Selecting the parent links its branches. Selecting a branch does not link the parent. A company that was created as a parent cannot later be converted into a branch. If you might fold a small office into the parent later, create it as a branch or a warehouse at the start. You cannot demote a parent afterward.
The cross-border example in that same Odoo page is the one to copy when you have both countries: separate companies, because each country has its own tax rules, with inter-company transactions for cross-border inventory and with sales in the local currency. A second warehouse in Ohio, under the same US corporation, stays a warehouse on that one company.
Plan changes follow the company count on a paid Odoo Online database. Turning on multi-company on the Standard plan creates an upsell to Custom. Yearly or multi-year contracts get an upsell order with a 30-day limit. Monthly contracts switch to Custom, and the new rate applies on the next bill. This upsell does not apply to the One App Free plan. The pricing FAQ says One App Free allows multiple companies, that installing extra apps moves a free database to Standard, and that installing Studio or adding companies moves a database to Custom. Custom is the plan that FAQ names for multiple companies on one database. Price the project on Custom if you will hold more than one company on a paid database. The Standard card is the wrong budget line for that design.
What a Business Central environment shares across companies
Essentials or Premium includes one production environment and three sandbox environments. Extra production environments are bought from a CSP partner. Each extra production environment includes three more sandboxes and 4 GB of tenant-wide database capacity. Microsoft documents those extra environments for offices in other countries or regions.
The country you pick when the environment is created sets the localization and the Azure geography. Canada and the United States are both localized on the North America base app, and they are separate environment countries. Canada deploys to the Canada Azure geography. The United States deploys to the United States Azure geography. Supported application languages include English (Canada), French (Canada), and English (United States). Have any design that puts a Canadian company inside a United States environment shown on your data before you fund it. The published rule sets country at the environment.
Inside one environment, the ceiling is high and the coupling is tight. One environment can hold at most 300 companies. Two to six companies will not hit that cap. What will matter is the shared database: upgrades, restores, extension installs, data export, and point-in-time restore apply to the whole environment, not to one company. A restore that fixes a posting error in the parent also rolls the subsidiary back to the same moment. Schedule that window with every company that shares the environment.
Licenses follow the tenant. Assign a Business Central license and that user can enter every sandbox and production environment by default. Access can be removed in a given environment. The license type still limits what the user can do in each environment they can open. You do not buy a second Essentials seat for the same person because Canada lives in a second environment. You do buy the environment. The capacity page names the add-ons Dynamics 365 Business Central Additional Environment Add-on, Database Capacity (1 GB), Database Capacity (100 GB), and Database Capacity Overage (1 GB). It does not publish a dollar price for them. Ask the CSP to price the environment add-on as its own line.
Storage is pooled. Default capacity is 80 GB plus 3 GB per Premium user, 2 GB per Essentials user, and 1 GB per Device license. Capacity is shared across every environment on the tenant. Going over the quota blocks new environments and copies. It does not stop transactions in environments that already exist, and Microsoft does not auto-bill the overage. A group that adds a Canadian environment should check the pool before go-live, because the new environment adds 4 GB and then starts consuming the same pool as the US database.
For how a Business Central rollout is usually cut into a first phase, the environment count is the decision that moves the budget. One country, several companies, one production environment. Two countries, two production environments, one tenant, one license per person.
How intercompany sales post and how eliminations are entered
Internal sales are where the design gets expensive. Inventory in transit, and the profit sitting in that inventory, still have to leave the group result. The software will move the document. A person still has to prove the elimination.
Business Central intercompany lets partners exchange sales and purchase transactions manually or automatically. All partners must share one intercompany chart of accounts and, if you use them, the same intercompany dimensions. A synchronization partner is usually headquarters and does not have to be. Partners in another tenant or environment connect through a Microsoft Entra app registration, a client ID, a client secret, and a token endpoint. That is the path between a US environment and a Canadian environment.
Two limits belong in the design, not in a footnote. Online Business Central cannot use a file-folder transfer. File Location only downloads to the user's computer, and Microsoft recommends Email instead. Purchase lines for resources, fixed assets, and item charges are not fully supported: the receiving company's line type is blank and must be updated by hand. If your internal trade is mostly inventory, the automatic path is the one to test. If your internal trade is management fees, equipment, or landed-cost charges, budget the manual line-type step into the close.
Consolidation sits beside that flow. Each company in a consolidation is a business unit, and Business Central posts their general ledger into a separate consolidated company. It can consolidate different charts of accounts, fiscal years, and currencies, a percentage of a unit, other accounting systems, and other Business Central environments. Eliminations are a manual journal. Review them with the G/L Consolidation Eliminations report before posting. Nobody at month-end should discover that the report is the review step and the journal is still unposted. Put both on the close checklist in the first month you run internal sales.
On Odoo, the documented automation is the mirror: vendor bills, sales orders, purchase orders, and synchronized stock moves inside one database. Specify, in writing, who removes internal revenue and the profit in unsold internal inventory, and have that entry demonstrated on your chart. The multi-company pages describe the mirrored documents. They do not replace a close walkthrough.
Assume a US company sells finished goods to a Canadian sister each week, and the Canadian company still holds some of that stock at month-end. On Odoo, both companies live in one database, the inter-company rule creates the other side, and each company keeps its own currency. On Business Central, the two companies sit in two environments, the Entra connection carries the sales and purchase documents, and the consolidation company needs a manual elimination journal after the G/L Consolidation Eliminations report is reviewed. Either design can close. The Business Central version adds an environment add-on, a cross-environment connection, and a journal that does not post itself. Price that close while you are still choosing the instance.
Which tax and currency apply on a US and Canadian shipment
Each company needs a home currency and a tax setup that matches where the goods land. Group reporting is a second view of those books. It does not replace them.
Every Odoo company has its own main currency, taken from the company country and changeable in accounting settings. Foreign-currency invoices and bills are allowed. Exchange differences post automatically to a dedicated journal. Rates can be entered by hand or updated daily, weekly, or monthly from a web service. A Canadian company that buys in USD still has CAD as its main currency unless you change that setting on purpose.
Business Central keeps a local currency per company, posts foreign-currency documents, revalues open customer, vendor, and bank entries, and can keep an additional reporting currency. Exchange rates can load from an external service. That service does not revalue amounts already posted. Revaluation of open entries is the exchange-rate adjustment batch job. If finance expects the rate feed to reprice open invoices overnight, the batch job is the missing step. Run it on a calendar, in each company, before consolidation.
Canadian sales tax is provincial. The CRA GST/HST table, current with the Nova Scotia change of 1 April 2025, is the rate card to configure. For delivered goods, the rate follows place of supply, which is where the goods are delivered. A warehouse in Alberta that ships to a customer in Ontario collects Ontario's rate, not Alberta's.
- Alberta, Northwest Territories, Nunavut, Yukon (GST/HST: 5% · Provincial sales tax on the same CRA table: 0%)
- British Columbia, Manitoba (GST/HST: 5% · Provincial sales tax on the same CRA table: 7%)
- Saskatchewan (GST/HST: 5% · Provincial sales tax on the same CRA table: 6%)
- Quebec (GST/HST: 5% · Provincial sales tax on the same CRA table: 9.975%)
- Ontario (GST/HST: 13% · Provincial sales tax on the same CRA table: Not applicable (HST province))
- Nova Scotia (GST/HST: 14% · Provincial sales tax on the same CRA table: Not applicable (HST province))
- New Brunswick, Newfoundland and Labrador, Prince Edward Island (GST/HST: 15% · Provincial sales tax on the same CRA table: Not applicable (HST province))
Odoo's Canada localization installs a chart of accounts, provincial fiscal positions (including Quebec), and preconfigured taxes. Set the customer's fiscal position to the delivery province. Leave it blank when the customer picks up in the seller's province. AvaTax is documented for companies with locations in Canada or the United States. It is a calculator you can turn on, not a filing service the localization forces you to buy.
US sales tax is local. As of 1 July 2026, the Tax Foundation reports that 45 states levy a state sales tax. Five do not: Alaska, Delaware, Montana, New Hampshire, and Oregon. Only Alaska among those five lets localities levy a sales tax. The population-weighted average combined state and local rate is 7.53%. The highest combined average in that table is Louisiana at 10.13%. Odoo's United States localization follows US GAAP as Odoo describes it, with a US chart of accounts, 1099 CSV export, NACHA/ACH payment files, and check layouts. Odoo states that US sales and purchase tax rates vary by jurisdiction and points to AvaTax for real-time calculation. There is no federal retail sales tax rate in that package.
A practical test, before any site goes live: one order shipped across a provincial border, one order picked up at the shipping warehouse, one order shipped into a US state with a local add-on, and one order shipped into a state with no statewide sales tax. Compare the tax lines to the CRA table and to the customer's jurisdiction. The ERP for Canadian distributors guide covers the single-country version of this setup. Cross-border groups run that test in each company, then run the internal sale between them.
What a shop can still do if the network drops
Remote sites worry about the link, and the documented answer is narrow. Odoo Point of Sale is browser-based and is built to keep working through a temporary network outage. That statement is about POS. Purchasing, warehouse transfers, manufacturing, and the general ledger still need the connection.
For a counter that sells from stock, Odoo POS is the path that survives a short outage. For a warehouse that receives purchase orders and ships transfer orders, plan the floor as work that pauses when the link pauses. Test the pause on a copy of your process: how long the register keeps selling, which POS orders sync when the network returns, and which warehouse screens stop. Do not budget a full offline ERP for the receiving dock. If the business cannot pause receiving, the design question is a local procedure for those hours, then a catch-up posting, and that procedure belongs in the phase plan.
Business Central environments for the US and Canada are online environments in two Azure geographies. Latency between a plant and its environment is a network-design question for the CSP and your connectivity vendor. It is not solved by putting both countries in one environment, because the country choice is what sets the geography.
What licenses and the first project cost
License math is predictable. Project math is a scoped hour count plus the environment add-on. As of October 2026, list prices below are the vendor pages linked on each row.
- Business Central Essentials (United States, per user per month, paid yearly: USD 80 · Canada, per user per month, paid yearly: CAD 108.50, plus applicable tax)
- Business Central Premium (United States, per user per month, paid yearly: USD 110 · Canada, per user per month, paid yearly: CAD 149.20, plus applicable tax)
- Business Central Team Members (United States, per user per month, paid yearly: USD 8 · Canada, per user per month, paid yearly: CAD 10.90, plus applicable tax)
Assume 18 people who post orders, inventory, and invoices on Essentials, and 6 people who only approve on Team Members. They work in both countries, on one tenant, with a US production environment and a Canadian production environment.
- Essentials: 18 times USD 80 is USD 1,440 per month.
- Team Members: 6 times USD 8 is USD 48 per month.
- User total on the US price list: USD 1,488 per month, paid yearly, which is USD 17,856 for the year.
- The same headcount on the Canadian price list: 18 times CAD 108.50 is CAD 1,953, and 6 times CAD 10.90 is CAD 65.40, so CAD 2,018.40 per month plus applicable tax.
- Capacity from the formula, counting the 18 Essentials users and not the Team Members: 80 GB plus 18 times 2 GB is 116 GB, shared by both environments. The extra production environment adds 4 GB, for 120 GB of allowance before any overage add-on.
- The second production environment is an additional CSP line. Price it from the reseller. There is no public dollar figure on the capacity page to multiply.
You pay the user line once per person. You pay the environment line once per extra production environment. Pick the US price list or the Canadian price list for the tenant quote. The table is both published lists, not a bill that adds USD 1,488 to CAD 2,018.40.
Odoo is priced per user on the database, and the pricing page shows more than one figure per plan. As of October 2026 the Standard card shows USD 24.90 and USD 31.10, and the page also prints USD 31.10 and USD 38.90. The Custom card, which is the plan that lists multi-company, Studio, external API, Odoo.sh, and on-premise, shows USD 49.00 and USD 61.10, and the page also prints USD 61.00 and USD 76.20. The discount is valid for 12 months for the initial users ordered. Odoo.sh hosting is extra. A Light User is shown as USD 8.90, and the page does not state the billing period beside that figure. One App Free is USD 0 for one app, unlimited users, on Odoo Online.
Assume 24 named users on one database with a US company and a Canadian company, which puts a paid database on Custom.
- At the two Custom card figures, 24 users are USD 1,176 per month or USD 1,466.40 per month.
- At the two figures the page also prints, 24 users are USD 1,464 per month or USD 1,828.80 per month.
- Those four amounts are the same page read four ways. Keep the pair your order form uses, and keep the 12-month discount inside the window it names.
Implementation hours, for Odoo, are the published Success Packs. For a new customer, first pack only, the discounted prices are USD 493 (Starter, 4 hours), USD 3,060 (Basic, 25 hours), USD 5,950 (Standard, 50 hours), USD 10,625 (Custom, 100 hours), and USD 21,250 (Pro, 200 hours). Returning-customer prices on the same page are USD 580, USD 3,600, USD 7,000, USD 12,500, and USD 25,000. Travel time and expenses are extra. The estimator's finance scope line includes Accounting Consolidation as a label. Above 50 users, Odoo says to contact them. Odoo also says 80% of projects inside its public estimator scope go live in 200 hours or less, and it claims a 98% implementation success rate with a Success Pack versus 65% without one. Both figures are Odoo's, and the second comparison is against Odoo's own baseline. Use the hour ladder for a budget conversation. Use a scoped phase plan for a contract.
There is no matching public project-price ladder for Business Central in the material a buyer can check. Budget the licenses, the extra environment, the capacity add-on the CSP quotes, and a phase plan with named hours. Ask each bidder to price data migration, intercompany setup, and the elimination journals as their own lines.
How to phase the first rollout
Phase one is the smallest set of companies that can issue an invoice, receive stock, and close a month. For most groups of this size that is the parent plus one subsidiary, or the US company plus the Canadian company if cross-border shipments are already weekly. Additional warehouses of an entity that is already live can follow in a later phase. Additional legal entities that do not trade with the first pair can wait.
The sequence we use on an Odoo implementation or a Business Central one is the same shape.
- Freeze the company list, the warehouse list, and which SKUs are shared. Decide branch versus company before any parent company is created in Odoo.
- Confirm the environment map. One Business Central production environment per country. One Odoo database on Custom if more than one company will live there.
- Load items, customers, open receivables, open payables, and on-hand stock for the phase-one companies only.
- Post one internal sale and one elimination, on a sandbox, with the people who will own the close.
- Run the four tax orders from the tax section: cross-province delivery, pickup, a US jurisdiction rate, and a state with no statewide sales tax.
- Train the posting roles, then open the remaining sites of those same legal entities.
Our target for a first usable phase is 8 to 12 weeks. That target assumes the company list is stable and the first phase is one or two entities. Sites you hope to retire later wait for the next phase. A group that still changes its mind about which corporation owns a warehouse will spend the weeks on that argument.
Bring three things to the first working session: the legal names and tax numbers, a count of named users by role, and one recent month of internal sales or transfers. We will map those to a company structure, a license mix, and a phase-one scope you can hand to finance.
How Flectic can help
Flectic implements ERP on Odoo or Dynamics 365 for companies of 20 to 100 people in the US and Canada, with finance, payables and receivables posting to a single ledger so leadership decides on reconciled numbers. Each phase has a defined scope and price before it starts, and the first one delivers a working part of the system. If you are planning a rollout across sites, start with our ERP implementation service. Book a free discovery call with Flectic to map your sites and entities before you pick a platform.
Sources
Multi-company : Odoo 19.0, Odoo, October 2026
Companies : Odoo 19.0, Odoo, October 2026
Odoo Pricing, Odoo, October 2026
Odoo Success Packs, Odoo, October 2026
Set up intercompany transaction posting, Microsoft, October 2026
Consolidate data from multiple companies, Microsoft, October 2026
Managing Production and Sandbox Environments, Microsoft, October 2026
Country/Regional Availability and Supported Languages, Microsoft, October 2026
Operational challenges with many companies per environment, Microsoft, October 2026
Managing Capacity, Microsoft, October 2026
Operation Limits in Dynamics 365 Business Central, Microsoft, October 2026
Dynamics 365 Business Central pricing (United States), Microsoft, October 2026
Dynamics 365 Business Central pricing (Canada), Microsoft, October 2026
GST/HST calculator (and rates), Canada Revenue Agency, October 2026
State and Local Sales Tax Rates, Midyear 2026, Tax Foundation, October 2026
Canada fiscal localization : Odoo 19.0, Odoo, October 2026
United States fiscal localization : Odoo 19.0, Odoo, October 2026
Multi-currencies : Odoo 19.0, Odoo, October 2026
Update currency exchange rates, Microsoft, October 2026
Point of Sale : Odoo 19.0, Odoo, October 2026
Frequently asked questions
Should each site be its own company, or a branch or warehouse under one company?
Use a company when the site is its own legal entity with its own tax registration and financial statements. Use a warehouse, plus analytic accounts if you need profit by site, when the address belongs to a company you already keep. In Odoo, a branch is a subdivision of a parent: accounting settings come from that parent, other configuration is per branch, and a company created as a parent cannot later be converted into a branch. Adding a branch turns multi-company on.
Can one Business Central environment run both a US company and a Canadian company?
The country is chosen when the environment is created, and that choice sets the localization and the Azure geography. Canada deploys to the Canada geography and the United States deploys to the United States geography, even though both use the North America base app. Plan on one production environment per country and a consolidation across them. Ask Microsoft to show any mixed-country setup on your own test data before you treat it as a configuration you can run.
If the US and Canadian companies are in different Business Central environments, do we pay for the same users twice?
A person who is assigned a Business Central license can open every sandbox and production environment on the tenant by default. An administrator can remove that access in one environment. The same license type still limits what the person can do in each environment they can open. A second production environment is a separate CSP add-on, so the environment fee is extra even though the user fee is not doubled.
Does Odoo multi-company force us off the Standard plan?
Turning multi-company on for an Odoo Online Standard database creates an upsell to Custom. On a yearly or multi-year contract, that upsell is an order with a 30-day limit. On a monthly contract, the database switches to Custom and the new rate applies on the next bill. That upsell does not apply to the One App Free plan. The pricing FAQ says One App Free can hold multiple companies, and that adding companies or installing Studio moves a database to Custom, which is the plan it names for multiple companies on one database.
How do intercompany sales and inventory transfers post on both sides?
Inside one Odoo database, inter-company rules can create the matching vendor bill, sales order, or purchase order and can synchronize the stock move. In Business Central, partners exchange sales and purchase transactions manually or automatically, and every partner must share one intercompany chart of accounts and the same intercompany dimensions if dimensions are used. Purchase lines for resources, fixed assets, and item charges arrive with a blank line type in the receiving company, and someone has to set that type by hand.
Who eliminates intercompany revenue and inventory profit at month end, and is that automatic?
In Business Central, eliminations are a journal prepared in the consolidation company. Finance reviews that journal with the G/L Consolidation Eliminations report and then posts it. The posting step is manual. For Odoo, ask the implementer to post a sample internal sale on your chart of accounts and show the entry that removes internal revenue and inventory profit before you accept the design. Mirrored orders and stock moves are documented; treat the elimination entry as its own test.
Which tax applies when a Canadian warehouse ships to another province, or when a US warehouse ships to a customer in another state?
Canada has no single sales-tax rate. For delivered goods, GST/HST follows the place of supply, which is where the goods are delivered. Odoo’s Canada localization expects the customer fiscal position to match the delivery province, and to be left blank when the customer picks up in the seller’s province. US state and local rates vary by jurisdiction. As of 1 July 2026, 45 states levy a state sales tax and five do not. Both Odoo country localizations document AvaTax for companies that want a rate calculated at order time.
What does a two-to-six entity implementation cost beyond the user licenses?
Odoo publishes Success Packs for a new customer, first pack only, at USD 493 for 4 hours, USD 3,060 for 25 hours, USD 5,950 for 50 hours, USD 10,625 for 100 hours, and USD 21,250 for 200 hours. Returning-customer prices on the same page are USD 580, USD 3,600, USD 7,000, USD 12,500, and USD 25,000. Travel time and expenses are extra, and above 50 users Odoo says to contact them. Business Central extra production environments and extra database capacity are named CSP add-ons without a dollar price on the capacity page, so have the reseller quote those lines on their own.