← Back to blog

When should you upgrade to Odoo 20? We checked the source code

Odoo 20 is out. Should you move? We compared the Odoo 19 and 20 code, Community and Enterprise, ran both in Docker and read the new contract. What changes on your bill, which features are worth it, what breaks, and when to upgrade depending on where you are.

Odoo 20 came out on 24 September at Odoo Experience in Brussels. Since then we have had the same question from almost every customer: do we need to move?

Our short answer: probably not yet. Odoo 20 has more features, and it also costs more. For most companies on Odoo 19 the sensible moment is somewhere in 2027, when a feature pays for the higher bill and your connectors are ready. The rest of this post explains how we got there.

Infographic: four ways Odoo 20 changes your bill. Light users at 7.90 euro, every HR employee without a login counted as a light user, Custom plan plus 20 percent, and AI only through Odoo credits Three of the four cost changes arrive with the upgrade. The price increase arrives at renewal.

How did we research this?

We did not want to write another list of release highlights, so we went to the code. We compared the module lists of Odoo 19 and Odoo 20, Community and Enterprise, and opened the files behind every claim about cost, users and AI. We did not read all of Odoo's code; nobody reads millions of lines for a blog post. We did install Odoo 19 and Odoo 20 Enterprise side by side in Docker, from the official source packages of 30 September, loaded Odoo's demo data and tested the claims that matter most on a running system. We read the new Enterprise Agreement (version 13, published on release day) and the pricing page. On top of that we went through all 22,000 words of the official release notes, partner blogs, the Odoo forum, the OCA migration trackers on GitHub and the Odoo It Yourself video that half our network sent us this week. We also read ten analyses by partners in Germany, France, Poland, Belgium and India.

Where we checked a claim in the code, we say so and name the file. Where it comes from a blog or our own reading of a contract, we say that too. And where partners disagree with each other, or with the code, we show both sides.

Should I upgrade to Odoo 20 right now?

No, unless you are on Odoo Online, where you will not get to choose.

Every partner we read agrees on this point, and so do we. A new major version needs a few months before the upgrade scripts, third-party modules and localisations catch up. Odoo's own forum moderators expect Online customers to get 20 "probably December or January. We don't know yet." Self-hosted and Odoo.sh customers have even less reason to hurry: Odoo 19 is supported until September 2028. The Belgian partner Odive put it well: use the release "as a planning trigger, not an automatic deadline."

Timeline of Odoo standard support: 17.0 until September 2026, 18.0 until September 2027, 19.0 until September 2028, 20.0 until September 2029 Planned end of standard support per version, from Odoo's documentation.

So we looked at what 20 does for you and what it costs you. On cost, this release is different from the last few.

What does Odoo 20 change on my bill?

Most release posts skip this part. Three things change. Two of them arrive with the upgrade, the third arrives at your next renewal whatever version you run.

What is a light user in Odoo 20?

A light user is a new, cheaper user type at €7.90 per month. Light users can handle their own time off, expenses, attendance and planning, work as a barcode operator, do field service jobs and read Knowledge. As employees they can receive payslips, use the Point of Sale and work on the manufacturing shop floor. Sales, purchasing and accounting need a full user.

For a company with warehouse staff or operators who only clock in and scan, this can be cheaper than a full licence. The German partner co-dex calculated that moving 25 warehouse staff from Standard users to light users saves about €425 a month. You cannot buy light users online, you have to go through an Odoo advisor.

The release notes mention light users exactly once, in the Barcode section. The role only exists from Odoo 20. We checked: base/models/res_users.py in the 20.0 branch has a new role field with the value light_user. Odoo 19 does not have it. In the Odoo 20 user form it shows up as a choice between Light, User and Administrator.

Odoo 20 user form with the new Role field: Light, User or Administrator The new Role field in Odoo 20 (runbot.odoo.com, 20.0 build, 30 September 2026).

If light users would save you money, that is a real reason to upgrade.

Are employees without a login billed as light users?

The new Enterprise Agreement defines a light user as any account marked as light, "or any active employee record (from the human resources App) not linked to an active non-portal user account."

Odoo Enterprise Agreement v13, definition of Light User, highlighting: any active employee record not linked to an active non-portal user account Section 2 of the Enterprise Agreement v13 (odoo.com, 30 September 2026).

So every employee in your HR app who does not log in to Odoo counts as a paying light user. Think of the drivers, cleaners and roasters you added to Employees so you could plan them or track their contracts.

It is also in the code. In Odoo 20, hr/models/update.py adds a new number to the message your database sends to Odoo: nbr_employees_wo_user, the count of active employees without a login (or with only an archived or portal login). The commit is two weeks old and is called "adjust employees without user count".

