Skip to main content
iVentureTeam
Odoo HR & Payroll

Odoo Payroll Setup: HR, Attendance and Localization in Odoo 19/20

Odoo payroll setup for Odoo 19 and 20: localizations by country, HR module, attendance, time off, pay runs, what changed in Odoo 20 and what it costs.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
November 13, 202613 min read3 views
Odoo Payroll Setup: HR, Attendance and Localization in Odoo 19/20 cover

Most guides on Odoo payroll show a payslip screen and stop there. Real setups fail earlier, on the wrong localization, missing contracts or attendance that never reaches the payslip. Our Odoo implementation services build payroll in the order that avoids those failures.

Related service: Odoo implementation services — HR, payroll and attendance configured for your local rules.

This guide is for HR managers, finance leads and owners who plan to run payroll inside Odoo 19 or Odoo 20. If payroll is one part of a wider rollout, start with our Odoo ERP implementation guide for the full project plan.

What does Odoo payroll cover in Odoo 19 and 20?

Odoo payroll calculates pay from worked time and contract terms, then posts payslips to Accounting and prepares payments. It does not work alone: it reads data from four other HR apps.

The Odoo Payroll documentation describes the app as calculating worked time with Employees, Time Off, Attendances and Planning, then creating payslips. Employees are paid by wire transfer or check; Odoo says cash is possible but not recommended.

The chain looks like this:

  • Employees: personal data, bank account, identification numbers and the payroll tab.
  • Contracts: salary structure, wage, working schedule and benefits, managed on the employee record.
  • Attendances: check-in and check-out records, extra hours and absences.
  • Time Off: approved leave that reduces or replaces worked days.
  • Payroll: salary rules, payslips, pay runs, reports and accounting entries.

Which countries have an Odoo payroll localization?

Odoo 20 documentation lists a payroll localization for 25 countries, and that list decides how much you configure versus build. A localization ships the salary structures, rules, taxes and reports for that country.

The Odoo payroll localization list includes India, the UAE, Saudi Arabia, Egypt, Jordan, Kenya, Mexico, the US, Belgium and Australia. Odoo 19 listed 23 countries; Oman and Uzbekistan are new in Odoo 20.

Many countries need a payroll module plus a "Payroll with Accounting" module. Each company in a multi-company database can use its own localization, so a group with Dubai and Riyadh entities runs both.

CountryMain modulesWhat the localization handles
IndiaIndia - Payroll, Payroll with Accounting, India - Time OffEPF, ESIC, professional tax, LWF, TDS, gratuity, sandwich leave
United Arab EmiratesUAE - Payroll, Payroll with AccountingNationality rules, WPS report, end of service
Saudi ArabiaSaudi Arabia - Payroll, Payroll with AccountingGOSI rates by nationality, WPS export, end of service provision
EgyptEgypt - Payroll, Payroll with AccountingLocal salary structure and accounting entries
Malaysia, NZ, Singapore, UKEmployment Hero PayrollPayroll runs in Employment Hero; journal entries sync to Odoo

For the Gulf specifics, see our Odoo payroll UAE WPS guide and our Odoo Muqeem, GOSI and KSA payroll guide. This post stays on the general setup.

Odoo 19 vs Odoo 20 payroll: what changed?

Odoo 19 vs Odoo 20: What changed in Odoo payroll?

Odoo 20 keeps the same payroll logic as Odoo 19 but makes pay runs guided and merges time off and payroll time into one Time Type. The table sums up the changes that affect setup.

AreaOdoo 19Odoo 20
Pay runsCreate, add payslips, processGuided dialog with a Before You Start check
Payslip checkValidate, then review PDFsTest Print creates draft PDFs on Ready pay runs
DashboardGeneral payroll dashboardMonthly warning cards with fix buttons
Time typesWork entry types and time off types apartOne Time Type with Time Off and Payroll tabs
Salary changesEdit each contractSalary Increase action creates new versions
Salary rulesOne category, one structureSeveral categories and pay structures per rule

