The cost of an Odoo upgrade is mostly the cost of your custom code. On Odoo Enterprise, Odoo's own upgrade service converts your standard apps and Studio customizations as part of the subscription. What you pay a partner for is everything that service leaves out: custom and third-party modules, data cleanup, testing and training. With us, that ranges from $750 for a near-standard database one version behind to $12,000 and up for a heavily customised one several versions behind.
Applies to upgrades to Odoo 17, 18, 19 and 20. Odoo's upgrade terms quoted from the official Odoo 19 documentation, checked October 2026.
What does Odoo's own upgrade service include?
Odoo's upgrade service comes with the Odoo Enterprise Subscription Agreement, and it applies whether you are on Odoo Online, Odoo.sh or on-premise. The documentation is precise about the boundary:
| Included in Odoo's upgrade service | Not included |
|---|---|
| All standard applications | Cleaning existing data and configuration |
| Customizations made with the Studio app, while Studio is installed and the subscription is active | Modules built in-house or by third parties, including Odoo partners, unless covered by a maintenance contract |
| Developments covered by a "maintenance of customizations" subscription | Training on the new version |
Odoo also defines the service as "the technical conversion and adaptation of a database (standard modules and data)". In plain terms: Odoo makes the standard parts of your database work on the new version. Making your business work on it, with your own modules, your data and your people, is the part you budget for.
What are you actually paying for?
On a typical upgrade quote, the money goes to five things, roughly in this order of size:
- Porting custom modules. Every module that is not standard Odoo has to be brought forward through each version's changes: renamed fields, changed methods, rewritten views. This is usually the largest line. See what actually breaks in an Odoo upgrade.
- Third-party apps. Apps bought from the Odoo Apps Store need a version for the target release. If the publisher has one, you buy or download it. If not, it has to be ported or replaced, which is effectively a custom module.
- Testing. Running the upgraded test database through your real processes: a sale, a purchase, a delivery, an invoice, a payment, a month-end. Odoo lets you request more than one upgraded test database, and a careful project uses that.
- Data cleanup. Old, duplicated or inconsistent records surface during an upgrade. Odoo does not clean them for you.
- Cutover and training. A planned window to upgrade the production database, plus time for users to learn what moved.
What makes an upgrade cost more?
| Factor | Why it adds cost |
|---|---|
| Number and size of custom modules | Each one is ported and re-tested on every version it crosses |
| Version gap | Custom code has to absorb every release's changes, not just the latest |
| Third-party apps with no version for your target | They turn into porting work, or a replacement project |
| Integrations | Every connected system (shop, payments, bank, logistics) is re-tested after the move |
| Data quality | Messy data slows testing and has to be fixed before go-live |
| Hosting move at the same time | Changing platform and version together needs careful sequencing |
The single best predictor we know is a simple count: how many modules in your database are not from Odoo itself, and how many lines of code they hold. Two databases with the same number of users can differ enormously on that count, which is why two upgrade quotes for "the same size" company can look nothing alike.
How much does an Odoo upgrade cost?
These are our own ranges for a partner-run upgrade, the work Odoo's upgrade service does not do. Odoo's licence or hosting is separate.
| Your database | Typical cost | Typical time |
|---|---|---|
| Near-standard, few or no custom modules, moving one version | $750 to $1,800 | 1 to 2 weeks |
| Moderately customised, about 5 to 15 custom modules, one or two versions | $3,000 to $12,000 | 3 to 8 weeks |
| Heavily customised, more than 15 custom modules or several integrations, several versions | from $12,000 | 2 to 4 months |
Where the numbers come from: we estimate in hours, at $30 an hour. Porting a simple custom module takes roughly 8 to 15 hours per version it crosses, and a complex one, with heavy inheritance or custom JavaScript, 30 to 60 hours. On top of that comes a fixed 20 to 40 hours for the audit, test databases, data checks and cutover. So the fastest way to estimate your own upgrade is to count your custom modules, sort them into simple and complex, and multiply by the number of versions you are crossing.
For comparison, partners in Europe and North America commonly bill well above $100 an hour for the same work, so the same hours can cost several times more.
Does your hosting change the cost?
Hosting decides when you upgrade more than how much it costs:
- Odoo Online. Upgrades are mandatory: every two years on a major version, and a few weeks after the next release on a minor version. You get a notification in the database a few weeks before the automatic upgrade. Because Odoo Online does not allow custom modules, the partner work is usually small.
- Odoo.sh. Each major version is supported for three years, and after that you have two more years to complete the upgrade.
- On-premise. You can stay on the same version indefinitely. That sounds cheaper, but the gap keeps growing, and Odoo's own documentation notes that the smaller the version gap, the easier the upgrade should be.
One big jump or several hops?
Odoo's upgrade platform can take a database across more than one version in a single request, for example from 16.0 to 18.0. Your custom modules cannot skip that way: their code still has to absorb the changes of every version in between. So a two-version jump saves you one cutover and one round of user disruption, but not the porting work. We plan these as one project with one go-live, while porting and testing the code version by version underneath.
How can you keep upgrade costs down?
- Upgrade every one or two versions. Small, regular moves cost far less than a rescue migration after years of skipping.
- Use Studio for simple changes. Studio customizations are upgraded by Odoo under the subscription; custom code is not.
- Keep custom code upgrade-safe. In its own modules, inheriting rather than copying standard code. See upgrade-safe Odoo development.
- Uninstall what you no longer use before you upgrade, so you are not paying to port it.
- Clean your data first, because the cleanup is never part of the upgrade service.
Frequently asked questions
Is the Odoo upgrade free with an Enterprise subscription?
The upgrade service for standard apps and Studio customizations is part of the Odoo Enterprise Subscription Agreement. Custom modules, third-party modules without a maintenance contract, data cleanup and training are not included, and those are usually most of the cost.
How much does it cost to upgrade Odoo 17 to Odoo 18?
For a near-standard database, typically $750 to $1,800 and one to two weeks with us. With 5 to 15 custom modules, typically $3,000 to $12,000. The same ranges apply to 18 to 19 and 19 to 20, because the cost follows your custom modules rather than the version number.
Why do upgrade quotes for similar companies differ so much?
Because the cost follows the custom code, not the company size. Count the modules that are not from Odoo and the integrations around them; that count explains most of the difference between two quotes.
How long does an Odoo upgrade take?
It depends on the same factors as the cost. Our Odoo upgrade timeline guide breaks down where the time goes, phase by phase.
Will we have downtime?
Only during the cutover. All porting and testing happen on an upgraded test database, and the production database is unavailable only while the final upgrade runs, in a window you plan.
Want a real number for your database?
Start with a fixed-price upgrade audit, $150 to $300 depending on the size of your database, and deducted from the project if you go ahead. We list every custom and third-party module, sort them by porting effort, check your data, and give you a fixed quote against what actually has to move. See our Odoo migration and upgrade services, read the full Odoo migration guide, or contact us.