HADOOPT
TECHNOLOGIES
Schedule a Tech Consultation
Home
Services
Odoo ERP implementation Rollout, custom modules, migration and support. Web application development SaaS products, portals and internal platforms. Mobile application development Offline-first field apps and customer apps. AI development & automation LLM assistants, document processing, forecasting. Odoo version upgrades ↗ Move to a newer release, scoped and priced on its own site.
Products
OrgExp ↗ Budget, CAPEX and OPEX management.
Blog About Contact Schedule a Tech Consultation
Blog / Odoo vs Odoo
Version history 9 min read

Comparing Odoo 18 and Odoo 19: Key Differences and Features

What changed from Odoo 18 to Odoo 19: the AI app, units of measure, inventory valuation, expenses, contracts, the JSON-2 API, and whether to upgrade now.

· ERP practice 22 Sep 2026

Odoo 19, released in September 2025, is a bigger step from Odoo 18 than its interface suggests. The headline addition is a built-in AI app (Enterprise). The changes that matter most in an upgrade sit underneath: units of measure lose their categories, inventory valuation is simplified, expense reports are gone, employee contracts become versions on the employee record, and a new JSON-2 API replaces XML-RPC and JSON-RPC, which are now deprecated. Most Odoo 18 users should plan the move before Odoo 18 leaves standard support in September 2027.

This post continues our version-by-version series after Odoo 17 vs Odoo 18. We have kept to changes we could trace to Odoo's official 19 release notes and to the 19.0 source code.

Odoo 18 vs Odoo 19 at a glance

AreaOdoo 18Odoo 19
Interface and frameworkNo cache for browsed viewsBrowsed data and translations are cached; search and view switcher work before data loads; abbreviated dates (Aug 1, 2025)
AINo general AI appAI app (Enterprise): agents that learn from your documents, AI fields, AI in server actions, natural-language search, a Live Chat agent that can create leads
SalesOptional products on a separate quotation tabSections and sub-sections on quotations and invoices; a section can be optional, have its prices hidden or its lines collapsed
Products and unitsUnits of measure grouped in categories; packagings as a separate modelNo UoM categories; each unit has a Reference Unit and a "Contains" factor; packagings are units
InventoryValuation configured on product categoriesValuation simplified: "Periodic (at closing)" or "Perpetual (at invoicing)" as a company default, still overridable per category; a new closing interface; backdated transfers; fewer default virtual locations
PurchasePurchase orders end in a "Done" state"Done" replaced by a lock/unlock flag; suggested quantities in the purchase catalog
AccountingFiscal positions map taxesEach tax declares which fiscal positions it applies to and what it replaces; purchase and sales receipts merged into bills and invoices; "To review" flag on moves posted by invoicing users
HRSeparate contract recordsEmployee and contract merged, with versions (hr.version); overtime rulesets in Attendances; talent pools in Recruitment
ExpensesExpenses grouped into expense reportsExpense reports removed; each expense is submitted, approved and posted on its own, or several at once from the list
PayrollPayslip batchesBatches renamed Pay Runs with a guided flow; payslip correction on Revert
WebsiteWebsite builder and eCommerceSimplified builder and settings, new building blocks, SEO checks, AI page generation from a prompt
External APIXML-RPC and JSON-RPCNew JSON-2 API at /json/2 with API keys; /xmlrpc, /xmlrpc/2 and /jsonrpc deprecated
SupportStandard support to September 2027Standard support planned to September 2028

What changes in the interface and AI

Interface work in Odoo 19 is about speed, not a redesign. Data fetched while browsing is cached, so returning to a view loads from the cache, and the search bar and view switcher are usable before the records arrive. Numeric dates give way to abbreviated ones. Blocking messages on products and contacts have been removed; only warnings remain, and they appear at the top of the screen instead of as pop-ups. Customers are no longer added as followers; Odoo suggests the recipients of earlier messages instead.

