The short answer
- What it is: a cheaper Enterprise licence for employees who only need self-service tools. Odoo's pricing page lists it at €7.90 a month (the page as served to us from France, in euros).
- Who counts: every active user with the Light role, plus every active employee in the Employees app who isn't linked to an active internal user: no user, an archived user or a portal user all count.
- Point of Sale: on October 23 Odoo announced that employees who only use Point of Sale won't be charged. On October 24 it was in neither the
20.0code nor the pricing page yet. - Who it concerns: companies on an Enterprise subscription with employee records, on Odoo Online, Odoo.sh or on-premise. Community has no user fees.
Status
- Light user billing starts with Odoo 20 and Enterprise Subscription Agreement v13Sep 24, 2026
- Point of Sale exception announcedOct 23, 2026
- Exception in the 20.0 codeWaiting
- Pricing page updatedWaiting
Get one email when the Point of Sale exception goes live
Odoo 20 introduces a third kind of internal user next to User and Administrator: the Light user. It is meant for employees who need a handful of self-service tools, such as their time off, their attendance or ordering lunch, without the full access, and the full price, of a regular user. Odoo’s pricing page lists it at €7.90 a month next to the per-user plans and sends you to an Odoo advisor for a quote. The page shows prices by country; the figure here is the one it served to us for France, in euros.
The role itself is uncontroversial. How it is counted is not: on Odoo’s forum, the thread Is every employee in Odoo 20 a Light User? filled up with integrators and shop owners whose bill would grow with every employee record, including cashiers who never open the back office. On October 23, Odoo’s founder Fabien Pinckaers announced on LinkedIn that employees whose only activity is Point of Sale will not be charged as light users.
Who counts as a light user
The Enterprise Subscription Agreement (version 13, dated September 24, 2026) and the pricing page define it the same way. In short, a light user is either:
- an active user account with the Light role, or
- an active employee (in the Employees app) that is not linked to an active, non-portal user.
So an employee without a user, an employee whose user is archived, and an employee linked to a portal user all count. An employee linked to a regular user is already paid for as that user. Archived employees don’t count.
The database reports both numbers to Odoo itself. Since September, the periodic update message that every database sends includes the number of active light users and the number of active employees without an internal user, counted exactly as above: no user, an archived user, or a portal user (hr/models/update.py, commits 5d0d3ac8 and 93837ce6).
The October 23 change for Point of Sale
According to Fabien Pinckaers’ post, employees with no activity other than Point of Sale will no longer be charged. Employees used in Planning, the Shop Floor or payslips still count. The aim is that a restaurant doesn’t pay a light user for every waiter who logs in to the till. Ray Carnes posted the same update in the accepted answer on the forum thread, also dated October 23.
The change is announced, not yet live. The post says it will be implemented “in a few days, hopefully”. We last checked on October 24 at 06:55 UTC: the employee count in the 20.0 code (last commit October 24, 02:11 UTC) has no Point of Sale exception yet, and the definition on the pricing page is unchanged. The status above follows it.
What a light user can do
Odoo’s pricing page lists what a light user gets. The edition column says whether the app is in the public Community code (odoo/odoo, branch 20.0) or only in Enterprise.
| Capability (Odoo pricing page) | Edition |
|---|---|
| Their own time off | Community |
| Their own expenses | Community |
| Their own attendance | Community |
| Their own appraisals | Enterprise |
| Their own referrals | Enterprise |
| Their own planning | Enterprise |
| Field Service | Enterprise |
| Barcode app (inventory operator) | Enterprise |
| Knowledge, read only | Enterprise |
| Payslips, as an employee without a user | Enterprise |
| Point of Sale, as an employee without a user | Community |
| Manufacturing Shop Floor, as an employee without a user | Enterprise |
In the code, a light user is not a separate user type. It is an internal user (base.group_user) whose groups all belong to a short list of light groups. The role field on the user form (Light, User, Administrator) is computed from the groups, and setting it to Light strips every group that isn’t light (res_users.py). In Community, Time Off, Attendances and Lunch declare light groups for an employee’s own records; Sales, CRM, Inventory, Manufacturing, Project and Accounting only declare feature switches, which don’t give access to the app.
Light users also can’t be assigned activities: the assignee field on activities leaves them out (8abb3158).
Inviting employees and upgrading them later
The employee form has an Invite button. It creates a light user with the employee’s work email as login and sends the sign-up link (hr_employee.py). It reuses the user already linked to the employee’s work contact or resource, and it refuses to create a duplicate if a user with that email already exists: since October 9, the form offers to link that user instead (146acd89). An employee without an email can’t be invited.
To give someone more, open the user and set the role to User. They are then billed as a regular user.
Community, Enterprise and Online
The Light role and the light groups are in Community (base, hr and the apps above, LGPL-3), so a Community database has the same role and the same Invite button. Licensing applies only to an Enterprise subscription, on Odoo Online, Odoo.sh or on-premise: Community has no user fees.
What to check
For business owners
- Count your employees, not just your users. Every active employee without an internal user is billed as a light user. Archive the records of people who have left.
- Portal users don’t help. An employee linked to a portal user still counts.
- Point of Sale-only staff: until the exception is implemented, cashiers who only log in to the till still count. Watch for the update.
- Payroll, Planning and Shop Floor employees count, even if they never log in.
For developers
A user is light only if every group they have is a light group. A custom group you give to employees, even a harmless one, makes them regular users. To keep them light, declare the group in your module by overriding res.groups._get_light_group_xmlids() and appending its XML ID, as lunch or hr_holidays do:
class ResGroups(models.Model):
_inherit = 'res.groups'
def _get_light_group_xmlids(self):
return (
*super()._get_light_group_xmlids(),
'my_module.group_my_self_service',
)Make sure the group grants no more than a light user should have.
Sources
- Odoo pricing: the Light user price, definition and capabilities (checked October 24, 2026, as served for France)
- Odoo Enterprise Subscription Agreement, version 13, September 24, 2026
- Fabien Pinckaers on LinkedIn, October 23, 2026
- Is every employee in Odoo 20 a Light User?, Odoo forum
odoo/odoobranch20.0:base,hr,mail,hr_holidays,hr_attendance,lunch
Checklist
Business owners
Developers
Ticks stay in this browser.