Our Odoo 20 payroll release notes also show that the separate work entry records and the Planning to Payroll bridge are gone in Odoo 20. Payslips read time off and working schedules directly.

How do you set up the Odoo HR module and employees first?

Set up companies, departments, working schedules and employee records before you touch salary rules. Payroll can only be as accurate as the HR module data behind it.

Start with the company record. In India, the state on the company address becomes the default work address used to calculate payroll taxes.

Then build the Odoo employees records:

  • Identity: legal name, nationality and identification numbers. In the UAE, nationality changes payslip handling for UAE and GCC citizens.
  • Bank account: needed for payments and for WPS exports in the UAE and Saudi Arabia.
  • Statutory IDs: in India, the 12-digit UAN, the ESIC number, PAN and LWF account number.
  • Working schedule: fixed, variable or undefined in Odoo 20; variable schedules suit rotations.
  • Approvers: the manager who approves attendance and time off for each employee.

Every employee needs a running contract to be paid. Contracts sit on the employee's Payroll tab, and templates for full time, part time or seasonal staff speed up hiring.

Watch licensing here. Under Odoo's subscription terms, an active employee record not linked to an active user counts as a Light User, priced at US$8.90 a month in the US. Plan staff who never log in as Light Users, not full users.

How do you configure Odoo attendance for payroll?

Odoo attendance acts as the time clock, and its settings decide what counts as overtime, lateness and absence on the payslip. Agree these rules with HR before go-live.

The Odoo Attendances documentation lists three ways to check in: from the backend, from a kiosk device, or through the attendance icon in the top bar. Key settings sit under Attendances, Configuration, Settings.

  • Automatic Check-Out: closes forgotten check-ins after a tolerance, or in Odoo 20 at a specific time such as 8:00 PM.
  • Absence Management: logs days with no attendance and no time off request on the attendance report.
  • Tolerance in favor of company: extra minutes below this value do not count as overtime.
  • Tolerance in favor of employee: a short day within this grace period is not penalized.
  • Extra Hours Validation: approve overtime automatically or by the manager.

For biometric devices, the Odoo BioTime integration pulls punches from a BioTime Cloud server into attendance records. Odoo says it connects to the BioTime software, not to ZKTeco terminals directly.

How does Odoo time off feed payroll?

Approved Odoo time off reduces or replaces worked time on the payslip, so leave types must match your payroll rules. Unapproved leave inside the pay period blocks clean processing.

In Odoo 20, each Time Type carries both a Time Off tab and a Payroll tab, so one record defines approval, allocation and pay effect. A type can count working days or calendar days, which matters for countries that count weekends inside long leave.

If time off is taken after payslips are validated, the Deferred Time Off setting moves it to the next pay period instead of reprocessing payslips.

India adds two policies through the India - Time Off module. Sandwich leave counts a weekend between two leave days, so Friday plus Monday becomes four days. Optional holidays limit some leave types to set regional or religious dates.

Odoo payroll setup: a step-by-step order

Follow this order and most payroll errors show up in testing rather than on payday. Each step depends on the one before it.

  1. Install the localization: in Payroll settings, click Choose a Payroll Localization and install your country, plus the accounting module if one exists.
  2. Configure payroll settings: payroll entries for Accounting, contract and work permit expiry notices, YTD reset date and payslip PDF rules.
  3. Set statutory registrations: for India, the EPF employer ID, professional tax number, ESIC code and LWF number.
  4. Map accounts: link salary rules to expense and liability accounts so payslips post correctly.
  5. Build contract templates: one per salary structure and employee type.
  6. Load employees and contracts: import in batches, then check bank accounts and statutory IDs.
  7. Configure attendance and time off: schedules, tolerances, overtime approval and leave types.
  8. Run a parallel month: compute payslips in Odoo next to your current payroll and compare net pay line by line.
  9. Go live: first real pay run, then payments, reports and filings.

