Odoo pricing: five users, custom modules, and hosting

Work out which plan your workflow needs, then budget the license, hosting, and people who will maintain it.

Kartik Deshpande··6 min read

You have selected a module that handles your receiving exception, and the developer says it needs Python code. That detail changes the Odoo pricing conversation. The subscription must allow the required customization, and the hosting environment must be able to run it. Buying Custom while staying on an incompatible deployment would leave the original problem unresolved.

Start with Standard for several standard apps on Odoo Online. Evaluate Custom when the requirement includes Studio, external API access, multiple companies, or custom-code hosting. One App Free is worth testing when one supported app covers the whole job. Keep your current setup if a configuration change meets the need; a custom module deserves a defined benefit and a maintenance owner.

Kartik Deshpande prepared this comparison from official pricing and Odoo 19 documentation checked October 19, 2026. The five-user examples are calculations, not quotations or hands-on test results. Permute publishes this article and sells connected business data and custom applications.

Choose the plan from the requirement

  • One App Free: $0 for unlimited users on Odoo Online when one app and its included dependencies meet the job. Confirm eligibility in the pricing FAQ.
  • Standard: all standard apps on Odoo Online. Confirm the workflow works without Studio or custom code.
  • Custom: evaluate for Studio, multi-company, or external API requirements, as listed in the plan comparison.
  • Custom with suitable hosting: required for a custom Python module. Odoo Online excludes custom modules in its deployment documentation.

Studio and a custom Python module are different implementation choices. Studio can change fields, views, reports, and approval rules. Installing it on Standard triggers an upgrade to Custom. A yearly contract generates an upsell order with a 30-day limit; a monthly contract changes rate on the next bill. Have the account owner approve that consequence before someone experiments in production.

An integration can also determine the plan. Odoo’s external API documentation excludes Standard and One App Free from external API access. Ask the implementer how records will move, which account authorizes access, and what happens when a request fails. “Connect the warehouse system” is too vague to price.

What five full users cost over twelve months

Use five full internal users for one company, with the same purchasing and inventory requirements throughout. Odoo’s published US pricing explanation gives promotional monthly equivalents of $24.90 for Standard and $49 for Custom, against list equivalents of $31.10 and $61. The pricing page limits the discount to the first twelve months and the initial users ordered.

Subscription scenarioFive users: first 12 monthsFive users: undiscounted 12-month equivalent
Standard, no custom module5 × $24.90 × 12 = $1,4945 × $31.10 × 12 = $1,866
Custom, Studio or API requirement5 × $49 × 12 = $2,9405 × $61 × 12 = $3,660
Custom, Python module on Odoo.sh$2,940 plus hosting and module work$3,660 plus hosting and module work

These calculations use the displayed yearly-plan monthly equivalents. They are not monthly-billing quotes, proof of an invoice schedule, or guaranteed renewal prices. Get the billing frequency, eligibility, renewal terms, and taxes in the order form. A monthly contract has its own rate; multiplying a monthly-contract price by twelve describes a year of payments, not an annual invoice.

Under these assumptions, Custom adds $1,446 to the first-year subscription and $1,794 at the displayed undiscounted rates. Decide what that additional scope buys before adding implementation costs. For a broader product decision, the Odoo vs ERPNext comparison separates software licensing from the work of maintaining an installation.

Count full users, portal users, and limited roles separately

The pricing FAQ excludes external customers and suppliers using the portal from paying users. It also offers a Light User category for specified limited roles, subject to an advisor quote. Our calculation assumes five full operational users, with no Light User discount. Classify actual duties before ordering seats.

Portal access is not a substitute for an employee’s operational permissions. Odoo’s access-rights guide distinguishes portal users accessing their own data from internal users. List who enters receipts, changes products, approves purchases, and reviews supplier information. Then demonstrate each role with its own account, including an attempted action it should not be allowed to perform.

Add hosting and maintenance to the custom-module proposal

The Odoo.sh calculator prices hosting separately from the Enterprise license, with workers, storage, and staging environments affecting the configuration. Its public page did not establish a configured dollar total for this example. Leave that line unpriced until someone sizes it. Five licensed users alone does not establish the capacity a database and its background jobs need.

Request separate prices for implementation, training, module development, and future module maintenance. Odoo identifies implementation and custom-code maintenance as subscription exclusions in its pricing FAQ. Ask which defects the proposed maintenance agreement covers and who responds when the developer is unavailable.

The upgrade instructions require custom source code to be compatible with the target version and call for testing an upgraded database. Retain a small acceptance dataset for that work. For example, receive 60 of 100 ordered units, reject ten under your declared rule, and check the remaining quantities and permissions. Save the expected result before development starts.

Decide where a recurring report should live

A custom report request needs more detail than a screenshot. Define its record IDs, inclusion rules, dates, units, and access requirements. Ask whether a standard report or supported configuration meets them. If a report combines ERP receipts with a separate warehouse file, also specify how matching and corrections work. Otherwise two teams may rebuild the same calculation differently.

Keep one definition behind recurring outputs
ERP requirement

Receipt IDs, statuses, quantities, and permitted users

Declared definition

Which receipts count, with correction and freshness rules

Reusable output

The same rule in an operations report and application

A buying decision should identify where the rule lives and who maintains it when records or software change.

Where Permute fits around the ERP

Permute sells connected business data and custom applications. We can scope a report using business records and declared definitions. For the receipt example, retain the ERP order and receipt IDs, map the warehouse file, and make the accepted-quantity calculation reusable. An operations view can then show its source evidence, freshness, and unresolved records instead of hiding the assumptions in a spreadsheet formula.

Start with one recurring operations report

Bring the source records and the definition the team needs to reuse.

Keep ERP licensing and transaction work in scope

This is a separate product decision with its own scope and cost. Permute does not replace Odoo’s transaction processing or remove Odoo’s API licensing requirements. This comparison promises no ready-made Odoo connector or automatic module migration. Verify the extraction method, permissions, supported operations, and maintenance owner before committing.

Approve the workflow and the complete quote together

Before signing, attach the installed-module list and acceptance dataset to the proposal. Record the deployment, full and limited users, renewal assumptions, and every unpriced service. If you are moving records, use the ERP migration checklist to test open transactions and historical retrieval.

The Odoo vs NetSuite comparison can help if you are still comparing implementation scope.

Choose the smallest setup that passes your required workflow. A custom module may be justified, but its license, deployment, and maintenance costs belong in the same decision. Keep the test records so the next upgrade can be checked against the same expectations. Revisit the quote when users, integrations, or modules change.

Review the data work before adding a module

Bring one report, its source records, and the proposed customization.

Questions about an Odoo budget

Is One App Free the same as Odoo Community?

No. One App Free is the hosted offer evaluated here. Community is a separate edition and deployment decision. Check edition-specific functionality before comparing a Community installation with a demonstration of paid Enterprise apps.

Does buying Custom mean I need Odoo.sh?

No. A Studio or external API requirement can justify Custom without a Python module. Establish the deployment from the actual extension requirements. If custom code requires Odoo.sh or your own infrastructure, obtain a separate hosting and maintenance proposal.

Can I use the introductory price for future hires?

Do not assume that. The advertised discount applies to initial users ordered for twelve months. Request the rate and effective date for additional users in writing, then update the budget when the roster changes.

What should I ask an implementation partner to itemize?

Ask for configuration, data preparation and import, training, custom development, hosting, acceptance testing, and ongoing maintenance. Assign an owner to each deliverable and agree what evidence counts as completion. Keep unpriced work visible instead of treating it as included.