Saudi Arabia¶
The Saudi Arabia payroll localization covers salary computations for employees, including national and provincial regulations.
Before configuring the Saudi Arabia localization, refer to the general payroll documentation, which includes the basic information for all localizations, as well as all universal settings and fields.
Apps & modules¶
Install the following modules to get all the features of the Saudi Arabia payroll localization:
Name |
Technical name |
Dependencies |
Description |
|---|---|---|---|
Saudi Arabia - Payroll |
|
|
Provides Saudi Arabia payroll basics, including salary structures (Basic/Gross/Net). |
Saudi Arabia - Payroll with Accounting |
|
|
Links payroll and accounting by creating journal entries (per payslip if needed) to record payroll in the company’s books. |
General configurations¶
First, the company must be configured. Navigate to . From the list, select the desired company, and configure the following fields:
Company Name: Enter the business name in this field.
Address: Complete the full address, including the City, State, Zip Code, and Country.
VAT Number: Enter the company’s unique 15-digit VAT number.
Company ID : Enter the business’s MoL number.
Currency: By default, SAR is selected. If not, select SAR from the drop-down menu.
Phone: Enter the company phone number.
Email: Enter the email used for general contact information.
Employees¶
Every employee being paid must have their employee profiles configured for the Saudi Arabia payroll localization. Additional fields are present after configuring the database for Saudi Arabia.
To update an employee form, open the app and click on the desired employee record. On the employee form, configure the required fields in the related tabs.
Work tab¶
Enter the Work Address for the employee in the Location section of the Work tab.
Personal tab¶
Select the correct Nationality (Country) for the employee, using the drop-down menu. The selected nationality determines the GOSI rate.
Ensure the employee has a minimum of one trusted bank account listed in the Bank Accounts field in the Private Contact section.
The employee’s bank account is their IBAN, which is how employees receive their salary according to WPS regulations.
Payroll cannot be processed for employees without a trusted bank account. If no trusted bank account is set, a warning appears on the Payroll dashboard and an error occurs when attempting to run payroll.
Payroll tab¶
Contract overview section¶
This section holds information that drives salary calculations. Ensure the following fields are configured:
Contract: The Validity of the compensation conditions can be updated depending on the needs.
Wage Type: Select how the employee is paid.
Select Fixed Wage for salaried employees who receive the same amount each pay period.
Select Hourly Wage for employees paid based on hours worked.
Tip
Set a default Wage Type in the salary Structure Type to configure employees in bulk. If needed, the default can be overridden on individual employee records if exceptions are needed.
Contract Type: Determines how the employee is paid and classified, such as Permanent, Temporary, Seasonal.
Pay Category: Select KSA Employee for this field. This defines when the employee is paid, their default working schedule, and the work entry type it applies to.
Schedule section¶
Work Entry Source: Defines how work entries are generated for payroll during the specified pay period. The options are:
Working Schedule: Based on the employee’s assigned working schedule (e.g., 40 hours per week).
Attendances: Based on approved checked-in hours in the Attendances app.
Planning: Based on scheduled shifts in the Planning app.
Extra Hours: Tick the checkbox to allow the Attendances app to add any extra work entries logged by the employee.
Working Hours: Using the drop-down menu, select the default work schedule. This is particularly important for employees available to receive overtime pay (typically hourly employees, not salaried).
Saudi payroll information section¶
Enter the employee’s unique 10-digit Saudi National / IQAMA ID number in this field. This number is issued to Saudi citizens by the Ministerial Agency of Civil Affairs, and is used for exporting WPS reports.
The Annual Leave Balance field is not editable, and displays the employee’s available annual vacation days.
Allowances section¶
This section determines the various benefits the employee receives. Enter the monthly Saudi riyal amount the employee receives from the company for Housing, Transportation, and Other costs.
Enter the annual amount paid by the company for a Saudi Iqama (iqama is the Arabic
word for residence permit). An Iqama is an official residency and identification card,
similar to a visa, and it is . It is required for all foreign nationals to have a valid
Iqama to work, live, and access various services in Saudi Arabia.
Enter the annual amount the employer pays for the employee’s Medical Insurance in the corresponding field.
If the employee needs a Work Permit, enter the annual fees the company pays.
End of service provision section¶
In Saudi Arabia, each employee earns a percentage of their annual salary for each year they have worked with a company. This amount is computed based on their salary. When they leave the company, they receive this compensation in one lump sum.
Enter the Number of Days the employee earns in annual compensation, in the corresponding field. The company sets this amount aside every year, so it is available when the employee leaves.
Payroll configuration¶
Several sections within the Payroll app installs a Salary Structure, Structure Type, Rules, and Parameters specific to Saudi Arabia. Additionally, some other configurations are required to run Saudi Arabia payroll.
Payroll settings¶
Navigate to to access the Payroll app settings required for Saudi Arabia.
First, the company bank account must be configured to pay employees, per WPS regulations. Click into the drop-down space beneath the Establishment Bank Account field, and click Create…. This opens a Create Establishment’s Bank Account pop-up window. Configure the company’s bank account, and ensure it is marked as trusted. Click Save to save the information and close the window.
Next, enter the company’s MoL Establishment ID. This ID number is provided by Saudi Arabia’s Ministry of Labor.
Finally, select the time off type that is used to calculate the Annual Leave Balance set in the employee’s profile.
Salary structures & structure types¶
When the l10n_sa_hr_payroll module is installed, a new Salary Structure gets installed, KSA Employee. This structure includes two Structure Types, Saudi Arabia: Monthly Pay, and SA Salary Advance And Loan Structure.
The Salary Structure contains all the individual salary rules that informs the Payroll app how to calculate employee payslips.
Salary rules¶
To view the salary rules that inform the salary structure what to do, navigate to and expand the KSA Employee group to reveal the two available structure types. Click Saudi Arabia: Monthly Pay to view the detailed salary rules for that structure type.
Each rule defines how pay is calculated, taking into account factors such as allowances, deductions, and company contributions.
Rule parameters¶
Some calculations require specific rates associated with them, or wage caps. Rules Parameters are capable of listing a value, either a percentage or a fixed amount, to reference in the salary rules.
Most rules pull information stored in the parameters module to get the rate of the rule (a percentage) and the cap (a dollar amount).
To view rule parameters, navigate to . Here, all rule parameters are displayed with their linked Salary Rules, which can be accessed. Review the parameters associated with a rule by looking for the Name of the rule, and make any edits as needed.
The Saudi Arabia payroll localization comes with four rule parameters:
Saudi GOSI Company Contribution: This rule parameter determines the calculation of the GOSI contributions the employer must make for Saudi Arabia employees.
Non-Saudi GOSI Company Contribution: This rule parameter determines the calculation of the GOSI contributions the employer must make for each non-Saudi Arabian employee.
Saudi GOSI Employee Contribution: This rule parameter determines the calculation of the GOSI contributions the employee must make, and is deducted from their pay.
Saudi Arabia Overtime Rate: This rule parameter determines the overtime rate for employees.
Important
Odoo adds updated rule parameters for the current calendar year. It is not recommended to edit rule parameters unless a national or provincial parameter has changed, and is different from the rule parameters created by Odoo. Check with all local and national regulations before making any changes to rule parameters.
Run Saudi Arabia payroll¶
Before running payroll, the payroll officer must validate employee work entries to confirm pay accuracy and catch errors. This includes checking that all time off is approved and any overtime is appropriate.
Work entries sync based on the employee’s contract configuration. Odoo pulls from the assigned working schedule, attendance records, planning schedule, and approved time off.
Any discrepancies or conflicts must be resolved, then the work entries can be regenerated.
Once everything is correct, draft payslips can be created individually or in batches, referred to in the Payroll app as Pay Runs.
Note
To cut down on the payroll officer’s time, it is typical to process payslips in batches, either by wage type (fixed salary vs hourly), pay schedule (weekly, bi-weekly, monthly, etc.), department (direct cost vs. administration), or any other grouping that best suits the company.
The process of running payroll includes different actions that need to be executed to ensure that the amount that the employee receives as their net salary is correct, any deductions or allocations are correct, and the computation of hours worked reflects the employee’s actual hours worked, among others.
When running a payroll batch, check that the period, company, and employees included are correct before starting to analyze or validate the data.
Once the payslips are drafted, review them for accuracy. Check the Worked Days & Inputs tab, and ensure the listed worked time is correct, as well as any other inputs. Add any missing inputs, such as commissions, tips, reimbursements, that are missing.
Next, check the various totals (gross pay, allowances, contributions, etc.), then click Compute Sheet to update the salary calculations, if there were edits. If everything is correct, click Validate.
Accounting check¶
The accounting process when running payroll has two components: creating journal entries, and registering payments.
Journal entry creation¶
After payslips are confirmed and validated, journal entries are posted either individually, or in a batch. The journal entry is created first as a draft.
Important
It must be decided if journal entries are done individually or in batches before running payroll.
Fifteen accounts from the Saudi Arabia CoA are included with the payroll localization:
400003 Basic Salary: Tracks the basic wages paid to employees.400004 Housing Allowance: Captures housing allowance payments provided to employees.400005 Transportation Allowance: Captures transportation allowance payments to employees.400012 Staff Other Allowances: Covers employee allowances that do not fit standard categories.106012 Prepaid Employee Expenses: Logged as prepaid assets for employer-paid items that are not wages (for example,Iqamafees and medical insurance) and expensed as consumed.201006 Leave Days Provision: Accrues the cost of paid leave; the balance is reduced when leave is taken, and any leave not taken may be paid out at end of service.201022 GOSI Employee Payable: Holds amounts payable for social insurance contributions to the GOSI, including both employee and employer portions.202001 End of Service Provision: Accumulates the end-of-service benefit monthly so the amount can be paid (partially or fully) when the employee leaves, per service length and reason.400007 Leave Salary: Records salaries actually paid to employees while on paid leave.400008 End of Service Indemnity: Captures company expenses set aside to fund end-of-service benefits (expense-side counterpart to the provision).400009 Medical Insurance: Accounts for employer expenses related to employee medical insurance premiums.400010 Life Insurance: Tracks employer expenses for life/occupational insurance or the employer’s portion of social insurance.400014 Visa Expenses: Used to track employer costs for non-Saudi Arabian employees’ visas and related processing/renewal fees.400074 Salary Deductions: Reflects deductions applied to employee salaries (e.g., advances, fines, statutory deductions).201002 Payables: Shows amounts payable to employees as salaries (unpaid salary liability at period end).
If everything seems correct on the journal entry draft, post the journal entries.
Register Payments¶
After the journal entries are validated, Odoo can generate payments.
Important
To generate payments from payslips,employees must have a trusted bank account. If the
employee’s bank account is not marked as trusted, WPS files cannot be generated through
Odoo.
Payments can be Grouped by Partner if there is a partner associated with a salary rule.
Close Payroll¶
If there are no errors, payroll is completed for the pay period.
Employee loans and advances¶
Employees are able to request loans or advances against their salaries. Loans are handled by creating salary adjustments, whereas advances are created and managed manually.
Employee loans¶
Employees can take out loans against their salary and repay the loan with automatic deductions from future paychecks. These loans are handled by creating a salary adjustment to log the total loan amount and set up a repayment plan, and creating a payslip for the total loan amount. The employee then repays the loan in the increments configured in the salary adjustment.
Create a salary adjustment¶
When an employee requests a loan, first a salary adjustment is made, where the total loan amount and repayment plan is configured.
To create the loan and repayment schedule, navigate to . Click New, and a blank Salary Adjustment form loads.
Configure the following fields on the form:
Employees: Using the drop-down menu, select the employee taking out the loan.
Type: Using the drop-down menu, select Loan Deduction.
Payslip Amount: Enter the SAR amount to be repaid each payslip.
Duration: Tick the Limited option, which reveals a until (amount) paid field. First, using the calendar selector, enter the date the repayment begins. Next, enter the total loan amount in the field after until. Once both fields are configured, Odoo calculates when the loan is fully repaid, and displays the date as follows:
end in # years: (date).Note: Enter any details about the loan in this field.
Generate a loan payslip¶
After creating the salary adjustment, a button labeled Create Loan Payslip appears above the form. Click Create Loan Payslip, and Odoo automatically generates a payslip configured for the employee loan, in the amount set up in the salary adjustment.
Review the payslip to ensure all the fields and tabs are correct. The Structure should be SA Salary Advance And Loan Structure. The Salary Inputs tab should list a Loan Deduction, and the Total should be the full amount of the loan.
Click into the Other Info tab, and enter the date the employee receives the payment in the Payment Date field.
Once the payslip form is correct, click Compute Sheet, then click Create Draft Entry, and click OK in the confirmation pop-up window. Next, click Pay to mark the payment as paid, then click Create Payment Report to generate the WPS report.
Loan repayment to employer¶
From the date set on the salary attachment, all future paychecks have the configured repayment amount taken out, to go towards the loan. Once the loan is fully paid, the deductions end.
Note
The deductions should end after the total is repaid, according to the salary adjustment. To ensure payments stop being taken out of the employee’s paychecks after the loan has been repaid, open the salary adjustment record. If the salary adjustment still has a status of Running, click the Mark as Completed button, and the status changes to Closed, and payments stop.
Salary advances¶
Employees can request an advance of their salary, outside of the regular pay cycle. This process is done by paying the employee with a manually created payslip, then the employee repays the advance either in full in the next payslip, or in multiple payments in subsequent paychecks until the total is repaid.
Create advance payslip¶
To issue an advanced payment, navigate to . Click the New Off-Cycle button and a blank Employee Payslips form loads.
Configure the following fields on the payslip:
Employees: Using the drop-down menu, select the employee taking out the advance.
Note
Once the Employee is selected, the Employee Record field populates with the most recent employee version (contract).
Structure: Using the drop-down menu, select SA Salary Advance And Loan Structure.
Next, click Add a line in the Salary Inputs tab. Select Salary
Advance for the Type. Next, enter any relevant description in the Notes
field, such as Advance for auto repair. Last, enter the amount being advanced in the
Amount field.
Once these fields have been configured, click Compute Sheet, then click Create Draft Entry, and click OK in the confirmation pop-up window. Click Pay to mark the payment as paid, then click Create Payment Report to generate the WPS report.
Automatic repayment in full¶
When the employee’s next payslip is generated (using the Saudi Arabia: Monthly Pay structure), a
line is added under the Other Inputs tab, titled Advanced Recovery.
The amount is based on the advance previously taken by the employee. If the employee cannot repay the full amount in the paycheck, the repayment can be broken up into multiple payments.
Multiple payments¶
When an employee cannot repay an advance in full in a future payslip, the employee can make partial payments until the advance is repaid. To do this, the amount being deducted from the employee’s paycheck must be manually modified.
Open the employee’s payslip, and under the Salary Inputs tab, modify the amount specified on the Advanced Recovery line.
Odoo automatically calculates the remainder of the advance, and adds an Advanced Recovery line for the balance in the subsequent payslip. If the employee cannot pay the second payment in full, the Advanced Recovery line can be edited in the following payslip.
WPS reports¶
The WPS report is a mandatory report all Saudi Arabian companies are required to provide the government. The report confirms employee wages, including when and how much they were paid. The WPS report can be generated either per payslip or per pay run.
Note
This report is structured in accordance with the technical guidelines issued by the MHRSD.
Important
To run the WPS report, the Establishment Bank Account and Ministry of Labor Establishment ID fields must be configured for the company.
Ensure the Establishment Bank Account has the Bank Establishment ID, and Bank SARIE Code fields configured, and the bank is marked as Trusted.
Ensure all employees included in the report have a Saudi National / IQAMA ID set on their employee profile.
First, payslips or pay runs are generated, then the journal entries are posted.
Click the Payment Report button on the Pay Runs dashboard, the individual pay run, or an individual payslip, and a payment report pop-up window loads.
Saudi WPS is selected in the Export Format field, by default, and the Payment Date and WPS Value Date fields are both populated according to the selected payslips or pay runs.
The WPS Debit Date is an optional field, and specifies the date the company physically pays the employees (transfers funds from the company account to employee accounts).
Once all fields are configured, click Generate, and the WPS report is created.