The Odoo India payroll documentation shows how much a localization fills in. One example: you choose whether PF is calculated on basic capped at Rs 15,000 or on actual basic.

How do you run pay runs and payslips in Odoo?

A pay run groups payslips for one salary structure and pay period, so you compute, check and pay them together. Most companies create one pay run per structure each period.

Under Payroll, Payslips, Pay Runs, you pick the salary structure, pay schedule and period start; Odoo fills the end date. Each run shows employer cost, gross and net totals.

Before you validate, use these checks:

  • Before You Start (Odoo 20): lists pending issues, such as missing contracts or attendance problems, before payslips are generated.
  • Test Print (Odoo 20): creates draft PDF payslips on a Ready pay run so HR can check them.
  • Chatter on pay runs (Odoo 20): post notes and keep the approval trail on the pay run itself.

After validation, payslips post to Accounting and you pay by bank transfer, SEPA where enabled, or check. The India localization adds a salary register, EPF and ESI reports and a yearly salary report for statutory filing.

What if your country has no Odoo payroll localization?

Without a localization you either build the salary structure yourself, buy a module, or keep payroll in a local provider and post journals to Odoo. Choose based on headcount and how often local rules change.

On the Odoo forum, one user found that Canadian payroll is not supported by default in Odoo 18 or 19. Another, setting up Oman payroll manually, was told Python code would be needed for social security and overtime.

Oman now has a localization in Odoo 20. For other countries, compare three routes:

RouteBest forWatch out for
Manual salary structures and rulesSimple pay, few staff, stable rulesYou own every tax and law change
Third-party or custom moduleMid-size firms with local tax and reportsUpgrade cost at each Odoo version
External payroll, journals in OdooComplex tax or many statesTwo systems for employee data

Odoo already supports the third route in Australia, Malaysia, New Zealand, Singapore and the UK. The Employment Hero payroll module keeps payroll in Employment Hero and syncs journal entries to Odoo.

Our post on Odoo localization gaps explains how to score these gaps before you sign a project.

Odoo payroll by industry

Shift work, site crews and day-type rates change how you configure attendance and salary rules more than company size does. The table shows the common patterns.

IndustryPain or cost driverOdoo approachHow iVentureTeam helps
ManufacturingShifts, overtime, night allowancesKiosk attendance, extra hours rules, shift schedulesMap shift rules to salary rules
Retail and restaurantsPart-time staff, rotationsVariable schedules, hourly contractsSet up rotas and hourly pay runs
ConstructionSite crews, remote check-inAttendance by device, BioTime CloudConnect devices, test punch sync
Healthcare and servicesWeekday, weekend and holiday ratesTimesheets and day-type rulesAutomate rate rules
GCC trading firmsExpat staff, WPS, end of serviceUAE and Saudi localizationsConfigure WPS and gratuity

How much does Odoo payroll setup cost?

Odoo payroll cost has two parts: user licenses and the implementation work to configure and test your country rules. Licenses are predictable; setup depends on localization coverage.

Payroll sits under Human Resources on the Odoo pricing page. The US price billed yearly is US$31.10 per user a month for Standard and US$61.00 for Custom. In India it is Rs 725 and Rs 1,350. Staff who only have an employee record count as Light Users at US$8.90 or Rs 195.

Our published Odoo implementation cost ranges run from $3k to $9k for small projects, $9k to $27k for mid-size and $27k to $150k+ for large ones. Treat them as indicative ranges.

Costs rise with missing localizations, many salary structures, biometric devices and payroll history you want to migrate. For a quick number on your own scope, use the Odoo project estimate tool.

How iVentureTeam helps with Odoo payroll setup

Adding payroll to Odoo? Price the project

