ERP cost: build, partner or SaaS

Open source ERP software is free to license in the Community and ERPNext cases, so cost sits in hosting, configuration, migration, training and yearly upgrades. This page breaks down each route and how to build your own estimate.

On this page

What does ERP cost when you build, partner or buy SaaS?

For a finance or IT leader comparing routes, software licensing is often the smallest line in the ERP budget. The total depends on scope, data migration, customization and the yearly effort of keeping the system upgraded. Three routes deserve a side-by-side comparison. You can self-implement Odoo Community or ERPNext with your own staff, buy a partner implementation on top of a licensed platform, or subscribe to a SaaS ERP. Odoo Enterprise and Odoo's SaaS plans are priced per user per month, with a yearly discount on the published pricing page, so the recurring license line scales with headcount. ERPNext self-hosting is free under GPL-3.0, which moves the cost into hosting, labor and support. DeployOpen does not publish figures for this work because a quote follows the written scope.

Each route shifts cost between one-time and recurring items. One-time costs include fit-gap analysis, configuration, any custom modules, data migration and training. Recurring costs include subscriptions or support, hosting, security patching and the major upgrade cycle. Odoo's standard support covers three years after a major release, and its upgrade service requires an Enterprise subscription for on-premise databases, so the upgrade budget must be planned from the start. ERPNext's supported versions are listed by Frappe, and warranty coverage depends on a matching Frappe Cloud support plan. Confirm each of these terms against the current vendor documentation before you compare totals.

Ask every bidder for the same written scope: number of users by role, entities and currencies, modules in use, years of history to migrate, integrations, and the custom modules expected. Request one-time and recurring costs as separate lines, including who is paid for hosting, backups, upgrade testing and the first year of support. Ask how custom modules will be kept upgradable and whether the upgrade effort is priced per cycle or per engagement. A partner quote that omits migration reconciliation or training is incomplete, and a SaaS quote should state which features need a higher tier.

Which cost components apply to each route

This table compares who is paid for each cost component under an in-house build on Odoo Community or ERPNext, a partner implementation, and a SaaS subscription. Read each row as a separate line item to confirm in a quote, and note which costs are one-time and which recur every year.

Cost componentIn-house build on Odoo Community or ERPNextPartner implementationSaaS subscription
Software licence or subscriptionOdoo Community and ERPNext carry no license fee for self-hosting; Odoo Enterprise is a recurring per-user subscription (confirm current terms with Odoo)Same license model as the build route, billed through the partner or directly; confirm who holds the Odoo Enterprise or Frappe support contractRecurring per-user monthly subscription; Odoo pricing and Business Central pricing both bill per user per month
Hosting and infrastructureRecurring; ERPNext self-hosting is free, but servers, backups and staging are paid by the client. Frappe Cloud hosting starts at 5 US dollars per month (ERPNext pricing page)Recurring, usually paid by the client to its cloud provider or data center; the partner may resell or manage it, so confirm whichRecurring, included in the subscription; confirm data location, backup and disaster recovery terms in the contract
Odoo Enterprise or Frappe support plansOptional recurring; needed for Odoo upgrade service and Enterprise features, and Frappe warranty coverage depends on a matching Frappe Cloud support planRecurring support plan on top of partner fees; confirm response scope and which versions are coveredUsually included in the subscription; confirm support hours, severity levels and version coverage
Fit-gap and configurationOne-time, paid through internal staff time; the main cost is the effort to map processes and configure modules without outside experienceOne-time, billed against a fixed scope agreed in writing before work starts; ask for the fit-gap method and deliverablesOne-time configuration fee or internal effort; vendor or partner services are often quoted separately
Custom modules and integrationsOne-time build plus recurring maintenance; Server Scripts are disabled by default from version 15 and must be enabled, so plan the approach earlyOne-time build by the partner, plus recurring maintenance; ask how custom code is kept upgradable across versionsOften limited to vendor-supported extensions; custom work may need a higher subscription tier or a separate services contract
Data migrationOne-time, staffed internally; ERPNext Data Import handles CSV and Excel files but documentation advises a few thousand records per importOne-time, quoted per migration scope including trial loads and reconciliation sign-offOne-time, usually billed by the vendor or partner; confirm import tooling, batch limits and reconciliation support
TrainingOne-time, plus recurring for new hires; internal trainers carry the cost and the time away from operationsOne-time, often bundled into the implementation; ask for role-based training plans and materialsOne-time or recurring vendor training, sometimes limited; confirm what is included in the subscription
Yearly upgrade and testing effortRecurring internal effort; Odoo on Odoo Online and Odoo.sh requires major upgrades every two years, and each upgrade needs a tested database copyRecurring under a support or retainer agreement; confirm upgrade scope, test environments and who signs offVendor-managed upgrades on a release schedule; the client still pays for regression testing of its own customizations
Internal staff time and ongoing supportRecurring; needs administrators for updates, backups, security patches and user support, typically the largest hidden costLower internal effort but not zero; the client still owns business ownership, data quality and change approvalsLowest administration effort; the client still owns process design, access reviews and vendor management

