HADOOPT
TECHNOLOGIES
Schedule a Tech Consultation
Home
Services
Odoo ERP implementation Rollout, custom modules, migration and support. Web application development SaaS products, portals and internal platforms. Mobile application development Offline-first field apps and customer apps. AI development & automation LLM assistants, document processing, forecasting. Odoo version upgrades ↗ Move to a newer release, scoped and priced on its own site.
Products
OrgExp ↗ Budget, CAPEX and OPEX management.
Blog About Contact Schedule a Tech Consultation
Blog / Odoo 19: Complete Guide for Businesses
Odoo 19 7 min read

Time off, accruals and attendance in Odoo 19

How to set up Odoo 19 Time Off and Attendances: leave types, accrual plans, approvals, holidays, kiosk check-in and the new overtime rulesets.

· ERP practice 22 Sep 2026

In Odoo 19, Time Off and Attendances are both Community apps. Time Off handles leave types, allocations, accrual plans, approvals and public holidays; Attendances records check-ins from a kiosk, the web or mobile, and calculates extra hours using the new overtime rulesets. Configure your working schedules and leave types first, write each leave policy as an accrual plan, and only then open the kiosk: attendance and overtime are measured against the schedule.

Time off types and approvals

A time off type (Time Off > Configuration > Time Off Types) holds most of the policy. The settings that matter:

  • Requires allocation. If ticked, employees can only take what has been allocated to them. Paid Time Off works this way out of the box; Sick Time Off and Unpaid do not.
  • Time Off Validation, with four choices: None needed, By Time Off Officer, By Employee's Approver, or By Employee's Approver and Time Off Officer. The default Paid Time Off type uses the two-step option.
  • Duration Type: Day, Half-Day or Hours. Choose hours for permission-style short leave.
  • Kind of Time Off: Absence or Worked Time. Worked time is for things like training or on-duty that should not count as absence.
  • Is Unpaid, Supporting Document (to ask for a medical certificate), and Allow Negative Cap with a maximum excess, for companies that let people go into a small minus.

The approver comes from the employee's Time Off Approver field, which follows the manager's user automatically. Check it after importing employees; an empty approver means requests with manager validation have nobody to go to.

Beyond ordinary employees, who request for themselves, Time Off has three access levels: Time Off Responsible, Officer: Manage all requests, and Administrator. Give the Officer level to HR, not to every line manager; managers approve through the approver field.

India: sandwich leave and optional holidays

For companies whose country is India, the India - Time Off module installs itself with Time Off (Community). It adds two options on the leave type:

  • Sandwich Leaves. When a request surrounds a weekend or holiday, those days are counted in the leave. Friday plus Monday becomes four days, not two, if that is your policy.
  • Limited to Optional Holidays. Employees can only pick dates from the list under Configuration > Optional Holidays. This is how you model restricted holidays, where staff choose two from a published list of festivals.

Decide on sandwich leave per type, not globally. It usually applies to casual or earned leave and almost never to sick leave.

Accrual plans

An accrual plan (Configuration > Accrual Plans) earns leave over time instead of granting it all on 1 January or 1 April. A plan has one or more milestones. Each milestone says how much to add (in days or hours), how often (hourly, daily, weekly, twice a month, monthly, twice a year or yearly), from when it starts (at allocation creation or after a number of days, months or years), and an optional cap.

Plan-level settings decide what happens at year end. Carry-Over Time can be the start of the year, the allocation date or a custom date, which is what Indian companies on an April to March leave year need. Unused time is either lost or carried over, with or without an upper limit. Accrual can also be based on worked time, so unpaid leave does not earn leave.

  1. Write the policy in one sentence per rule: "1.5 days per month, max 45 carried forward, first credit after probation".
  2. Build one milestone for each change in rate. A second milestone after five years handles long-service entitlement.
  3. Set the carry-over date and limit, then attach the plan to the time off type.
  4. Create accrual allocations for employees, with the start date set to their joining date, and check a few balances by hand before telling staff.

Public holidays and mandatory days

Configuration > Public Holidays holds company-wide closures. Each holiday can be limited to a working schedule, which is how a company with a Tamil Nadu factory and a Bengaluru office keeps different state holidays apart. Leave durations skip these days unless the time off type is configured to include public holidays in the duration.

