Call +1 515-644-1400Call any time. 24/7 outage response is an add-on.hello@allodi.us

Blog

Odoo support retainer pricing per user, explained

Odoo support is often priced only after a sales call. We publish ours, so this article walks through exactly how a per-user retainer is worked out, what it includes, and what it costs for companies from 2 to 40 users.

A support retainer is a monthly fee for having someone responsible for your Odoo: keeping it running, backed up and patched, and fixing the small things that break. Before signing one, you will want three answers. What does it cost for our size? What is included? What happens in a busy month? This article answers them with our own published prices, and the arithmetic is the same our price calculator does.

What the retainer covers

Our retainer is called Managed Odoo. It covers:

  • Server operations: operating system and Odoo security patches on a schedule you know about, and monitoring from outside your network. Your login page is checked every 5 minutes; disk, memory, services, backups, failed outgoing mail and late scheduled actions every 15.
  • Backups: nightly to a Backblaze B2 bucket your company owns, kept 30 days, with a restore onto a scratch server every month to prove they work.
  • Small-fix hours: a report column, a required field, a wrong default, a stuck scheduled action, a bank statement that will not import. Each ticket keeps a record of what was looked at and what changed.
  • Point releases within your major version, rehearsed on a copy first.

Your Odoo runs on a server in your company's own Hetzner account, which you pay directly, usually about $40 to $75 a month, plus a few dollars to Backblaze. We add nothing to those bills. The full list is on the services page, and how the hosting is set up is on Odoo hosting on a server you own.

The formula

Everything comes from three counts you can see in your own Odoo: companies, branches and internal users.

ItemMonthly feeFix hours included
First company$752 hours
Each additional company$37.502 hours
Each branch (Odoo 17 and later)$12.50None
Each internal user$1515 minutes
Portal usersFreeNone

Written out: the monthly fee is $75 + $37.50 × (companies − 1) + $12.50 × branches + $15 × users, and the included hours are 2 × companies + 0.25 × users, pooled across the whole account. Hours beyond that are $150 an hour. Prices are in US dollars and exclude sales tax, which the pricing page explains.

The reasoning is simple. More companies mean more setup to look after, such as charts of accounts, taxes and fiscal positions, so each company brings its own fee and its own two hours. More people using Odoo mean more questions and more small fixes, so each user adds to both. A branch is billed at $12.50 and adds no hours.

Worked examples

CompanyArithmeticPer monthHours includedPer user
2 users, 1 company$75 + 2 × $15$1052.5$52.50
5 users, 1 company$75 + 5 × $15$1503.25$30
5 users, 1 company with 2 branches$75 + 2 × $12.50 + 5 × $15$1753.25$35
10 users, 1 company$75 + 10 × $15$2254.5$22.50
10 users, 3 companies$75 + 2 × $37.50 + 10 × $15$3008.5$30
25 users, 1 company$75 + 25 × $15$4508.25$18
40 users, 2 companies$75 + $37.50 + 40 × $15$712.5014$17.81

The per-user column is the monthly fee divided by internal users, rounded to the cent. It falls as a company grows, because the company fee is shared by more people, and it never drops below the $15 user price.

A month with more work

Take the 10-user company with 4.5 included hours. In a quiet month, it uses two hours on small fixes, and the fee stays $225. In a busy month, a new report and a broken import take 7 hours. The first 4.5 are included; the other 2.5 are $150 an hour, so $375 on top. We warn you in the ticket before the work goes over the included hours, and because it runs more than 2 hours over, it continues past that point only with your approval.

Work that is clearly bigger than small fixes, such as a new module or a version upgrade, is quoted separately. Upgrades and customization cleanup have their own published prices on the pricing page.

What the retainer does not include

  • Major version upgrades, which are a fixed-price project. See the Odoo 19 upgrade page, or, for Community systems, our article on upgrading Community from 18 to 19 with OpenUpgrade.
  • New module development beyond the fix hours.
  • Bookkeeping itself. We keep the reconciliation tools working; your team or accountant does the reconciling.
  • Odoo Enterprise or third-party license fees, which you pay to the vendor.

How to compare support quotes

Retainers are hard to compare because they bundle different things. Whoever you talk to, these questions put quotes side by side:

  • What exactly does the monthly fee cover: hosting, backups, restore tests, monitoring, fixes, or only a ticket queue?
  • How many hours are included, do they roll over, and what is the hourly rate beyond them?
  • Are you told before work goes over the included hours?
  • What is counted, and how can you check the count on each invoice?
  • Whose name are the server, the code repository and the backups in?
  • What is the notice period, and what do you receive when you leave?
  • Who actually does the work, and how are changes reviewed before they reach production?

Our answers to the last three: your company owns the server, repository and backups; you can leave with thirty days' notice and everything keeps running, with Allodi Print going back to Odoo's standard PDF download; and changes go through a person at Allodi, except a short list of routine pre-approved actions set out for customers in the support portal, and every change is logged, with AI agents doing the legwork under a fence described on how it works.

Where the counts come from

At signup, and then every day, our read-only counting tool automatically counts the companies, branches and active internal users in your database. Each monthly invoice is billed on the highest daily count in the billing period and lists the counts next to the prices, so each line can be checked. Managed Odoo is billed monthly in advance, on the same day each month as your start date, with no proration.

For a first figure, the calculator works it out as you type. For a quote from your own counts, the free scan reads your database without changing it and counts everything the prices depend on.

Questions people ask

Do portal users count?

No. Portal users, such as customers and vendors who log in to see their own documents, are free. The fee counts active internal users, the people who work in Odoo's back end.

Do unused fix hours carry forward?

Yes, for one month. The included hours are pooled across your companies and users; hours you do not use carry forward to the next billing month only, then lapse, and they have no cash value. Hours used are taken from the time logged on your tickets, which you can see on each ticket in the portal.

What happens when a month needs more hours?

Additional hours are $150 an hour, in 15-minute steps. We warn you in the ticket before going over your included hours, and going more than 2 hours over needs your approval.

Is there a minimum term?

No. Managed Odoo is month to month, billed in advance on the same day each month, and you can cancel with thirty days' written notice.

Does the retainer include the Odoo Enterprise license?

No. If you keep Enterprise, you pay Odoo S.A. for it directly. Odoo Community needs no license. Hosting is also paid directly, to Hetzner and Backblaze, at their prices.

We are on Odoo Online. Can we use the retainer?

Managed Odoo runs on a server your company owns, so an Odoo Online database moves first. That move is our rescue and rehost service, and Managed Odoo starts at cutover.

How is the user count checked?

Our read-only counting tool counts your companies, branches and active internal users automatically every day. Each monthly invoice is billed on the highest daily count in the billing period and lists those counts next to the published prices, so you can check every line.

Sources

  1. Allodi pricing (published prices, calculator and terms)
  2. Allodi services: Managed Odoo (what the retainer covers and does not)