Odoo HR Setup

Odoo HR & Payroll for Saudi Arabia: The Complete Setup Guide

How to configure Odoo HR for GOSI contributions, WPS/Mudad payroll, Qiwa sync, Nitaqat tracking, and Saudi EOSB — from day one to first payroll run.

iWesabe Editorial TeamOctober 1, 202511 min read

Out-of-the-box Odoo HR works well for generic payroll. Saudi Odoo HR is a different configuration task — GOSI contributions with nationality-split rates, WPS-compliant Mudad bank files, Qiwa portal synchronisation, Nitaqat Saudisation tracking, and end-of-service gratuity accruals under Saudi Labor Law each require specific setup decisions that the standard installation does not make for you. Getting them wrong in month one compounds into reconciliation backlogs and regulator friction that persist long after go-live.

This guide is the configuration reference iWesabe applies on every Saudi Odoo HR rollout. It covers module scope, the Saudi payroll rules that differ from international defaults, the GOSI setup protocol, government-portal connections, EOSB accrual mechanics, and the go-live readiness checklist. For the regulatory background — what GOSI, WPS, Qiwa, and Nitaqat actually require — see the companion guide on Saudi HR compliance.

What does Odoo HR cover for Saudi businesses?

Odoo HR for Saudi Arabia is not a single module — it is a cluster of six inter-dependent apps that, when configured together as a Saudi-localised stack, covers the full employment lifecycle from hire to end-of-service. The table below maps each app to the Saudi-specific function it serves. You only need the apps that match your business model, but the payroll-GOSI-time chain is non-optional for any Saudi entity with salaried employees.

Odoo HR app cluster — Saudi Arabia scope
Odoo AppSaudi-specific function
EmployeesEmployee master with Iqama/National ID, Qiwa profession code, GOSI number, SAMA-format IBAN, nationality category
PayrollSaudi salary structures: basic + housing + transport allowances; GOSI contributable base calculation; WPS/Mudad bank file generation
Time OffSaudi leave calendar: annual leave (21/30 days by tenure), Hajj leave (once per employment), sick leave with pay tapering under Saudi Labor Law
RecruitmentSaudi applicant data fields: Iqama status, Visa category, Muqeem verification flag; Nitaqat headcount impact before offer
ExpensesSaudi allowance policy enforcement: housing, transport, meals — classification as contributable vs non-contributable for GOSI base integrity
Payroll AccountingSaudi payroll journal entries: GOSI employer liability, EOSB provision accrual, WPS bank clearing, advance recovery schedules

Saudi payroll configuration — what goes beyond the standard Odoo setup?

Standard Odoo payroll assumes a single gross salary or a basic + simple-addition structure. Saudi payroll has five structural requirements that are either absent from the international default or present but misconfigured for the KSA context. Each one must be explicitly decided and locked at salary-structure level before the first payroll run — not adjusted retroactively month by month.

  1. Three-part allowance structure: basic + housing + transport. Saudi salary packages separate these three components because they have different GOSI treatment (basic and housing are contributable; transport is not) and different leave encashment bases (annual leave encashment uses basic salary only). Collapsing them into a single field corrupts downstream calculations silently.
  2. GOSI contributable-base formula at salary-structure level. The GOSI contributable base is basic salary + housing allowance — not total compensation. This formula must be baked into the salary structure so every new hire inherits it automatically. Any allowance type added later defaults to non-contributable unless explicitly classified; this is the right default and the one to preserve.
  3. Nationality-category contribution rates. GOSI contribution rates differ by nationality category: Saudi nationals (and GCC nationals under the reciprocal agreement) carry the full combined rate — currently 9% employee + 13% employer (pension + unemployment + occupational hazards). Non-GCC nationals carry employer-only occupational hazard contribution. These live as named payroll structures the employee record inherits by nationality field — never entered manually per employee.
  4. WPS-compliant Mudad bank file output. Saudi Labor Law requires payroll disbursement through the Wages Protection System (WPS), with Mudad as the Ministry of Human Resources platform that validates compliance. Odoo must be configured to generate the Mudad-formatted SIF (Salary Information File) at each payroll run. The file carries each employee's IBAN, net salary, and payment date — with the SAMA-format IBAN mandatory for validation acceptance.
  5. End-of-service benefit (EOSB) accrual as a running provision. Saudi Labor Law Articles 84–87 mandate a gratuity calculation based on tenure and exit reason. Odoo must accrue this as a monthly provision in the payroll journal entries — not as a lump-sum recognised only at termination. Accruing monthly produces accurate balance-sheet provisions and prevents surprises at the EOSB payment event.

See how iWesabe configures Odoo HR for Saudi Arabia

Our Saudi HR & Payroll module is pre-configured for GOSI, WPS/Mudad, Qiwa, and EOSB — with the localisation decisions already made so your team focuses on data, not setup.

GOSI contribution setup — getting the calculation exactly right