The larger addition is the AI app, an Enterprise module with a family of integrations (ai_fields, ai_server_actions, ai_documents, ai_crm, ai_livechat, ai_website and others). You can chat with agents that answer from your documents, Knowledge articles and web pages, fill fields with AI, use AI inside server actions, and type a search in plain language for Odoo to turn into a filter. The release notes list ChatGPT 5.0, and your own Gemini account, as providers. We cover setup, permissions and cost control in AI in Odoo 19.

How sales, products and inventory changed

Quotations. Sections and sub-sections now work on quotations, sales orders and invoices. A section's prices can be hidden, or its lines collapsed so the customer sees only the total. The separate optional products tab is gone: a section can be marked optional instead, and portal customers choose quantities for those lines themselves. If your sales team used optional products for upsells, rebuild those templates as optional sections. See quotations and sales orders in Odoo 19.

Units of measure. UoM categories have been removed, and product packagings merged into units. A unit now points to a Reference Unit and says how many of it it Contains, so a "Box of 12" is simply a unit that contains 12 Units. Expect this to affect imports and custom code. Details are in products, variants and pricelists.

Inventory. Valuation has been simplified. The options are now "Periodic (at closing)", where Odoo suggests the entries in the valuation report, and "Perpetual (at invoicing)", where an entry is posted when a product is billed or invoiced. The company sets a default, product categories can override it, and there is a new closing interface and support for backdated transfers. Several default virtual locations are gone. Reordering rules gain a horizon (365 days by default) and a deadline showing the latest date to reorder. Read inventory and warehouse management before you configure valuation on the upgraded copy.

Purchase. The "Done" status is replaced by a lock/unlock flag. The purchase catalog suggests quantities from past sales and demand. See purchase and vendor management.

What is new in Odoo 19 accounting

Fiscal positions work differently. Tax mappings on the fiscal position have been removed. Each tax now declares which fiscal positions it applies to and which taxes it replaces, and Odoo picks fiscal positions by sequence. If you maintain custom fiscal positions, review them on the test copy.

Other changes finance teams will meet in the first week:

  • Purchase and sales receipts are merged into bills and invoices; you switch between bill and receipt on the form.
  • Users with only invoicing rights can post invoices, but those moves are flagged "To review" for accountants.
  • Bank reconciliation has a simpler screen, keyboard shortcuts, and can reconcile draft entries.
  • A tax return feature tracks filing obligations and deadlines, and a follow-up report separates overdue invoices from due ones.

For India, the release notes list improved GSTR-1 reporting (supply types are locked on posting and stored on journal items), a simplified GST return process, a one-click TDS report and an ESIC report in payroll. We go through them in GST and India compliance in Odoo 19 and accounting setup.

What changes in HR, payroll and expenses

HR sees the deepest structural change. Employees and contracts have been merged: there is no separate hr_contract module, and contract terms live as versions (hr.version) on the employee record; a salary or schedule change becomes a new version. Reports, Studio views and custom code built on contracts must be reworked. See employees and HR records.

Expense reports have been removed. Each expense now moves through its own states (draft, submitted, approved, posted, paid). Managers can still approve or post many at once from the list, and posting several employee-paid expenses creates one bill per employee. Approval habits built around monthly reports need rethinking; our expenses post covers the new flow.

Elsewhere in HR:

  • Attendances: overtime rulesets define what counts as extra hours and how it is compensated. See time off and attendance.
  • Payroll (Enterprise): batches are now Pay Runs and net salary can be split across several bank accounts. See payroll for India.

What developers and integrators need to know

The external API is the change with a deadline attached. Odoo 19 introduces JSON-2: HTTP requests to /json/2/<model>/<method>, authenticated with an API key sent as a bearer token. The old /xmlrpc, /xmlrpc/2 and /jsonrpc endpoints still work in 19 but are deprecated, and Odoo's 19.0 documentation schedules their removal for Odoo 22 (fall 2028). Move integrations to JSON-2 while you are touching them anyway.

POST https://your-db.odoo.com/json/2/res.partner/search_read
Authorization: bearer <API key>
Content-Type: application/json

