Odoo for small- and medium-sized businesses
Odoo started as business software for small companies and now serves medium-sized ones as well. It got there without giving up the principles its founder built it on: open source, a strong community, fair pricing and growing together with its partners. Here is how Odoo is built, what it covers and which companies it fits.
From TinyERP to Odoo: one founder, one long game
Fabien Pinckaers founded the company in Belgium in 2002 as TinyERP and began writing the software in 2005. About three years later he renamed it OpenERP. Large customers had asked him why they should pay millions for “tiny” software.
In May 2014 OpenERP became Odoo, “a suite of business apps, not only an ERP”. Pinckaers promised then that Odoo “is and always will be fully open source”. He still runs the company as its chief executive, from its headquarters in Grand-Rosière in Wallonia.
Odoo raised capital twice, the last time in 2014, and took ten years to become profitable. The deals since then have sold existing shares, with “no cash injected in the company”, as Odoo wrote in 2021. In November 2024 investors led by CapitalG and Sequoia valued Odoo at EUR 5 billion. Pinckaers intends to keep the majority, “to guarantee our long-term commitment to the project”.
The growth is real. In September 2026 Odoo expected billings of about EUR 900 million for the year, 45 % more than the year before, with nearly 8,000 employees. Its website counts 28 million users.
Principles that stayed
Odoo has grown far beyond its first customers. Four principles have stayed with it, and they explain much of what makes it different.
Open source
Odoo Community, the core, is open source under the LGPL. Odoo Enterprise adds modules and services on top of it, under a licence of its own. Odoo calls this open core, and its guide for new employees is frank about it: “Open source is a great development model! But it’s not a business model.”
Community
Partners and developers build on the same code. Odoo counts more than 40,000 community apps in its Apps Store. The Odoo Community Association, a non-profit association under Swiss law, reviews and maintains modules of its own. About 45,000 people came to Odoo Experience in Brussels in 2026.
Fair pricing
Since 2022 one price covers every app: “The pricing remains the same whether you install three apps or seventy.” One app is free for any number of users. Odoo says all its plans include “unlimited support, hosting and maintenance”, and upgrades at no extra fee.
In 2026 Odoo raised the price of its Custom plan by 20 %, the first change since 2022. Pinckaers said he would never double or triple it, “because it’s not about cost or profit; it’s about accessibility and fairness.”
Growing together
Odoo works with more than 21,000 partners and asks them to “grow the market as a team”. Partner levels, from Ready to Gold, follow the number of new users a partner brings each year.
A founder who picks his fights
Pinckaers likes a fight with the giants. In 2013 he wrote that, to fuel his motivation, he “had to pick someone to fight against”, and he picked SAP. He bought the domain SorrySAP.com and kept it for six years, waiting for the right moment.
In 2021 he noted that small companies’ adoption of ERP was “only 18%, despite SAP & Microsoft investing billions to reach this market.” Odoo still publishes its own comparisons with SAP Business One, Microsoft Dynamics and Salesforce. They are Odoo’s view; we judge every case on its requirements.
From small businesses to mid-sized companies
For years Odoo was the ERP for small companies. That has changed, and Odoo says so openly.
In 2024 Odoo partnered with Deloitte in Belgium. Pinckaers said the partnership showed “we’re ready to help mid-sized businesses and larger companies”. Odoo has a team of its own for mid-market customers, and in 2025 it reported that three of the four largest audit and consulting firms had adopted its software.
At Odoo Experience 2026 Pinckaers set the course: Odoo as “the integrated software alternative for all companies, from SME’s to larger groups.” In our view, Odoo has come a long way from its roots. It is no longer software for small businesses only, but a serious choice for medium-sized companies.
The Odoo tower
We draw Odoo as a tower. At its base are the frameworks every module shares. Above them stand the modules, Community on the left and Enterprise on the right, with one user interface on top. Beneath it all are the three ways to run Odoo.
- Module stack
- Community, left
- Enterprise, right
- Shared frameworks below
- Shared Community frameworks
- * Studio is part of Enterprise.
- Shown here by what it does.
- Hosting
- Choose one way to run it.
User interface
One user experience across every app installed in a database: the same search, filters, views, reports and dashboards.
- Reports
- Dashboards
- Search and filters
- Operational views
- One database
- Reports · Dashboards
- One experience
- across installed apps
What a user sees depends on the apps installed and the edition: some views, such as Gantt charts, come with Enterprise.
Odoo Enterprise
Additional modules
The modules that come with an Enterprise subscription. They are installed beside the Community modules and run on the same frameworks.
-
Sales
Subscriptions · Rental · Amazon Connector
-
Accounting extensions
Financial reports · Assets · Budgets · Bank sync
-
Manufacturing
PLM · Quality · Advanced Shop Floor · Advanced scheduling
-
Inventory
Barcode app
-
HR
Payroll · Appraisals · Referrals
-
Services
Helpdesk · Field Service · Planning · Appointments
-
Marketing
Marketing Automation · Social Marketing
-
Documents and knowledge
Documents · Knowledge · Sign
-
Productivity
Approvals · VoIP · IoT
-
Project and timesheet extensions
Gantt · Timesheet grids · Validation
A selection by area, not the full list: the Enterprise repository is not public. Its modules extend screens, data and logic; the frameworks below stay the same. Community has the barcode infrastructure and basic timesheets; the Barcode app and the timesheet extensions are Enterprise.
Odoo Community
Public modules
The modules in Odoo’s public, open-source repository: the business apps and the modules that support them. Enterprise builds on them.
-
Sales
CRM · Sales · POS · Restaurant
-
Finance
Invoicing · Expenses
-
Operations
Inventory · Purchase · MRP · Maintenance · Repairs
-
Websites
Website · eCommerce · eLearning · Events
-
Human resources
Employees · Recruitment · Attendances · Time Off · Skills · Online Jobs
-
Work and collaboration
Project · To-Do · Calendar · Contacts · Discuss
-
Marketing
Email · SMS · Surveys · Live Chat · Marketing Card
-
Other apps
Fleet · Lunch · Data Recycle
-
Supporting modules
Localisations · Integrations · Technical modules · Tests
POS is the point of sale for shops and restaurants; MRP, material requirements planning, is the Manufacturing app. The catalogue below lists every module in the repository.
UI framework
The views and conventions that turn data models into screens: forms, lists, kanban boards, calendars and reports.
- View records
- View architectures
- SCSS inheritance
- UI icons
- Studio*
Studio, the tool for changing screens and data models without code, is part of Enterprise. It sits in this layer because of what it does.
Web framework
The building blocks of the web client that runs in the browser.
- OWL
- Registries
- Client services
- Hooks
- Assets
OWL, the Odoo Web Library, is Odoo’s own component framework: components, templates, reactive state and hooks.
Server framework
The Python server every module runs on: the data model and its storage in PostgreSQL, security, and the points where modules extend one another.
- ORM
- ORM API
- Module manifests
- Web controllers
- Security
- Data files
- Actions
- QWeb reports
- Mixins
- Performance and testing
ORM stands for object-relational mapping: Python classes and fields that Odoo maps to tables and columns in PostgreSQL, so a module works with records rather than SQL.
Odoo Online
Run by Odoo
Odoo runs the database and the software, and you work in the browser. Configuration and Studio are available; custom modules are not.
- Run by Odoo
- Standard apps
- No custom modules
Odoo.sh
Run by Odoo, with custom modules
Odoo’s cloud platform for developing, testing and hosting a database with modules of your own, connected to GitHub.
- Custom and third-party modules
- GitHub integration
- Development, staging, production
An Odoo.sh project needs an Enterprise subscription.
On-premise
Self-hosted or a hosting provider
Odoo on your own servers or with a hosting provider of your choice, as Community or with an Enterprise subscription.
- Community or Enterprise
- Custom and third-party modules
- Your choice of operator
The sections below follow the tower: the modules first, then the user interface, the architecture beneath them, and how Odoo builds and ships it all.
Scope: apps, industries and modules
Odoo is a suite of apps that share one database: accounting, sales, inventory, manufacturing, projects, HR, websites, marketing and more. Community covers the core of most of them. Enterprise adds apps such as full accounting, payroll, the helpdesk, field service and Studio, the tool for changing Odoo without code.
Industry packages
Since 2023 Odoo has added industry packages: ready configurations for a trade, from a bakery or a micro-brewery to a construction company, a metal fabricator or an accounting firm. Odoo lists more than 100 industries.
A package is data, not code: the apps a trade needs, configured, with its own reports, dashboards and sample records. Every package is published under the Enterprise licence.
Modules and localisations
Underneath the apps are modules. The Community repository alone holds several hundred: the apps themselves, connectors, technical building blocks and localisations for more than 120 countries. For Switzerland, the localisation brings the Swiss SME chart of accounts, VAT and the QR-bill; Swiss payroll comes with Enterprise.
The catalogue below lists every module in the public repository, with the names Odoo itself gives them in English and German.
All modules of Odoo Community
Every module in Odoo’s public repository at its latest major release, with the name Odoo gives it in English and German. Search by name, technical name, category or summary; each technical name links to the module’s manifest on GitHub.
| Technical name | Name | Category | Type |
|---|
No module matches your search.
- {shown} of {total} modules, Odoo {version}
- App
- Supporting module
- All modules
- Apps
- Supporting modules
- Localisations
The list describes the repository at one revision, not an installed database. Enterprise modules are not in the public repository and are not listed.
User experience: speed as a feature
Odoo treats speed as part of the product. Its website promises that “all operations are done in less than 90ms - faster than a blink.” Odoo measures this itself; we know of no independent benchmark.
It also reports its progress. With Odoo 16 in 2022 it reported invoices opening 3.7 times faster and backend views loading up to 20 times faster, thanks to its own OWL framework.
Speed also means fewer steps. One interface serves every app, with the same search, filters and views. Ctrl+K opens a command palette for menus, records and actions, and keyboard shortcuts save or discard a record. On phones Odoo runs as a web app; the store apps for Android and iOS come with Enterprise.
Architecture: PostgreSQL, Python and OWL
Odoo is built on three pieces of open-source technology, and it adds a module system of its own.
- PostgreSQL holds all the data, and it is the only database Odoo supports. Every app writes to the same database, so a report can combine sales, stock and accounting without an interface in between.
- Python runs the server. Its ORM (object-relational mapping) turns business objects into tables, so modules work with records and fields instead of SQL. QWeb, Odoo’s template engine, renders reports, web pages and screens.
- OWL, the Odoo Web Library, is Odoo’s own component framework for the browser, open source since 2019 and loosely inspired by React and Vue.
Odoo built OWL because of its modules. A module can add fields to another module’s records, change its screens and override its logic, without copying its code. This is how Enterprise builds on Community, and how partners fit Odoo to a company. The interface has to allow the same, which the common frameworks do not make easy.
Engineering: tested before it is merged
Odoo develops in the open, on GitHub, and treats testing much as the Linux kernel community does: nothing reaches a release branch untested. In one respect Odoo’s gate is even stricter.
Every push is built and tested
Odoo’s runbot builds every push to every supported version, across Community, Enterprise, the documentation and the upgrade scripts. It runs Python unit tests, JavaScript tests in Hoot, Odoo’s own test framework, and tours: scripted user journeys in a headless Chrome browser.
Nightly runs add test coverage, uninstalls and a robot that clicks through every menu. On a Saturday in October 2026, runbot showed 805 builds running on 1,944 worker slots.
A robot merges, not a person
Approved changes do not go straight into a branch. Odoo’s merge bot, robodoo, stages up to eight approved pull requests together, tests the combination and merges it only when everything passes. If a staging fails, the bot splits the batch in half to find the cause.
This is what Graydon Hoare, the creator of Rust, called the not rocket science rule: keep a repository that always passes its tests.
Fixes travel forward
A bug is fixed on the oldest supported version where it occurs. Once the fix is merged, a bot forward-ports it to every newer version, one branch at a time and tested at each step. Stable versions take fixes only: no change to the data model, no change to a public method.
A release every year, supported for three
A new major version ships every autumn and is presented at Odoo Experience. Odoo supports each one for three years, and Odoo Online customers get interim releases every two to three months. Upgrades between major versions go through Odoo’s upgrade service, which first gives you a test database.
Odoo.sh: the same discipline for your own modules
On Odoo.sh, your own modules follow the same path. Each push to a development branch builds a fresh database and runs the tests. A staging branch builds on a copy of production, with e-mails caught and payments in test mode. If an update fails in production, Odoo.sh rolls back to the last working version.
Compared with the Linux kernel
The comparison holds in spirit, not in every detail:
- Both integrate continuously before a release. Linux does it through linux-next, KernelCI and Intel’s 0-day robot; Odoo through runbot and its merge bot, which is the stricter gate.
- Both keep stable branches for fixes only, but the fixes travel in opposite directions. Linux fixes the newest code first and backports; Odoo fixes the oldest supported version and ports forward.
- Linux is led by its maintainers, and only Linus Torvalds merges into the main tree. Odoo is led by a company, and contributors sign a licence agreement with it, where Linux asks only for a Signed-off-by line.
- Linux promises never to break user space. Odoo freezes its interfaces only within a version, so each major release can break custom modules.
The community follows the same discipline. The Odoo Community Association runs automated tests and Odoo-specific code checks on every pull request, and its bot merges a change only after two approvals and green tests.
For a company on Odoo, the lesson is simple: keep custom code in modules, test it on staging against a copy of production, and plan an upgrade at least every three years.
Who Odoo fits
Odoo fits small and medium-sized companies that want one system for the whole business, from sales to production and accounting, at a predictable price. It covers the physical side of a business in one system: stock, manufacturing, point of sale and field service.
Projects run through the same chain. Stock pickings and manufacturing orders carry the project, so material and production costs land in project profitability. For a European footprint we increasingly recommend Odoo, because its localisations reach further than NetSuite’s.
How Odoo handles engineer-to-order manufacturing
Where it falls short
Odoo’s standard product does not allocate a contract price by standalone selling price, which IFRS 15 requires for some contracts. Partner apps add it. Where the allocation has to run on the sales transactions themselves, we recommend NetSuite. Revenue by stage of completion is not in the standard product either; partner apps or period-end entries close the gap.
Much of what a growing company needs comes with Enterprise: full accounting, payroll, Studio, the helpdesk and the store apps. And each major version can change the data model, so every customisation carries an upgrade cost. Odoo Online runs no custom modules at all.
Is Odoo the right platform for you?
Tell us how your company works and where it is heading. We will tell you whether Odoo fits, and which edition and hosting you need.