Mandatory Days are the opposite: days when time off cannot be requested, such as year-end closing or inventory count. They can be limited to departments or job positions.

Attendances: kiosk, web and check-in modes

Attendances (hr_attendance, Community) needs little configuration, but the choices under Attendances > Configuration > Settings set how people will use it:

SettingOptionsOur default
Kiosk ModeBarcode / RFID; Barcode / RFID and Manual Selection; Manual SelectionBarcode with manual fallback (the default)
Barcode SourceScanner, Front Camera, Back CameraScanner at a gate, front camera on a tablet
Employee PINOn or off; PIN set on the employee's Settings tabOn for manual selection
Attendances from BackendCheck in and out from the Odoo systrayOn for office and remote staff
Automatic Check-OutChecks people out after their schedule plus a toleranceOn, so forgotten check-outs do not create 20-hour days
Device & Location TrackingRecords GPS, IP and device on check-inOn by default; tell employees, and switch it off if you have no reason to keep it

The kiosk runs in a browser from a private URL shown in settings (with Generate new URL to revoke an old one). A cheap tablet at reception with the employee badge printed from the employee form is usually enough. Hardware biometric devices are not part of standard Odoo; those need a connector module.

Overtime rulesets in Odoo 19

Overtime used to be little more than company tolerance thresholds, which are still in settings (Tolerance Time In Favor Of Company and Of Employee). In 19 the rules themselves are Overtime Rulesets (Configuration > Overtime Rulesets), each assigned on the employee's version. The Default Ruleset contains two rules: the Employee Schedule Rule, which counts hours beyond the working schedule, and the Non Working Days Rule, which counts any hours on a non-working day. Both are marked as paid.

Rules are based on either quantity (hours above a daily or weekly amount) or timing (working days, non-working days, when the employee is off, or outside a specific schedule). Each has a rate, and employer and employee tolerances so a few minutes do not count. When several rules apply, the ruleset either takes the maximum rate or sums the extra percentages.

Extra Hours Validation is either automatic or approved by the manager. With the HR Attendance Holidays bridge installed (it installs itself when both apps are present), approved extra hours can be converted into time off, and a time off type can deduct from extra hours. That covers compensatory off without spreadsheets.

Paying overtime is a payroll matter; we cover that in Indian payroll in Odoo 19. For help mapping your leave policy and shift rules, talk to us.

Questions we get asked

Does Odoo 19 support sandwich leave for India?

Yes. The India - Time Off module, which installs automatically with Time Off for Indian companies, adds a Sandwich Leaves option to each time off type. When enabled, weekends and holidays that fall inside a leave request are counted in its duration. It is a Community module, and you can switch it on for casual leave while leaving sick leave unaffected.

How do accrual plans work in Odoo 19 Time Off?

An accrual plan adds leave to an allocation at a set frequency, from hourly to yearly, through one or more milestones that can change the rate after a period of service. Each milestone can have a cap. The plan decides the carry-over date, such as 1 April, and whether unused leave is lost, carried over in full, or carried over up to a limit.

Can employees check in from their phone in Odoo 19?

Yes. With Attendances from Backend enabled, employees check in and out from the Odoo systray in the browser or the mobile app. Device and Location Tracking, on by default, stores GPS position, IP address and device details with each check-in. A shared kiosk on a tablet, using badges or PINs, is the alternative for sites where staff do not have Odoo users.

How is overtime calculated in Odoo 19 Attendances?

Through overtime rulesets assigned on each employee's version. The default ruleset counts hours beyond the working schedule and any hours worked on non-working days. Custom rules can be based on quantity per day or week, or on timing, with rates and tolerances. Extra hours can be auto-approved or approved by a manager, then converted to time off or paid through payroll.

← Previous Recruitment and onboarding in Odoo 19 Next → Running Indian payroll in Odoo 19: PF, ESI, PT and TDS
Keep reading
Odoo 19 Employee records, departments and contracts in Odoo 19 7 min read Odoo 19 Appraisals, goals and skills in Odoo 19 6 min read Odoo 19 Getting started with Odoo 19: what changed and where to begin 6 min read