{"domain": [["is_company", "=", true]], "fields": ["name"]}
A JSON-2 call: the model and method are in the URL, the API key in the header.

Custom modules usually break on the model changes above: hr.version in place of contracts, the missing hr.expense.sheet, UoM without categories, and the removed quotation option lines. On users, the groups field is now group_ids, organised through a new privileges model (res.groups.privilege). Odoo 19 runs on Python 3.10 to 3.13 and needs PostgreSQL 13 or later, so check your server before you install; see installing Odoo 19.

Should you upgrade from Odoo 18 to Odoo 19?

Odoo gives each major version three years of standard support: Odoo 18 until September 2027, Odoo 19 until September 2028 (planned). The year between those dates is your planning window, not spare time. We usually take clients through these steps:

  1. List what you depend on. Custom modules, third-party apps, Studio changes and every integration that calls Odoo. Mark those touching contracts, expenses, units of measure, quotation options or the RPC endpoints.
  2. Request an upgraded test copy. Odoo's upgrade service converts standard apps and data; custom modules must be ported by whoever maintains them. Our upgrade guide explains the process.
  3. Check the finance data first. Stock valuation, fiscal positions, open expenses and payroll are where a wrong number costs most.
  4. Retrain on the changed flows. Quotation sections, single-expense approval, employee versions and Pay Runs all look different to users.
  5. Rehearse, then go live. Run the full upgrade again on fresh data, time it, then schedule production. Switch on AI afterwards.

If you are still on Odoo 16 or 17, you can go straight to 19 in one jump; the reasons are in upgrade to Odoo 19 now or wait for Odoo 20. For a scoped estimate, upgrade.hadoopt.com covers how we run upgrades, or talk to us directly.

Questions we get asked

What is the biggest difference between Odoo 18 and Odoo 19?

For users, the new AI app in Odoo 19 Enterprise is the most visible change. For an upgrade, the structural changes matter more: units of measure without categories, simplified inventory valuation, expense reports removed, employee contracts merged into versioned employee records, and a new JSON-2 external API that replaces the now-deprecated XML-RPC and JSON-RPC endpoints. These drive retraining and custom-module work.

Is AI available in Odoo 19 Community?

No. The core AI module in Odoo 19 is licensed as Enterprise (OEEL-1), and its integrations for fields, server actions, documents, CRM and live chat all depend on it. Community users do not get AI agents, AI fields or natural-language search out of the box. You can still connect Community to an external AI service through custom development, using the JSON-2 API or a custom module.

Will my Odoo 18 integrations still work on Odoo 19?

Integrations that use XML-RPC or JSON-RPC still work on Odoo 19, because those endpoints are deprecated rather than removed. Odoo's 19.0 documentation schedules their removal for Odoo 22, planned for fall 2028. Integrations that read contracts, expense reports, UoM categories or quotation optional products will break regardless, because those models changed. Test every integration against an upgraded copy before going live.

How long is Odoo 18 supported?

Odoo 18 is covered by standard support until September 2027, three years after its release. Odoo 19, released in September 2025, is planned to be supported until September 2028. After standard support ends, Odoo.sh and on-premise customers can buy extended support for an extra fee; Odoo Online databases are upgraded on Odoo's own schedule instead.

Can I upgrade directly from Odoo 18 to Odoo 19?

Yes. With an Enterprise subscription, Odoo's upgrade service converts your standard apps, data and Studio customisations to Odoo 19. Custom and third-party modules are not included and must be ported to 19 by their maintainers. The safe order is an upgraded test copy, fixed modules, testing by the people who use each app, a full rehearsal, then the production upgrade.

← Previous Comparing Odoo Community and Odoo Enterprise: Features, Pricing, Implementation & Upgrade
Keep reading
Version history Comparing Odoo 17 and Odoo 18: Key Differences and Features 6 min read Odoo 20 Upgrade to Odoo 19 now or wait for Odoo 20? 6 min read Odoo 19 Upgrading to Odoo 19 from Odoo 16, 17 or 18 7 min read