What the licence and subscription lines actually include

Odoo Community and ERPNext carry no license fee. Odoo Community is published under the LGPL version 3, and ERPNext is licensed under GPL-3.0 on top of the Frappe Framework, which is MIT licensed. Self-hosting ERPNext is free according to its pricing page. The cost of these routes sits in hosting, implementation, support and upgrades, not in the software itself. Odoo Enterprise is different: it is a paid subscription, its source code is not publicly available, and it is the only Odoo edition that includes the upgrade service and on-premise activation with a subscription code. Before budgeting, confirm with Odoo which Enterprise features your processes depend on, because some of them, such as Studio and mobile apps, are not in Community.

Odoo's plan structure decides where you can host and what you can build. The One App Free plan and the Standard plan are both available on Odoo Online only, so neither supports self-hosting. Only the Custom plan can run on Odoo.sh or on-premise, and only Custom includes multi-company, Odoo Studio, external API access and custom modules. If you expect to host in your own cloud or data center, or to build custom modules, the Custom plan is the line to price. Ask Odoo for the per-user monthly price, the yearly discount, the minimum seat count and whether app-level or company-level charges apply, and get those terms in writing. Also ask how AI features are billed, since Odoo says Odoo 20 AI features require in-app credits.

For a per-user comparison, Microsoft's Dynamics 365 Business Central pricing is billed per user per month across Essentials, Premium and Team Members plans, and Microsoft directs buyers to partners for purchase. That means the quote you receive will come through a reseller, so request the same line items you would request from Odoo: the seat price per role, what the Premium tier adds, and the renewal and true-up terms. Whichever route you take, ask every vendor and partner for a written schedule of per-user prices, minimum commitments, price change rights and what happens to your licenses if you stop paying. Those documents, not the public pricing pages, are what your budget should be built on.

What moves the ERP cost up or down

Most of the difference between a low and a high ERP bill comes from a small set of decisions made before go-live. The cards below cover the scope, data and integration choices that set the partner effort, and the upgrade cadence that keeps recurring costs predictable for build, partner or SaaS routes.

Entities and currencies

Each legal entity, currency, tax regime and localization pack adds configuration, chart of accounts mapping and testing. Odoo reserves multi-company and Odoo Studio for the Custom plan, so a group with several entities may face a plan decision before any implementation work starts. Ask a provider to price each entity and currency separately, including intercompany flows and localized tax reporting. Confirm which localization packs your countries need and who maintains them after go-live.

Modules in scope

Every module you turn on, such as inventory, manufacturing, point of sale or HR, adds fit-gap workshops, configuration, role design and test cycles. A narrow first release on accounting and purchasing usually costs less to implement than a full suite in one wave. Ask for the fit-gap output as a list of modules, processes and open decisions, and price each wave on its own. Per-user subscription fees also grow with the number of users in each module.

Customization depth and module count

Custom modules carry the highest recurring cost because each one must be rebuilt, retested and reviewed at every upgrade. ERPNext Server Scripts run Python on document events and are disabled by default from version 15, so enabling them is a governance decision as well as a build task. Ask providers to price custom code by module, state how it stays upgradable, and say who owns the repository and test suite after handover.

Data history and migration batches

Migration effort depends on how many years of history you move, how clean the master data is, and how many batches a trial load needs. ERPNext's Data Import tool handles CSV and Excel files, and its documentation advises importing only a few thousand records at a time, which means large histories are split into many runs. Ask for a fixed number of trial loads, a reconciliation sign-off for opening balances, and a price for archiving history that does not need to move.

Integrations with other systems

Each connection to a bank feed, payment provider, CRM, e-invoicing service, identity provider or warehouse system needs mapping, error handling and monitoring. Single sign-on connectors such as LDAP are usually simple to configure, but the data flows behind them are not. Ask providers to list every interface with its direction, frequency and owner, and to price the monitoring and retry logic separately from the connector setup.

Upgrade cadence and support

