Light users in Odoo 20: who counts, and the Point of Sale exception

Odoo 20 adds a Light role for employees who only need a few self-service tools, billed below a regular user. Every active employee without an internal user counts as one, which upset Point of Sale shops. On October 23 Odoo said employees who only use Point of Sale will not be charged. Here is what the role does, who counts and what to check.

20.0EmployeesPoint of SalePricingAccess rights

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.0 code 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

  1. Light user billing starts with Odoo 20 and Enterprise Subscription Agreement v13Sep 24, 2026
  2. Point of Sale exception announcedOct 23, 2026
  3. Exception in the 20.0 codeWaiting
  4. Pricing page updatedWaiting

Get one email when the Point of Sale exception goes live

Reading as:

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

Checklist

Business owners

Developers

Ticks stay in this browser.

Found a mistake? ask@odoodigest.com · Corrections logAll changes in 20.0 →

My stack

Pick the versions and apps you run. Weekly digests, this week's table and All changes then show only what concerns you. Saved in this browser.

Versions
Apps
Modules