GOSI contribution errors are the most expensive payroll misconfiguration in KSA — SAR 80–200 per employee per month adds up quickly on a 100-employee payroll. The three-variable interaction (contributable base × nationality rate × monthly ceiling) must be correct simultaneously. The table below is the reference iWesabe uses when validating GOSI setup on any new Saudi rollout.

GOSI contribution rate matrix — Saudi Arabia 2026
Employee categoryEmployee shareEmployer shareTotalContributable base
Saudi national9%13% (9% pension + 2% unemployment + 2% occupational)22%Basic + housing allowance (up to monthly ceiling)
GCC national (reciprocal agreement)9%13%22%Basic + housing allowance (up to monthly ceiling)
Non-GCC expatriateNone2% (occupational hazards only)2%Basic salary only

Connecting Odoo HR to Saudi government portals — Qiwa, WPS/Mudad, and Muqeem

The Saudi government portal landscape is four platforms that HR must synchronise with, each on its own data set and timeline. Treating them as one integration problem causes configuration errors — they have different API endpoints, different data models, and different update cadences. The table below is the four-portal map iWesabe uses during Odoo HR architecture sessions with Saudi clients.

Saudi HR portal integration map — Odoo setup reference
PortalGoverned byWhat Odoo sends/readsUpdate cadence
QiwaHRSDEmployee identity, profession code, contract type/dates, terminations, Saudisation ratioEvent-driven on each employee-record save + daily reconciliation sweep
Mudad / WPSHRSDMonthly SIF bank file: employee IBAN, net salary, payment date; confirmation receipt back to OdooMonthly — must land in Mudad before payroll disbursement date
MuqeemJawazatIqama status and expiry, dependent registration status — read only into Odoo HR for permit-expiry alertsPull-on-demand for employee onboarding + periodic renewal sweep
GOSI portalGOSIMonthly contribution file upload; Article 19 contractor-status validation for service vendors; certificate of good standing pullMonthly contribution + event-driven for Article 19 PO validation

The architecture decision that matters most here is event-driven vs batch for Qiwa. iWesabe configures Qiwa sync as event-driven at the employee-record level — a Qiwa API call fires on every save where a Qiwa-relevant field changed. The daily reconciliation sweep catches any drift that slipped through. Batch-only Qiwa sync (monthly or weekly) is the most common cause of Qiwa lag that surfaces as work-permit delays.

End-of-service benefit (EOSB) — how Odoo handles the Saudi gratuity calculation

Saudi Labor Law Articles 84–87 create a mandatory gratuity obligation that accrues from day one of employment. The calculation formula is well-defined but depends on three variables that Odoo must track correctly: the employee's basic salary at termination (not historical average), exact tenure in completed years and fractional months, and the reason for exit — which determines the percentage the employee receives.

  1. Years 1–5: half a month's basic salary per year. An employee completing exactly three years is entitled to 1.5 months basic salary, regardless of exit reason. Odoo calculates this from the contract start date stored in the employee record — fraction-of-year rules apply if the employee leaves mid-year.
  2. Year 5 onwards: one full month's basic salary per year. After five completed years the rate doubles. An employee leaving after eight years is entitled to: (5 × 0.5) + (3 × 1) = 5.5 months basic salary. Odoo handles the tenure-band transition automatically when the salary structure is correctly configured.
  3. Exit reason adjusts the entitlement. Termination by employer: full entitlement for any tenure. Resignation: 0% for under 2 years; 33% for 2–5 years; 67% for 5–10 years; 100% for over 10 years. Exit reason must be a mandatory field on the termination form — not entered as a free-text note — for the correct entitlement to calculate.
  4. Monthly accrual provision in payroll accounting. Configure Odoo to post a monthly EOSB provision journal entry equal to the current month's accrual (1/12 of the annual entitlement at current basic salary). This keeps the balance sheet accurate and prevents EOSB from appearing as a one-period expense shock. The provision account clears against the EOSB payment at termination.

Is your Odoo EOSB provision in the right shape for year-end?

iWesabe reviews your EOSB accrual configuration, validates the tenure calculation against current headcount, and reconciles the provision balance against actuarial exposure — written output in two weeks.

What does a production-ready Saudi Odoo HR go-live look like?

A Saudi Odoo HR go-live is ready when four bands are in the green simultaneously. None of these is a "nice to have" — each one maps directly to a regulator, a payroll obligation, or an operational exposure. The stat-block below is what iWesabe signs off on before recommending a client proceed to first live payroll run.

100%
Employee records complete (all mandatory Qiwa + GOSI fields filled)
0 SAR
GOSI calculation variance on UAT payroll run (riyal-level match)
100%
Mudad SIF file accepted on first WPS submission attempt
≤ 24h
Qiwa sync lag for all employee-record events from day one

