OdooWiki OCA HUB
Payroll License: LGPL-3

Manage your employee payroll records.

This module is a backport from Odoo SA and as such, it is not included in the OCA CLA. That means we do not have a copy of the copyright on it like all other OCA modules.

auto_awesome What this module does

AI-generated from the code · Odoo 19.0

Manage employee payroll in Odoo: define salary structures and rules, generate payslips individually or in batches, compute worked days and leaves, and print payslip and contribution reports.

This module adds a full payroll area to Odoo. Users can set up salary structures (with parent/child hierarchy) and salary rules that define how each pay component is calculated, grouped into rule categories. Contribution registers let you track amounts owed to third parties such as social security or pension funds.

On each employee contract (hr.version) you can choose a salary structure and a payment frequency (monthly, weekly, etc.). Employees show a count of their payslips.

Payslips (hr.payslip) are created for an employee and period; the system automatically fills worked days (including leave days from holidays) and inputs, then computes payslip lines from the applicable rules. Payslips follow a status flow: Draft, Waiting, Done, Rejected. They can be confirmed, cancelled, refunded (credit note), and grouped into payslip batches (hr.payslip.run) that can be closed. A wizard generates payslips for several selected employees at once, and another changes the state of a payslip.

Reports include Payslip, Payslip Details and a Contribution Register report. Settings control whether confirmed payslips can be cancelled, whether lines can be edited, whether codes/categories are required, and how leave values are counted. Access rights separate payroll officers and managers.

Depends on

hr_holidaysmail

Menus it adds

hr_contribution_register_menuhr_payroll_structure_menuhr_payslip_run_menuhr_payslip_menumenu_hr_salary_rule_categorymenu_action_hr_salary_rule_formPayrollConfigurationSettings
Models and fields (18)
  • hr.payslip · new modelname (Payslip Name), note (Internal Note), paid (Made Payment Order ? ), state (Status), number (Reference), date_to, line_ids (Payslip Lines), date_from, struct_id (Structure), company_id (Company), contract_id (Contract), credit_note, employee_id (Employee), refunded_id (Refunded Payslip), compute_date, payslip_count (Payslip Computation Details), input_line_ids (Payslip Inputs), payslip_run_id (Payslip Batches), hide_child_lines, hide_invisible_lines (Show only lines that appear on payslip), worked_days_line_ids (Payslip Worked Days), allow_cancel_payslips (Allow Canceling Payslips), prevent_compute_on_confirm (Prevent Compute on Confirm), dynamic_filtered_payslip_lines
  • hr.version · extends an existing modelstruct_id (Salary Structure), schedule_pay (Scheduled Pay), resource_calendar_id
  • hr.employee · extends an existing modelslip_ids (Payslips), payslip_count
  • hr.rule.input · new modelcode, name (Description), input_id (Salary Rule Input)
  • hr.payslip.run · new modelname, state (Status), date_end (Date To), slip_ids (Payslips), struct_id (Structure), company_id (Company), date_start (Date From), credit_note
  • hr.salary.rule · new modelcode, name, note (Description), active, quantity, sequence, child_ids (Child Salary Rule), input_ids (Inputs), amount_fix (Fixed Amount), company_id (Company), category_id (Category), register_id (Contribution Register), amount_select (Amount Type), parent_rule_id (Parent Salary Rule), condition_range (Range Based on), condition_python (Python Condition), condition_select (Condition Based on), amount_percentage (Percentage (%)), appears_on_payslip (Appears on Payslip), condition_range_max (Maximum Range), condition_range_min (Minimum Range), amount_python_compute (Python Code), amount_percentage_base (Percentage based on), require_code_and_category (Require code and category)
  • hr.payslip.line · new modelrate (Rate (%)), total, amount, slip_id (Pay Slip), quantity, child_ids (Child Payslip Lines), date_from (Date From), contract_id (Contract), employee_id (Employee), parent_line_id (Parent Payslip Line), payslip_run_id (Payslip Batch), salary_rule_id (Rule), allow_edit_payslip_lines (Allow editing)
  • hr.payslip.input · new modelcode, name (Description), amount, sequence, amount_qty (Amount Quantity), payslip_id (Pay Slip), contract_id (Contract)
  • res.config.settings · extends an existing modelleaves_positive (Leaves with positive values), allow_cancel_payslips (Allow canceling confirmed payslips), module_payroll_account (Payroll Accounting), allow_edit_payslip_lines (Allow editing payslip lines), require_code_and_category (Require code/category on rules, categories and structures), prevent_compute_on_confirm (Confirm payslips without recomputing)
  • hr.payroll.structure · new modelcode (Reference), name, note (Description), rule_ids (Salary Rules), parent_id (Parent), company_id (Company), children_ids (Children), require_code (Require code)
  • hr.payslip.employees · new modelemployee_ids
  • hr.payslip.worked_days · new modelcode, name (Description), sequence, payslip_id (Pay Slip), contract_id (Contract), number_of_days (Number of Days), number_of_hours (Number of Hours)
  • hr.payslip.change.state · new modelstate (Action)
  • hr.salary.rule.category · new modelcode, name, note (Description), parent_id (Parent), company_id (Company), children_ids (Children), require_code (Require code), salary_rules_ids (Salary Rule Categories)
  • hr.contribution.register · new modelname, note (Description), company_id (Company), partner_id (Partner), register_line_ids (Register Line)
  • payslip.lines.contribution.register · new modeldate_to, date_from
  • report.payroll.report_payslipdetails · new model
  • report.payroll.report_contributionregister · new model

Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 7 confirmed, 2 with no information of 9 versions.

terminal Installation and usage

No verified information

Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.