GitHub, odoo/odoo branch 20.0, file addons/hr/models/update.py, counting active employees without a user and adding nbr_employees_wo_user to the message sent to Odoo addons/hr/models/update.py in the public Odoo 20.0 branch.

Odoo 19 does not send that number. So Odoo 20 counts them, and the contract makes them billable.

We wanted to see what that means in practice, so we asked both versions what they report to Odoo. Odoo's standard demo company, the same apps apart from MCP:

What the database reports to Odoo Odoo 19 Odoo 20
Users 3 4
Light users not reported 1
Employees without a login not reported 19

Those 19 employees are the demo company's staff who never log in. Under the new agreement they count as light users: 19 times €7.90 is about €150 a month, for people who do not use Odoo.

You will not find this in the release notes. It is only in the contract and the code.

Odoo It Yourself called this "a cash grab" in his video. We would put it more mildly: it is a price increase that you only notice after you upgrade. Before you move, count your employee records and clean up the ones for people who have left.

How much more does Odoo Enterprise cost in 2026?

Odoo pricing page: Standard 24.90 euro and Custom 44.90 euro per user per month, first-year discounts, Custom includes Odoo Studio and Agentic AI, Light User at 7.90 euro odoo.com/pricing on 30 September 2026. Agentic AI is listed only under Custom.

The Custom plan goes up 20%. Odoo announced it at Odoo Experience and pointed to 26% inflation since 2022 plus the cost of AI and hosting. Partners report 20% to 31% per country: in Germany Custom goes from €37.40 to €44.90, in the US from $46.70 to $61.00. The Standard plan stays the same.

This increase does not depend on your version. The agreement does soften it for existing customers. Section 5.2 says that if you pay less than the current list price, your price at renewal rises "by up to 7% per year of the previous Term". So you close the gap in steps, not in one jump. Check with your account manager what that means for your contract.

Can I still use my own OpenAI key in Odoo 20?

No. In Odoo 19 Enterprise the AI settings had two options, "Use your own ChatGPT account" and "Use your own Google Gemini account", stored as ai.openai_key and ai.google_key. In Odoo 20 those settings are gone. Every AI call now goes through Odoo's own endpoint (ai.api.odoo.com in ai/utils/ai_utils.py) and is paid with credits you buy from Odoo. The ai module is flagged as a paid service in its manifest. The release notes say it in one line: "All AI features now need credits, which can be bought via IAP." You still pick a provider, and Odoo picks the model.

One French partner writes that on Odoo.sh and on-premise you still need your own OpenAI or Gemini key on top of the credits. We could not find that in the code. The 19 file that talked to OpenAI and Gemini directly (ai/utils/llm_api_service.py) does not exist in 20, and completions go through call_odoo_ai to Odoo's endpoint.

Side by side: Odoo 19 settings search for ChatGPT shows Use your own ChatGPT account; Odoo 20 shows no results The same settings search in Odoo 19 and Odoo 20 Enterprise.

Add the Custom plan requirement for AI agents, and AI in Odoo 20 means a bigger licence plus a running bill for credits.

What do you get for it? Which Odoo 20 features are worth upgrading for?

Quite a lot, to be fair. The release notes list 585 changes across 52 apps. According to a partner who parsed the notes, 391 of them are in Community and 194 are Enterprise-only. These are the ones we think can decide the timing for an SME:

  • AI agents that can create and update records and run inside automated actions. Enterprise, Custom plan, credits.
  • An offline mode that lets you create and edit records without a connection. Community and Enterprise.
  • Suggested minimum and maximum levels on reordering rules, based on your history.
  • Cost of goods sold that updates itself when the cost changes.
  • Every journal entry on a bank account now has to come from a bank transaction, which removes a classic source of messy books.
  • Paying supplier bills straight from Odoo through a bank link, in bulk with one signature.
  • For manufacturers: continuous production, a kanban for work orders and a Gantt planning view (Enterprise).
  • Stock valuation without installing the Inventory app. The webshop and Point of Sale can also run on a single on-hand quantity per product, which suits small shops.
  • Automatic payment reminders on invoices, better duplicate detection on bills and suggested bill lines based on your history.
  • Mollie now handles in3, Klarna, Apple Pay and Google Pay, with tokens for recurring payments. Wero works through Buckaroo and Worldline.
  • The website can publish an llms.txt file and adds structured data by default, which helps AI search engines read your site.

If one of these saves you real hours every week, that is your reason to upgrade. If you are upgrading because the number went up, wait.

Are Odoo 20 features also available in Odoo 19?

Some are. In the release notes, 89 entries are marked "available from" an older version: 56 from 19.0, 19 from 18.0 and 14 from 17.0. According to Odoo, you can use those on the older version too. Most of them are industry packages, localisations and marketplace connectors such as TikTok and Lazada. A few are general, like duplicate detection on invoices and importing product variants. The features that would make you upgrade, such as AI agents, light users, the cost of goods sold update and the reordering suggestions, are 20 only.