Odoo HR for Saudi Arabia is not a generic HR deployment with a localisation patch layered on top. The five payroll configuration decisions, the GOSI three-variable setup, the four-portal connection map, and the EOSB accrual mechanics are each structural choices that must be made correctly at deployment. Made correctly, they compound — six months into go-live the HR team is running clean payroll, reporting to regulators without reconciliation marathons, and building the labour-data foundation that Finance and Operations depend on.

iWesabe has configured Odoo HR & Payroll for Saudi enterprises across manufacturing, construction, distribution, retail, healthcare, and professional services — from 25-employee single entities to multi-entity groups with operations across multiple cities. If you are planning an Odoo HR rollout in KSA or already live but seeing GOSI mismatches, WPS rejections, or Qiwa lag, a focused 90-minute call is enough to identify the configuration gaps and the order to close them.

Book a 90-minute Saudi Odoo HR setup review

We'll walk through your GOSI configuration, WPS/Mudad setup, Qiwa sync architecture, and EOSB accrual — and give you a written gap list and remediation sequence within 48 hours.

WhatsApp

Frequently Asked Questions

How does Odoo calculate GOSI contributions for Saudi vs non-Saudi employees?
Odoo applies different payroll-structure rules based on the nationality category stored on the employee record. Saudi nationals and reciprocal-agreement GCC nationals contribute at the full combined rate (currently 22% total: 9% employee + 13% employer across pension, unemployment, and occupational hazards). Non-GCC expatriates incur only the employer's occupational-hazard contribution (2%). The contributable base for Saudi/GCC is basic salary + housing allowance; for non-GCC it is basic salary only. iWesabe configures these as named salary-structure rules the employee record inherits automatically — no manual rate entry per employee.
Can Odoo HR generate WPS/Mudad-compliant bank files automatically?
Yes. Odoo generates the Salary Information File (SIF) required by Mudad / WPS at each payroll confirmation. The SIF carries each employee's SAMA-format IBAN, net salary, payment date, and employer Mudad registration number. The file is generated at payroll batch level and uploads directly to the Mudad portal. Prerequisites for a clean first-pass acceptance: every active employee must have a valid SAMA-format IBAN on the employee record; the employer Mudad registration number must be configured in Odoo company settings; and each employee's IQAMA must be current and match the Qiwa record.
How does Odoo manage end-of-service benefit accruals under Saudi Labor Law?
Odoo calculates and accrues EOSB monthly based on the employee's current basic salary and exact tenure. The accrual posts to a designated EOSB provision account in the chart of accounts at each payroll run. At termination, the termination form captures the exit reason (employer termination vs resignation, and tenure band) which determines the entitlement percentage; Odoo then calculates the final EOSB payable and reverses the provision against the payment. Tenure tracking is automatic from the contract start date. iWesabe also configures a periodic EOSB report for HR directors to monitor total provision exposure against headcount.
What Saudi-specific fields does Odoo HR require at employee creation?
A Saudi-ready Odoo HR employee record requires eight fields that are either absent from the international default or optional when they should be mandatory: Iqama number or national ID, nationality (drives GOSI rate category), Qiwa profession code, GOSI registration number (for Saudi and GCC employees), base salary + housing + transport allowances (split, not total comp), contract type and start date, SAMA-format IBAN, and Saudi address. iWesabe makes all eight mandatory at the employee form level — meaning the record cannot be saved without them. This enforces data quality at creation rather than allowing a backlog of incomplete records to accumulate.
How long does a Saudi Odoo HR go-live take with iWesabe?
For a single-entity Saudi business with 25–250 employees and one payroll structure, the standard timeline is 7–9 weeks elapsed: employee-data cleansing (1–2 weeks), salary structure + GOSI configuration (1 week), portal connections setup — Qiwa, Mudad, Muqeem (1 week), EOSB + leave configuration (1 week), parallel payroll run + UAT (1–2 weeks), training + hypercare overlap (1 week). Multi-entity or multi-location businesses add 2–4 weeks. The variable that most often extends the timeline is employee-data quality at source — if the existing HR records are incomplete, the cleansing phase expands accordingly.
Can Odoo HR track Nitaqat Saudisation ratios and flag compliance risk?
Yes. Odoo HR tracks the nationality mix across the workforce in real time based on the nationality field on each employee record. When configured for Nitaqat, it calculates the current Saudisation percentage per entity or cost centre and compares it against the Nitaqat activity-code threshold applicable to the business. The output is a live Nitaqat tier indicator that HR can monitor without logging into the Qiwa portal. Any hire or termination event that moves the ratio toward a tier boundary triggers an alert. iWesabe also configures a monthly Nitaqat report for HR directors that breaks down the ratio by department and flags the hiring decisions needed to maintain or improve the tier.
iWesabe Editorial Team

iWesabe Editorial Team

Practitioner insights on Odoo ERP, ZATCA compliance, and Saudi enterprise digital operations — written by iWesabe's consulting, finance, and engineering teams.

About iWesabe

Related Articles