Upgrades recur for the life of the system, so the cadence matters as much as the first build. On Odoo Online and Odoo.sh, major version upgrades are mandatory every two years, and Odoo 20.0 standard support runs until September 2029. ERPNext's supported versions are listed by Frappe, and warranty coverage requires a matching support plan. Ask each provider to quote one upgrade cycle, including test database work, regression testing and custom module updates.

How hosting and yearly upgrades add recurring cost

Self-hosting ERPNext has no license fee, but it has a recurring cost line for hosting, upgrades and people. The ERPNext pricing page lists self-hosting as free. Frappe Cloud is the option if you prefer a managed host, with shared site hosting starting at 5 US dollars per month and dedicated servers starting at 125 US dollars per month. Confirm current plan contents with Frappe before you budget, and price your own cloud or data center capacity separately if you host it yourself. On the Odoo side, the Community edition has no subscription fee, but Enterprise features, the upgrade service and on-premise use do require a subscription, so the recurring line depends on which edition you choose. Upgrades are the cost that recurs most reliably. Odoo standard support covers three years after a major release, and Odoo 20.0 is planned to receive standard support until September 2029, while Odoo 19.0 runs until September 2028. Odoo SaaS versions arrive every two to three months and cannot use extended support, so an Odoo Online or Odoo.sh customer must absorb major version moves on a fixed rhythm. For ERPNext, version 15 is supported until the end of 2027 and version 16 until the end of 2029. Each upgrade needs a test copy, regression testing of your custom modules and integrations, and a planned cutover. Those tasks consume internal staff time and, if you use a partner, a retainer or project block that you should price into the first three years. Ask your partner to quote upgrades as a line item, not a surprise. Frappe warranty coverage applies only if you run a listed version and hold a Frappe Cloud support plan that matches it, so a self-hosted ERPNext estate without that plan has no vendor warranty to rely on. Confirm which support tier applies to your version, who performs security patching between major releases, and what a yearly upgrade test cycle includes. Ask for the expected cost of each upgrade, including custom module refactoring, and the retainer terms that cover emergency patches.

How to build your own ERP cost estimate

This sequence turns vague ERP budget lines into a written estimate that compares build, partner and SaaS routes on the same scope, so each quote can be checked line by line against what you actually need.

  1. Define entities, users and modules

    Start by listing every legal entity, currency, country and site that will run on the system, then count named users by role and the modules each role needs, such as accounting, inventory, purchasing, sales or manufacturing. Record which Odoo plan or ERPNext setup each requirement points to, because Odoo's pricing page limits multi-company, Odoo Studio, external API access and custom modules to the Custom plan. Done means every user group has a module list and a licence count you can hand to three vendors or partners without further explanation.

  2. Run a fit-gap to separate configuration from customization

    Walk each process in scope against the standard application and mark every gap as configuration, a workaround, or custom development. A partner usually leads this with your process owners, and you should ask for the method and the sample of processes reviewed in writing. Custom work is the main source of recurring cost later, so each customization needs an owner, a reason and an estimate of the effort to keep it working through upgrades. Done means you have a gap register where each item is tagged, sized and signed off by the business owner.

  3. Size data migration by history and batches

    Decide what must move from the legacy system, typically master data, open balances and open items, and what should be archived instead of loaded. Use the ERPNext Data Import tool's documented guidance of importing only a few thousand records at a time as a planning input, and ask the partner to state its batch size, trial load count and reconciliation approach for each data set. Migration estimates should separate extraction and cleansing from loading and from reconciliation sign-off, since these are often billed differently. Done means each data set has a volume, a source, a load method and a named reconciliation owner.

  4. List integrations and their maintenance owners

    Inventory every system that exchanges data with the ERP, including banks, payment providers, the CRM, e-invoicing channels, identity directory, tax tools and reporting. For each interface, record the direction, frequency and who maintains it after go-live, and note whether it needs an API connection, a file exchange or a custom module. Identity integrations such as LDAP or social login are configuration items in ERPNext and Odoo documentation, but still need testing and support time. Done means every interface has an owner, a build method and a line in the estimate.

  5. Add hosting, licences and support costs

    Price each route on the same basis. For self-hosting, ERPNext's pricing page states the software is free and that Frappe Cloud hosting starts at a listed monthly rate, so your hosting cost is infrastructure, operations staff and backups in your own environment. For Odoo, confirm which edition and plan you need, the per-user monthly price and the yearly discount in writing, and whether on-premise hosting requires an Enterprise subscription. For ERPNext, check whether a Frappe Cloud support plan matches your version if you want vendor warranty coverage. Done means every recurring line has a unit price, a unit count and a source document.

  6. Build a three-to-five-year view with recurring upgrade effort

    Model the cost over a multi-year horizon rather than the first year alone. Use Odoo's published support windows, where standard support for Odoo 20.0 runs until September 2029 and each release has about three years of standard support, and ERPNext's supported version dates, where version 15 is supported until the end of 2027 and version 16 until the end of 2029, to schedule upgrades. Add the effort to test each upgrade and retest custom modules, and ask whether the Odoo upgrade service requires an Enterprise subscription for your database. Done means you have one table covering one-time and recurring costs per year, with each upgrade event dated and costed, and you can explain every number to finance.

