Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/odoo/documentation/llms.txt

Use this file to discover all available pages before exploring further.

Odoo Payroll calculates employees’ compensation by combining work entry data (hours worked, time off taken, overtime) with the salary rules defined in their contract. Every pay cycle follows the same sequence: verify work entries, generate payslips, review calculations, and pay employees—either by bank transfer or printed check. Because Payroll integrates with Employees, Attendances, Time Off, and Planning, the underlying data is always accurate before a payslip is ever generated.
Install the correct country-specific payroll localization before processing any payslips. Localizations pre-configure tax tables, social contribution rules, and statutory deductions for your country. Changing the localization after payslips have been processed can cause accounting discrepancies.

Salary Structures

Salary structures define how each employee’s pay is calculated. They are organized in a two-level hierarchy: Structure Types group related structures, and each Structure contains the individual salary Rules that compute the amounts.

Structure Types

A structure type groups structures that apply to a similar employment category. The two default types are Employee (for salaried workers on a fixed wage) and Worker (for hourly employees). The structure type also sets the default pay frequency and working hours template.

Salary Structures

Each structure contains an ordered list of rules executed sequentially. A typical structure includes a Gross Wage rule, Social Contributions deductions, Tax rules, and a Net Wage computation. Structures can also cover one-off payments like end-of-year bonuses.

Salary Rules

Rules define individual line items on a payslip—basic salary, meal allowances, overtime pay, pension contributions, income tax. Each rule references a Python-based formula or a fixed amount, and posts to a specific accounting account.

Other Input Types

Add extra payslip inputs—bonuses, expense reimbursements, or manual deductions—that are not automatically derived from work entries. These are applied per payslip when the payroll officer processes the batch.

Working Schedules

A working schedule defines the employee’s expected hours per day and week. Payroll uses working schedules to calculate the number of expected working days within any pay period.
1

Create a working schedule

Go to Payroll → Configuration → Working Schedules and click New. Name the schedule (e.g., “Standard 40 hrs/week”, “Part-Time 20 hrs”, “Flexible”) and define the work time lines for each day of the week.
2

Assign to a contract

On the employee’s contract, select the appropriate working schedule. The schedule determines how many days are counted as worked for a given pay period and how overtime is calculated.
3

Handle flexible or shift schedules

For shift workers, create a schedule that reflects rotating patterns. Odoo’s scheduler uses the assigned schedule to generate accurate work entries and account for any deviations recorded in Attendances or Planning.

Work Entries

Work entries are the daily records of how an employee spent their time during a pay period—regular work, paid leave, sick days, overtime, and public holidays. Payslips cannot be finalized until all work entry conflicts for the period are resolved.

Automatic Generation

When payroll is run, Odoo generates work entries from the employee’s contract schedule, cross-referenced with approved time off requests, attendance records, and planning entries.

Conflict Resolution

Conflicts occur when two entries overlap (e.g., an attendance record and a time off day on the same date). Navigate to Payroll → Work Entries and filter by Conflicts to review and resolve each one before processing payslips.

Manual Entries

Payroll officers can manually add or edit work entries to account for exceptional situations—unanticipated overtime, missed attendance punches, or retrospective corrections.

Deferred Time Off

If time off is approved after payslips are validated, enable Deferred Time Off in Payroll settings to apply the absence to the next pay period instead of canceling and reprocessing the current payslips.

Creating Pay Slips

Payslips can be created individually for one employee, or generated in bulk via a Pay Run for the entire workforce.

Individual Payslip

1

Open a new payslip

Go to Payroll → Payslips → To Pay and click New. Select the employee—Odoo auto-populates the contract, salary structure, and period based on the employee’s active contract.
2

Review worked days and inputs

The Worked Days & Inputs tab shows the number of days and hours for the period, broken down by work entry type. Add any additional inputs (bonuses, deductions) manually if required.
3

Compute the payslip

Click Compute Sheet to run all salary rules. The Salary Computation tab displays every rule line with its computed amount, making it straightforward to verify the calculation before finalizing.
4

Validate and pay

Click Validate to confirm the payslip. Then click Register Payment to initiate a bank transfer, or print the payslip PDF to process payment manually. Validated payslips post their journal entries to the Accounting app.

Pay Runs (Batch Processing)

Pay runs generate and process payslips for multiple employees at once, organized by salary structure and pay period.
1

Generate a pay run

From the Work Entries dashboard, click Generate Pay Run after confirming all conflicts are resolved. Odoo creates one pay run covering all employees whose work entries fall in the selected period.Alternatively, go to Payroll → Payslips → Pay Runs and click New to create a pay run manually, then add payslips to it.
2

Add and review payslips

Click Add Payslips inside the pay run to include employees not automatically added. Review each payslip, resolve any remaining discrepancies, and click Generate Payslips to compute all at once.
3

Validate the batch

Once satisfied with all calculations, click Validate on the pay run. All payslips within the batch are validated simultaneously and their accounting entries are posted.
4

Pay employees

Click Pay to generate a SEPA credit transfer file (for European banks) or a payment batch. Send the file to your bank or process individual payments as appropriate for your region.
Organize pay runs by department or salary structure type when your workforce has different pay schedules—for example, a weekly run for hourly workers and a monthly run for salaried employees.

Salary Attachments

Salary attachments handle recurring deductions or additions that are not part of the base salary structure—child support garnishments, loan repayments, court-ordered deductions, or supplemental allowances.

Create an Attachment

Go to Payroll → Employees → Salary Attachments and click New. Select the employee, the attachment type, the amount (fixed or percentage), and the date range over which it applies.

Automatic Application

Once created, salary attachments are applied automatically to every payslip generated within the specified date range. No manual entry is required each pay period.

Payroll Reporting

Payroll Analysis

Analyze payroll costs across employees, departments, structure types, and time periods. Filter by gross wage, net wage, employer cost, or any individual rule to understand your total compensation spend.

Headcount Report

Track active headcount by department and contract type over time. Identify periods of rapid growth or unexpected attrition.

Work Entry Analysis

Review the distribution of work entry types (regular work, overtime, sick leave, etc.) across the workforce to spot absence trends or compliance issues.

Payroll Localizations

Country-specific payroll modules add region-appropriate reports—such as tax declarations, social security filings, or statutory year-end certificates—directly to the Payroll reporting menu.

Build docs developers (and LLMs) love