We set up Odoo payroll in the right order for your country and prove it with a parallel run before you pay anyone from it. We have delivered 150+ ERP projects across 35+ countries with 40+ Odoo specialists over 13+ years.

  • Localization check: confirm what Odoo covers for each of your countries and what must be built.
  • HR module setup: employees, contracts, templates, schedules, attendance and time off.
  • Salary rules: structures, allowances, deductions and accounting mappings, tested on real payslips.
  • Device and provider links: BioTime Cloud, banks and external payroll tools through our Odoo integration services.
  • Parallel runs and training: side-by-side comparison with your current payroll and hands-on HR training.

Odoo payroll case study: Enabl Health

An Australian health-tech company needed timesheets to follow weekday, weekend and holiday rates without manual rate lookups. We extended Odoo's Timesheet, Payroll and Portal layers to make that native.

Enabl Health tracked work hours with manual start and stop times, which invited errors. Rates differed for weekdays, weekends and holidays, and portal users could not edit timesheets or upload attachments.

We started with a data cleanup across five areas: sales, timesheets, invoices, payslips and users. We then automated timesheet classification by day type, added start and stop timers with automatic time calculation, and rebuilt the portals for mobile.

The project ran on Odoo.sh with separate staging and production branches, over 10 weeks plus ongoing support. Read the Enabl Health timesheet and billing case study.

The bottom line on Odoo payroll

Odoo payroll is a strong choice when your country has a localization and you set up HR, attendance and time off before the first pay run. Without a localization, plan the build or a hybrid route from day one.

Check the localization list, clean your employee data, agree attendance rules with HR, and run at least one parallel month. On Odoo 20, use the new Before You Start check and Test Print on every pay run until the numbers match.

Ready to run payroll inside Odoo?

Plan my payroll setup

Get a payroll setup plan for your countries, headcount and attendance rules. Plan your Odoo payroll setup with our team, call +91-90235-15208, or email business@iventureteam.com.

Frequently Asked Questions

Does Odoo have a payroll module?

+

Yes. Odoo Payroll calculates payslips from contracts, attendance and time off, posts them to Accounting and prepares payments. It is listed under Human Resources on the Odoo pricing page.

Which countries does Odoo payroll support?

+

Odoo 20 documentation lists payroll localizations for 25 countries, including India, the UAE, Saudi Arabia, Egypt, Kenya, Mexico, the United States, Belgium and Australia. Oman and Uzbekistan are new in Odoo 20.

Is Odoo payroll available in Canada, the UK or Germany?

+

None of them has a standard localization in the Odoo 20 list. UK firms can run payroll in Employment Hero and sync journals to Odoo; otherwise build salary rules, add a module or post journals from a local provider.

How do I set up payroll in Odoo?

+

Install your country's payroll localization, configure payroll settings and accounts, create employees and contracts, set up attendance and time off, then compute a test pay run and compare it with your current payroll.

Can Odoo attendance connect to biometric devices?

+

Yes, through the BioTime integration, which pulls punches from a BioTime Cloud server into Odoo attendance. Odoo says it connects to the BioTime software, not directly to ZKTeco terminals.

What changed in Odoo 20 payroll?

+

Odoo 20 adds guided pay runs with a Before You Start check, Test Print for draft payslips, a warning dashboard, a Salary Increase action and one Time Type that covers both time off and payroll.

Do employees without an Odoo login need a license?

+

Under Odoo's subscription terms, an active employee record not linked to an active user counts as a Light User. In the US that costs US$8.90 a month, much less than a full user.

How long does Odoo payroll implementation take?

+

It depends on countries, headcount and salary structures. Payroll usually runs as one workstream inside the wider Odoo project, and you should plan at least one full parallel pay period before go-live.

Free payroll setup review

Setting up payroll in Odoo?

Tell us your headcount and pay rules. We set up salary rules, statutory files and leave in Odoo, and show what needs a custom module.

Free, with no obligation. A senior consultant replies within 12 business hours.

We use cookies to improve your experience

Essential cookies make the site work; with your permission we also use analytics to improve it. See our cookie policy.