Set up the 26 statutory days, keep public holidays off the balance, route approvals and track balances in real time: the employer's guide to Odoo's Time Off app, and the payroll limit to know.
In short. Odoo's Time Off app centralises leave requests, balances and approvals for your staff. In Luxembourg, it lets you model the 26 statutory working days of annual leave, set up the 11 public holidays so they don't eat into that balance, and track carry-over to 31 March. Its blind spot: Odoo has no native Luxembourg payroll, so the leave allowance payment and the provision for unused days are handled on the accounting side.
Tracking leave on a spreadsheet works right up until an employee disputes a balance, a departure leaves days to pay out, or year-end reveals a leave liability nobody provisioned for. Odoo ships a dedicated app, Time Off, to leave that guesswork behind. Here is how it works, how to translate Luxembourg's annual leave rules into it, and where the tool stops once it meets the Grand Duchy's payroll.
What is Odoo's Time Off app for?
The Time Off app brings leave requests, each employee's balances and the approval chain into a single place. The employee files a request from their own portal, the manager approves it, the balance updates on its own, and the absence shows up in the team calendar. No more double counting between the employee's spreadsheet and the HR one.
In practice, the app is built around a few objects. Time off types (paid annual leave, sick leave, unpaid leave, special leave) are configured once, each with its own approval mode and unit of measure. Allocations grant a number of days to each employee. Requests draw down those allocations. A dashboard shows remaining balances, carried-over days and a projection of the balance at a future date. Add to that a team calendar, reporting by type and by person, and links to payroll and timesheets.
Modelling the 26 statutory days of Luxembourg leave in Odoo
In Luxembourg, every full-time employee is entitled to 26 working days of annual leave per year, a statutory minimum since 1 January 2019, set out in our guide to paid leave in Luxembourg. Odoo offers two ways to grant this entitlement, and the choice has practical consequences.
| Allocation method | How it works | When to prefer it |
|---|---|---|
| Regular allocation | You grant the full 26 days at the start of the year, approved by a manager | Simple, readable, suited to a stable headcount over the calendar year |
| Accrual plan | The entitlement builds up month by month, about 2.17 days per full month worked | Closer to the statutory pro-rata accrual, useful for joiners and leavers mid-year |
The accrual plan sits closer to the Luxembourg rule, where leave is earned at one twelfth of the annual entitlement for each full month worked. It also handles carry-over of unused days and an optional cap. The regular allocation stays ideal for clarity when your staff are present all year. Either way, you set a validity period to frame the reference year.
The 11 public holidays: set them up so they aren't deducted
This is the most common configuration mistake. Luxembourg's 11 statutory public holidays are on top of the 26 days of leave and are not deducted from them. In Odoo, you enter them once in the company's public holidays, with their dates for the year. An employee booking a week off that includes a public holiday should only have the genuinely working days deducted, not the holiday. Without this setup, the tool consumes an extra day of leave for every holiday falling during an absence, and the displayed balance drifts out of true.
Requests and approval: setting the right validation chain
Each time off type carries its own approval mode, to decide based on how you are organised. Odoo offers several levels: no validation, validation by the line manager, validation by a time off officer, or double validation. For an SME, manager approval is usually enough; double validation makes sense when HR wants to keep a hand on certain types of absence.
The employee files a request from their portal, stating the type, the dates and, where needed, the half day. The manager approves or refuses, and the balance adjusts. For a collective shutdown, say between Christmas and New Year, a group request applies the same leave to a whole department or the entire company in one go, rather than person by person.
Carry-over to 31 March: what Odoo can do, and its limits
In Luxembourg, leave not taken by 31 December is in principle lost, unless carried over to 31 March of the following year, and beyond that in cases of illness or parental leave. Odoo's accrual plan handles a carry-over of the balance with a cap and an expiry date, which lets you approximate this rule: you allow the carry-over, then set the carried days to lapse on 31 March. The projection of the balance at a future date helps anticipate what is at risk of being lost.
Two Luxembourg subtleties are not automatic, though. The three-month qualifying period of the first year, during which the employee earns days but cannot yet take them, calls for a manual setting of when leave can be booked. And re-crediting days when an employee falls ill during their holiday means a case-by-case allocation correction from the medical certificate. The tool keeps the counter; the rule of law still has to be applied by an informed hand.
Want accurate leave balances, tied to your payroll and your books, with no parallel spreadsheet?
Book a free diagnosticThe limit to face head-on: Odoo has no Luxembourg payroll
This is the point demos tend to skip, and the one that matters most to an employer. The Time Off app handles the counters well, but it does not, on its own, work out what a day of leave costs. Two figures escape it without a payroll module adapted to Luxembourg.
The first is the leave allowance, equal to the average daily pay of the last three months, regular supplements included. Odoo does flag each absence for payroll, with a status showing whether it is to be included in the next payslip, but computing the allowance requires a payroll engine, and the list of payroll localizations in Odoo 19 does not cover the Grand Duchy. We explain why, and the three ways around it, in our article on Odoo and payroll in Luxembourg.
The second is the provision for leave to be paid. Days earned and not taken at closing are a liability of the company, employer charges included, and must be provisioned in the accounts. That entry does not come out of the Time Off app: it is built from the real balances, in the accounting. A clean leave counter in Odoo is only worth its full value once it is tied to the bookkeeping, otherwise the leave liability stays invisible until the day it lands.
What the Advena coupling changes
This is exactly the bridge we build under one roof. The leave counters live in the same Odoo where we keep your accounting, set up for the standardised chart of accounts (PCN 2020) and Luxembourg VAT. As a result, the Time Off balances, the leave allowance computed in payroll and the provision for unused days at closing all speak the same language, instead of living in three separate files. You read your leave liability in your live financial position, not discovered the following spring. To place this coupling within our wider offering, our complete guide to the accounting firm for an SME covers the ground, and our Odoo in Luxembourg piece sets the frame on the tool side.
One honest note to close: if you sell time and run teams on fixed-price work, the Time Off app pairs with timesheets for a full view of available capacity, a topic we cover in Odoo for service companies.
Frequently asked questions
Does Odoo handle Luxembourg leave natively?
Odoo offers a full Time Off app to track requests, balances and approvals, but the Luxembourg statutory rules are not preconfigured. You set up the 26 days of leave, the 11 public holidays and the carry-over rules yourself. The tool keeps the counters; the rule of law is translated into it during configuration.
Can you set up the 26 days of leave in Odoo?
Yes, in two ways: a regular allocation that grants the 26 days in one go, or an accrual plan that builds the entitlement at about 2.17 days per month, closer to the statutory pro-rata accrual. The accrual plan also handles carry-over and its cap.
Does Odoo compute the leave allowance?
No, not on its own. The Time Off app flags the absence for payroll, but the leave allowance, based on the average pay of the last three months, requires a payroll engine, and Odoo 19 has no Luxembourg payroll localization. The calculation runs through a third-party module or an outsourced payroll connected to Odoo.
Are public holidays deducted from leave in Odoo?
Only if you have not set them up. The 11 statutory public holidays are on top of the 26 days of leave. By entering them in the company's public holidays, Odoo does not deduct them from the balance when they fall during an absence.
Can you track leave balances in real time?
Yes. The dashboard shows, for each employee, the remaining balance, the carried-over days and a projection of the balance at a future date. Tied to the accounting, this tracking also lets you provision the leave liability at closing on real balances, not estimates.
Going further
- Paid leave in Luxembourg: 26 days, accrual and carry-over
- Odoo and payroll in Luxembourg: what works and what needs a complement
- Odoo for service companies: projects, time tracking and invoicing
- Odoo in Luxembourg: is it the right ERP for your SME?
- Accounting firm in Luxembourg: the complete guide for an SME
Why Advena?
- Finance and digital under one roof: the leave counters live in the same Odoo where we keep your books, not in a separate file.
- An honest approach: we tell you what Odoo does natively and what needs a complement, before you commit.
- Clear packages, no hourly billing: payroll and leave tracking are part of a package from 325 € per month, all in.
- Direct access to the founders: it's the partners who work with you, not a junior.
Want clean leave tracking, tied to your payroll and your accounting in real time? Tell us where you stand.
Talk about your projectInformation up to date as of October 2026. The features described refer to the Time Off app in the Odoo documentation; the annual leave rules rest on the Luxembourg Labour Code as presented by Guichet.lu. Odoo evolves with each version and every situation is specific, so this article is for information and does not constitute personalised advice.