When each route fits a finance or IT team

This route fits a team that already has Python or Frappe skills, a limited module scope, and enough capacity to own the platform for years. Odoo Community is licensed under LGPL-3.0 and ERPNext under GPL-3.0, so the software itself carries no license fee. The costs sit in people and infrastructure: the team designs the configuration, writes any custom code, runs the database, and applies every update.

  • Licensing: Self-hosting ERPNext is free according to its pricing page. Odoo Community is also free, but Odoo's upgrade service and on-premise Enterprise features require a paid Enterprise subscription, so Community users lose access to them.
  • Hosting and operations: Frappe Cloud is an option if the team wants managed hosting, with shared sites starting at 5 US dollars per month. Self-managed Docker or bench deployments put backups, patching and monitoring on the team.
  • Upgrades: Odoo standard support covers the first three years after a major release. The team must plan each major version move and test it.
  • Custom code: Server Scripts in ERPNext are disabled by default from version 15 onward, so custom logic often becomes a maintained code project.

Confirm internal capacity honestly before choosing this route, including who covers the upgrade calendar and who signs off on change control.

How compliance obligations change the cost

Compliance obligations add cost to an ERP that holds customer or brokerage records, and most of that cost is recurring work rather than license fees. If your organization is a covered financial institution under the FTC Safeguards Rule at 16 CFR 314.4, the ERP and the systems around it must encrypt customer information in transit over external networks and at rest, enforce multi-factor authentication for anyone who accesses an information system, follow documented change management procedures, and log the activity of authorized users. Each of these becomes a line item in the build or partner scope: TLS and disk encryption on the hosts, an identity provider in front of Odoo or ERPNext, a change record for every customization release, and audit logs that someone reviews. Absent effective continuous monitoring, the rule also requires annual penetration testing and vulnerability assessments at least every six months, so budget for testing as a repeating cost in every year of the system's life.

Records retention is the second driver. SEC Rule 17a-4(b) requires broker-dealers to preserve certain records, including bills receivable or payable, bank statements and originals of business communications, for not less than three years, with the first two years in an easily accessible place. For an ERP, this means you must decide which ledgers, documents and attachments stay in the live database and which move to an archive that can still be retrieved. Ask any partner to price the archive design separately: storage growth, backup copies, restore testing and the effort to retrieve records during an examination all recur. Confirm the retention schedule with your compliance counsel before the data migration plan is written, because it determines how much history you migrate and how much you keep in an archive.

DeployOpen prepares the controls, configuration baselines and evidence that these obligations call for, including logging settings, access reviews and change records. It does not issue audit reports, attestations or certifications, and independent assessors make those determinations. When you request a quote, ask the partner to list each compliance control as a separate deliverable with its recurring effort, and ask who owns the penetration test engagement and the evidence pack for your examiner.

Common questions about ERP cost and effort

How much does an open source ERP cost overall?

The software license is only one part of the total. Self-hosting ERPNext is free under GPL-3.0, and Odoo Community is free under LGPL-3.0, so the recurring cost sits in hosting, implementation, customization, data migration, training and upgrades. Frappe Cloud shared site hosting starts at 5 US dollars per month, and Frappe Cloud dedicated servers start at 125 US dollars per month, according to the ERPNext pricing page. Odoo Enterprise is a paid subscription with per-user pricing, and the Custom plan is the only one that supports on-premise or Odoo.sh hosting. Ask each vendor and partner for a total cost of ownership over five years, split into one-time and recurring lines.

Can our team implement Odoo Community or ERPNext itself?

A capable internal team can install and configure either platform, but the work is more than installation. ERPNext can be installed on Frappe Cloud, with Docker Compose, or manually with the bench command line tool, and the frappe_docker repository provides production images and Compose files. The harder parts are fit-gap analysis, chart of accounts design, localization and tax, integrations, custom modules, data migration and testing. Odoo Community lacks access to the upgrade service, which is only available with an Enterprise subscription. Before deciding, confirm who will own upgrades, backups and security patches, and whether you need a partner for a defined part of the project.

