Salary Structure & Rules Odoo 18
By Braincuber Team
Published on December 29, 2025
HR departments waste 40+ hours monthly on manual payroll errors: accountant calculates employee salary using Excel spreadsheet but misses overtime hours worth $450, another employee receives wrong deduction amount because tax rules not updated in formula, compliance officer discovers payroll doesn't match employment contracts during audit—resulting in legal penalties, employee dissatisfaction, and wasted administrative time because no systematic salary structure configured.
Odoo 18 Salary Structure & Rules automate payroll calculations with predefined salary structures (employee/contractor/hourly classifications), customizable salary rules (basic pay, allowances, deductions, taxes), rule parameters for dynamic calculations, structure types for different payment frequencies, and automated payslip generation—reducing payroll processing time 75% while ensuring 100% accuracy and compliance with labor regulations.
Core Benefit: Salary Structure = template defining how to calculate pay. Salary Rules = individual components (basic salary + housing allowance - tax - insurance). Combined = automated accurate payslips every pay period.
Understanding Salary Components
Salary Structure Type
Classification system for different employee categories. Examples: Regular employees (monthly), Contractors (hourly), Interns (weekly). Defines payment frequency and calculation method.
Salary Structure
Complete template containing all salary rules for specific employee type. Example: "Software Engineer Structure" includes basic pay, tech allowance, health insurance, tax deductions.
Salary Rules
Individual calculation components. Examples: Basic Salary (fixed), Overtime (hourly rate × hours), Income Tax (percentage of gross), Transport Allowance (fixed monthly amount).
Rule Parameters
Variables used across multiple rules. Examples: Minimum wage threshold, Tax brackets, Insurance percentage rates. Change once, applies to all relevant rules automatically.
Setting Up Salary Structure Types
Structure types categorize employees by payment method and frequency. Path: Payroll → Configuration → Salary Structure Types
Create Structure Type
Click New and configure:
- Structure Type Name: e.g., "Regular Employees" or "Hourly Contractors"
- Country: Select jurisdiction for tax compliance
- Wage Type: Choose Monthly (salaried) or Hourly (contractors)
- Default Scheduled Pay: Monthly, Bi-Weekly, Weekly, Quarterly, etc.
- Default Working Hours: Standard work schedule (e.g., 40 hours/week)
Configure Work Entry Type
Define how work hours are tracked:
- Regular working hours
- Overtime hours
- Sick leave
- Unpaid leave
Common Structure Types:
1. Regular Pay Structure - Wage Type: Monthly - Scheduled Pay: Monthly - Working Hours: 40 hours/week 2. Hourly Contractor Structure - Wage Type: Hourly - Scheduled Pay: Bi-Weekly - Working Hours: Variable 3. Executive Compensation - Wage Type: Monthly - Scheduled Pay: Monthly - Additional: Performance bonuses, stock options
Creating Salary Structures
Salary structures are templates that combine multiple salary rules. Path: Payroll → Configuration → Structures
Create New Structure
Click New button and fill:
- Structure Name: Descriptive name (e.g., "Software Engineer Compensation")
- Structure Type: Select from types created earlier
- Scheduled Pay: Payment frequency (inherits from type, can override)
- Country: Jurisdiction for calculations
- Salary Journal: Accounting journal for payroll entries
Add Salary Rules
Under Salary Rules tab, add components:
- Basic Salary
- Housing Allowance
- Transport Allowance
- Health Insurance (deduction)
- Income Tax (deduction)
- Net Salary (calculation)
Configuring Salary Rules
Salary rules define individual pay components and calculations. Path: Payroll → Configuration → Salary Rules
General Tab Configuration:
- Rule Name: Clear identifier (e.g., "Basic Salary", "Overtime Pay")
- Code: Short code for formulas (e.g., BASIC, OT, TAX)
- Category: Classification (Basic, Allowance, Deduction, Gross, Net)
- Sequence: Calculation order (1-100, lower = calculated first)
- Salary Structure: Which structures use this rule
Condition Types:
Always True
Rule always applies. Example: Basic salary applies to everyone in this structure.
Range Based
Applies within value ranges. Example: Tax rate changes based on income brackets ($0-50k = 10%, $50k-100k = 20%).
Python Expression
Custom logic conditions. Example: Overtime only if worked_hours > 40.
Computation Types:
1. Fixed Amount Example: Transport Allowance = $200/month Configuration: Amount = 200 2. Percentage of Base Example: Housing = 30% of Basic Salary Configuration: Percentage = 30, Base = contract.wage 3. Python Code Example: Overtime = (hours - 40) × hourly_rate × 1.5 Code: result = max(0, worked_hours.WORK100 - 40) * contract.hourly_wage * 1.5 4. Percentage of Category Example: Insurance = 5% of Gross Salary Configuration: Percentage = 5, Category = GROSS
Example: Basic Salary Rule
Name: Basic Salary Code: BASIC Category: Basic Sequence: 1 Condition: Always True Computation: Fixed Amount Amount: contract.wage Appears on Payslip: Yes
Example: Income Tax Rule
Name: Income Tax
Code: TAX
Category: Deduction
Sequence: 50
Condition: Python Expression
Expression: categories.GROSS > 0
Computation: Python Code
# Progressive tax brackets
gross = categories.GROSS
if gross <= 50000:
result = gross * 0.10
elif gross <= 100000:
result = 50000 * 0.10 + (gross - 50000) * 0.20
else:
result = 50000 * 0.10 + 50000 * 0.20 + (gross - 100000) * 0.30
Rule Parameters
Parameters are reusable variables referenced across multiple rules. Path: Payroll → Configuration → Rule Parameters
Creating Parameters:
Define Parameter
Click New and configure:
- Parameter Name: Descriptive identifier
- Code: Short reference code
- Value: Numeric value or formula
- Date Range: Validity period (for changing rates)
Parameter: Minimum Wage Code: MIN_WAGE Value: 15.00 Usage: Ensure hourly wage >= MIN_WAGE Parameter: Social Security Rate Code: SS_RATE Value: 0.062 Usage: Deduction = gross_salary * SS_RATE Parameter: Health Insurance Cap Code: HEALTH_CAP Value: 500 Usage: max_deduction = min(calculated_amount, HEALTH_CAP)
Other Input Types
Additional fields appearing on payslips for one-time payments or deductions. Path: Payroll → Configuration → Other Input Types
Common Use Cases:
- Bonuses: Performance bonus, year-end bonus, referral bonus
- Reimbursements: Travel expenses, meal allowances, equipment purchases
- Deductions: Loan repayments, advance salary recovery, damages
- Allowances: Project-specific allowances, temporary assignments
Create Input Type
- Name: Input description (e.g., "Performance Bonus")
- Code: Unique identifier (e.g., PERF_BONUS)
- Availability in Structure: Which structures can use this input
- Description: Usage guidelines for payroll staff
Complete Salary Structure Example
STRUCTURE: Software Engineer - Regular EARNINGS: 1. Basic Salary (BASIC) = $5,000 2. Housing Allowance (HOUSE) = $1,500 (30% of basic) 3. Transport Allowance (TRANS) = $200 (fixed) 4. Tech Allowance (TECH) = $300 (fixed) 5. Overtime (OT) = (hours - 160) × $31.25 × 1.5 GROSS SALARY = $7,000 + OT DEDUCTIONS: 6. Social Security (SS) = $434 (6.2% of gross, capped) 7. Medicare (MED) = $101.50 (1.45% of gross) 8. Health Insurance (HEALTH) = $350 (fixed) 9. Income Tax (TAX) = Progressive (10-30%) TOTAL DEDUCTIONS = ~$1,200 NET SALARY = Gross - Deductions = ~$5,800
Accounting Integration
Configure accounting entries for each salary rule via Accounting tab:
- Debit Account: Expense account (Salary Expense, Benefit Expense)
- Credit Account: Liability account (Payable to Employees, Tax Payable)
- Analytic Account: Cost center or department tracking
⚠️ Important: Proper accounting configuration ensures payroll expenses automatically post to correct accounts. Consult accountant for chart of accounts mapping before finalizing salary rules.
Best Practices
✅ Follow These Guidelines:
- Test with sample employee: Create test payslip before rolling out to entire company
- Use rule parameters: Don't hardcode tax rates—use parameters for easy updates
- Document calculations: Add clear descriptions explaining formula logic
- Sequence matters: Ensure rules calculate in correct order (basic → allowances → gross → deductions → net)
- Version control: When changing rules, duplicate old structure before modifying for audit trail
- Compliance check: Verify structures match employment contracts and local labor laws
Common Mistakes to Avoid
🚨 Mistake #1: Wrong Calculation Sequence
Tax calculated before gross salary = wrong amount. Solution: Set sequence numbers correctly (earnings 1-20, gross 30, deductions 40-60, net 70).
🚨 Mistake #2: Hardcoded Values
Tax rate written directly in formula = must update 50 rules when rate changes. Solution: Use rule parameters for all variable rates.
🚨 Mistake #3: Missing Accounting Configuration
Payslips generated but no journal entries created = accounting nightmare. Solution: Configure debit/credit accounts for every rule.
Conclusion
Odoo 18 Salary Structures and Rules automate payroll calculation through customizable templates combining multiple pay components. Structure Types define employee classifications and payment frequencies, Structures combine rules for complete compensation packages, Salary Rules calculate individual components (earnings/deductions), Rule Parameters provide reusable variables, and Other Input Types handle one-time payments. Proper configuration ensures accurate automated payslips, reduces processing time 75%, eliminates calculation errors, maintains compliance with labor regulations, and integrates seamlessly with accounting for financial reporting.
🎯 Key Takeaway: Invest time configuring salary structures correctly once = years of automated accurate payroll. Skip this step = endless manual corrections, compliance issues, and unhappy employees.