For Dutch companies there is one more thing to know. The localisation section covers 55 countries, and the Netherlands is not one of them. Belgium gets payroll changes. Odoo 20 brings nothing specific for the Dutch market.

What breaks when you upgrade to Odoo 20?

More than usual. The biggest change sits deep in the framework: Odoo 20 replaces the old access rights (ir.model.access) and record rules (ir.rule) with a single new model, ir.access, in base/models/ir_access.py. Every custom module has to convert its security files. That includes ours. The OCA, which maintains thousands of community modules, reported that this single change explained roughly two thirds of the modules that failed to port in its first test run.

Other changes to plan for:

  • Field Service no longer exists as an app. Its map, routes, worksheets and travel fees moved into Planning.
  • Payroll no longer builds on work entries, according to the release notes, which label the impact "major". The work entry module itself still exists in 20.
  • Payment statuses were renamed: "In Process" is now "Paid" and "Paid" is now "Reconciled". Reports and filters that rely on the old names will show different numbers, and your team needs to know.
  • A tax is now removed from an invoice line when it does not belong to the fiscal position, even if there is no replacement. Check your fiscal positions before you upgrade.
  • Tracking values are gone from the chatter data model. Odoo offers a separate module if you rely on them for audits.
  • The standalone Expenses menu is gone (approved expenses become draft bills), and so is the profitability report on the project dashboard.
  • The web client moves to OWL 3 and swaps Font Awesome for Material Symbols. PDF reports changed too. Custom screens and report layouts will need work.
  • The external API loses its db service. The older /xmlrpc and /jsonrpc endpoints still work but are on their way out by Odoo 22. Check your integrations.
  • Odoo 20 now listens on 127.0.0.1 by default instead of on every network interface. A self-hosted or Docker setup that relied on the old default is unreachable until you set http_interface. We ran into this ourselves while testing.
  • Self-hosted servers need Python 3.12 and PostgreSQL 16 at minimum. The AI features also need the pgvector extension in PostgreSQL (the embeddings use a vector_cosine_ops index).

Odoo's upgrade service is free with Enterprise, but it covers your data, not your custom modules. In practice your connectors and third-party apps decide the date. App store vendors usually need weeks to months for a new version, and some never port at all. One year after Odoo 19, the OCA had ported about half of the modules in repositories like server-tools and sale-workflow.

When should you upgrade to Odoo 20? It depends where you are

Decision guide: 1 on Odoo Online, you get 20 anyway; 2 mid-implementation, go live on 19 first; 3 starting now fully standard, start on 20; 4 a feature pays off and connectors are ported, plan the upgrade for 2027; otherwise stay on 19 Answer from the top and stop at the first yes.

Your situation What we advise
Choosing Odoo now, going live in 2027, mostly standard Start on 20, if you accept the new pricing
Choosing Odoo now, dependent on connectors or OCA modules Start on 19, move to 20 once they are ported
In the middle of an implementation Go live on 19, upgrade later as a separate project
Live on 19 Wait. Upgrade when a 20 feature pays for itself, not before 2027
Still on 17 or 18 17 is out of support. Upgrade now, and consider going straight to 20 in early 2027
On Odoo Online You get 20 whether you plan it or not. Test it on a copy the moment Odoo offers one

Partners do not agree on the first row. co-dex in Germany and Macopedia in Poland say a new project should start on 20 straight away. JAIKIN in France says start on 19 and move in 2027. On the Odoo forum the answer comes down to one question: is your setup 100% standard? If it is, we would start on 20. Otherwise you are planning an upgrade project before you have even gone live.

We feel strongest about the third row. A coffee roaster we are implementing right now started on 19 Enterprise this month and will go live on 19. Their webshop and accounting integrations need a version 20 first. Moving the target halfway would mean testing everything twice.

Is Odoo 20 Community a good alternative now?

It is getting more interesting. With Enterprise more expensive and AI tied to credits, we expect more companies to ask about Community. Odoo It Yourself is already steering his audience that way. But the gaps are real, and they did not get smaller in 20.

Community 20 has 693 modules. Enterprise adds 880 more. For most of our customers the gap that hurts is accounting. Community 20 does invoicing and Peppol e-invoicing, but the full accounting app, financial reports, bank synchronisation and assets are Enterprise (account_accountant, account_reports, account_online_synchronization, account_asset). Studio, Helpdesk, Planning, Barcode, Quality and PLM are Enterprise too.

19 Community 19 Enterprise 20 Community 20 Enterprise
Modules 676 +718 693 +880
Full accounting (reports, bank sync, assets) No Yes No Yes
AI inside Odoo No 15 modules No 52 modules
Your own OpenAI or Gemini key n/a Yes n/a No, credits only
Native MCP server No No No Yes, Custom plan
Light users No No Not billed €7.90 per month
Employees without a login billed n/a No n/a Yes
Official upgrade service No Yes No Yes
Standard support until Sep 2028 Sep 2028 Sep 2029 Sep 2029