How long does a typical ERP implementation take and what drives the timeline?

No supplied figure gives a standard duration, so treat any timeline as something to confirm in writing. The main drivers are the number of entities, currencies and localization requirements, the modules in scope, the volume and quality of legacy data, the number of integrations, and how many custom modules are needed. Each of these adds review cycles, test rounds and sign-off steps. ERPNext's Data Import tool advises importing only a few thousand records at a time, which means large histories need many batches and trial loads. Ask for a plan with milestones, test cycles and a go-live window that avoids period-end close.

What does the implementation need from our staff?

Expect the business to commit people to process decisions, data validation and testing, not only to the IT team. Finance needs to sign off the chart of accounts, opening balances and reconciliations. Operations leads need to define order, inventory and approval flows, and users need training on their roles. IT owns hosting, identity integration, backups and access reviews. Single sign-on options, such as LDAP for Odoo and LDAP integration for ERPNext, shape the identity work. Ask the partner to name the roles on your side, the hours each role needs per phase and who approves the fit-gap and cutover.

What recurring costs follow go-live?

Recurring costs include hosting, software subscriptions where applicable, support, security patching, backups, monitoring, and the yearly upgrade effort. Odoo standard support covers the first three years after a major release, including security updates, and Odoo SaaS versions are released every two to three months. On Odoo Online and Odoo.sh, major upgrades are mandatory every two years. ERPNext v15 is planned for support until the end of 2027 and v16 until the end of 2029, and Frappe warranty coverage requires a matching Frappe Cloud support plan. Budget for an annual upgrade and test cycle, custom module maintenance and the staff or partner time to run them.

When is a SaaS ERP cheaper than a self-hosted one?

SaaS is often cheaper when the scope is small, the process is standard and the team cannot staff hosting, security and upgrades. Odoo's One App Free plan offers one app with unlimited users on Odoo Online only, and the Standard plan covers all apps on Odoo Online. Self-hosting becomes more attractive when you need on-premise hosting, custom modules, multi-company features, data residency control or a long-term upgrade plan. The Custom Odoo plan is the one that includes on-premise hosting and custom modules, and Microsoft Business Central is priced per user per month through partners. Compare five-year costs for the same scope, including the parts a subscription bundles that you would otherwise pay for separately.

What should a quote for an ERP implementation include?

A useful quote lists scope in writing: entities, modules, integrations, custom modules, data to migrate with the number of years of history, reports, user counts and roles, and sites or languages. It should separate one-time costs (fit-gap, configuration, customization, migration, testing, training, go-live support) from recurring costs (hosting, subscriptions, support, upgrades). It should state the deliverables, acceptance criteria, what the customer must provide, the assumptions behind the estimate and what is excluded. DeployOpen works on fixed scope agreed in writing before work starts, and does not publish a price list, so quotes follow from that written scope. Ask any partner how they keep custom modules upgradable and who pays for upgrade work after go-live.

How DeployOpen scopes and delivers a fixed-scope ERP implementation

DeployOpen is a Chainscore Labs company that plans, implements, integrates, hardens, documents and supports self-hosted open-source platforms inside the client's own infrastructure. We turn an ERP cost comparison into a written scope, so the licence, hosting, partner, migration and upgrade lines are priced against defined deliverables.

How we scope

  • We confirm which route applies to your entities, modules and users before any build work starts.
  • We record the fit-gap findings, which processes are configured and which need custom modules, in the written scope.
  • We list the hosting, edition or plan, and upgrade assumptions so you can compare them with any SaaS quote.

How we build

  • We configure the chosen Odoo or ERPNext edition in your cloud account, data center or isolated network.
  • We build custom modules in a way that keeps them testable and transferable to later major versions.
  • We prepare test migrations of master data and opening balances, with reconciliation results recorded for your sign-off.

How we hand over

  • We deliver a documented configuration, a cost model of recurring and one-time items, and an upgrade runbook.
  • We run user training and provide role-based guides for the modules in scope, as agreed in writing.
  • We hand over administrative access, backup procedures and the evidence set your auditors will ask for.

How we support

  • Ongoing support, upgrades and testing are available as a retainer that you can scope against your upgrade calendar.
  • We plan each major version upgrade in a test environment before any production change is made.
  • We review licence, hosting and partner costs with you at each renewal so that recurring spend stays visible.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.