Comparison table of Odoo 19 and 20, Community and Enterprise The same comparison as an image, for sharing.

Upgrading is the other catch. Odoo's upgrade service is Enterprise-only. Community relies on the OCA's OpenUpgrade project, which is run by volunteers. Its 18.0 migration still had open modules after two years, and the 20.0 tracker was only opened on 29 September. On Community, the OCA decides when you can upgrade, not you.

Does Odoo 20 Community have AI or an MCP server?

No. We checked the full list of Community 20 modules: there is not a single AI or MCP module in it. All 52 AI modules in Odoo 20 live in the Enterprise repository under Odoo's proprietary licence.

Bar chart of AI modules: Odoo 19 Community 0, Odoo 19 Enterprise 15, Odoo 20 Community 0, Odoo 20 Enterprise 52 Modules starting with ai, counted in each codebase.

Does Odoo 20 have a native MCP server?

Yes, in Enterprise. The module is called ai_mcp, it installs automatically and it lets AI assistants like Claude and ChatGPT connect to Odoo. For a first version it is good. It supports OAuth, and ChatGPT, Claude, Claude Code and Grok are approved as clients out of the box. Automatic registration for other clients is off by default.

Odoo 20 settings, MCP OAuth: pre-approved client metadata URLs for ChatGPT, Claude, Claude Code and Grok, and a Dynamic Client Registration checkbox that is off MCP settings in Odoo 20 Enterprise.

Five read-only tools are on by default, and an admin can open up write actions one by one.

We tested it on our local Odoo 20. The five default tools read data without using any AI credits. We then did what an admin can do in two clicks: we switched on the existing "Create Records" tool for MCP and ticked "read-only" on it. The server announced the tool to the AI as read-only, and it still created a new contact when we called it. So the read-only label only informs the AI client and stops nothing. Keep that in mind before you open up write tools.

Even with writing switched on, there is a ceiling. The AI can create records and change fields, but it cannot confirm a quotation or post an invoice: we tried, and Odoo refused because the status field is read-only. Anything that happens through a button in Odoo needs an admin to build a custom tool in Python first. There is also no tool to delete records.

There is no check on your plan in the MCP code. The Custom plan requirement comes from the pricing page and the contract, not from the software.

It also comes with conditions: Odoo 20, Enterprise, the Custom plan, and AI features that run on Odoo's credits. Right now that is a small group of companies. Everyone on 14 to 19, on Community, or on the Standard plan has no native MCP, and given the timing above, that stays the case for a while.

We tested the native server in more depth, including what it can and cannot write, in Odoo 20 has an MCP server. Here is what it can and cannot do.

That is the group we built Odoo MCP Pro for. It connects Claude, ChatGPT or your own model to any Odoo from version 14 up, Community or Enterprise, hosted in the EU, with governance on what the AI may read and write. If AI is your main reason to look at Odoo 20, you can have it on your current version today.

What are we doing ourselves?

Our own Odoo stays on 19 for now. In September we moved it from Odoo.sh to our own server, and we did that on 19 on purpose: one change at a time. If you move hosting and version together and something breaks, you do not know which of the two caused it.

Our modules follow the same rule. The one customers install on their own Odoo, the governance module for MCP Pro, gets a 20 version first, because our customers decide their own timing. The rest follows when someone needs it.

Frequently asked questions

When was Odoo 20 released?

On 24 September 2026, at Odoo Experience in Brussels. Odoo Online customers are expected to get it in December 2026 or January 2027.

Is Odoo 19 still supported?

Yes. Standard support for Odoo 19 runs until September 2028. Odoo 17 support ended in September 2026.

Do I have to upgrade to Odoo 20?

No, unless you are on Odoo Online, where Odoo schedules the upgrade for you. On Odoo.sh or your own server you decide, and most companies on 19 can wait until 2027.

What does a light user cost in Odoo 20?

€7.90 per user per month. Light users exist from Odoo 20, and every active employee without a login counts as one.

Can I use my own OpenAI key in Odoo 20?

No. Odoo 19 Enterprise let you enter your own ChatGPT or Gemini key. In Odoo 20 all built-in AI runs on credits you buy from Odoo.

Does Odoo 20 Community have AI?

No. The Odoo 20 Community package contains no AI or MCP module. All AI modules are Enterprise.

The short version

Odoo 20 is a good release that costs more. Upgrade when a feature earns back the higher bill and your connectors are ready. For most companies on 19 that is 2027. If you are unsure where your company fits in the table above, talk to Pantalytics.

Sources