Field notes · Saudi Arabia · 11 minute read

Wage Protection System: SuccessFactors, Mudad, and S/4HANA.

Connecting SF + ECP to Saudi Arabia's WPS framework looks like a payroll output problem. It's actually a wage-type alignment problem, and three quieter ones that catch every KSA programme. Here is what works.

Raptors payroll teamKSA payroll practiceMay 202611 min read

Why WPS is now the gating constraint

Saudi Arabia's Wage Protection System is no longer the programme that catches the smallest employers. The Ministry of Human Resources and Social Development has extended WPS coverage to the entire private sector, including enterprise employers running SuccessFactors and Employee Central Payroll. [VERIFY: phased rollout dates and current coverage thresholds.] What started as a policy for the long tail is now the compliance layer every KSA payroll cycle must satisfy.

The mechanism is Mudad: the Ministry's platform for authorising and monitoring wage payments. Every monthly payroll cycle a private-sector employer runs in KSA must land in Mudad with a salary record per employee, an authorised payment instruction, and a settlement confirmation from the bank within the regulator's window.

For an enterprise on the standard SAP stack (SuccessFactors for HR, Employee Central Payroll for payroll calculation, S/4HANA for the financial posting) that gives you a four-system problem. Three of those systems are SAP. The fourth is the regulator. And SAP does not ship the fourth.

What Mudad actually expects

Mudad sees three flows per cycle, and each one is a file or API exchange with a specific shape.

Salary structure

A per-employee record: basic salary, housing allowance, transport allowance, and other allowances. Broken out, not netted.

Payment instruction

The employer authorises the cycle. The instruction carries the total per employee and a consolidated total for the bank to settle.

Settlement confirmation

The bank confirms cleared payments to Mudad, which reconciles against the authorisation.

Mismatch flags the employer

The key thing to internalise: Mudad cares about structure, not just totals. The basic / housing / transport / other breakdown is what feeds the Saudisation engine elsewhere in the Ministry's stack. If your wage-type configuration in ECP aggregates allowances in a way Mudad does not recognise, you can pass the cycle and still distort your Saudisation ratio downstream. [VERIFY: confirm with current Mudad data dictionary and Nitaqat allowance treatment.]

Why standard SF + ECP doesn't reach it

Employee Central Payroll is a competent KSA payroll engine. With the Saudi localisation pack it handles the labour-law obligations: basic-to-allowance ratios, end-of-service accrual, leave settlement, GOSI employer-employee splits. What it does not handle is the regulator-facing flow. ECP produces a posting to S/4HANA and a bank payment file. Mudad is downstream of both, and SAP does not ship a Mudad connector.

Three patterns have been tried by KSA enterprises and we have seen each fail differently.

Manual upload from ECP to Mudad

Export the bank file, transform it by hand into Mudad's schema, upload. Works at small scale. Breaks on retro corrections, mid-cycle joiners and leavers, and audit.

Breaks on retro and audit

RPA between ECP and Mudad

Bots download ECP output and screen-scrape into the Mudad portal. Brittle. Not a compliance posture an enterprise wants to defend.

Brittle

Custom point-to-point generator

An S/4 add-on maps wage types to Mudad fields. Works the first cycle. Fails when an allowance is renamed, a bank changes its file format, or Mudad updates its schema.

Fails on change

The robust pattern is a managed integration between ECP and Mudad that lives inside the SAP boundary, sources its wage-type mapping from a configurable table the payroll team can read, and treats bank file generation and Mudad authorisation as two distinct steps with two distinct audit records.

The integration architecture

Four nodes. One direction of authoritative master data. Two cycles per run.

Exhibit · Integration flow

A managed bridge maps ECP wage types into Mudad

It lives inside the SAP boundary, sourcing one configurable mapping table and keeping two distinct audit records.

Employee Central Payroll

KSA payroll run, 40 to 120 wage types

Per-employee gross, deductions, net by wage type
ECP reconciliation screen shows green

Mudad bridge

Wage-type mapping table, audit trail

Salary structure plus payment authorisation
Bank settlement match and status

Mudad · WPS

MHRSD wage protection platform

What runs through the channel

Salary structure: basic, housing, transport, otherPayment authorisation per cycleBank settlement callbackWage-type to Mudad mapping tableQueryable audit trailSaudisation ratio flags

Source: Raptors KSA payroll practice. WPS coverage thresholds, Nitaqat ratios and retention periods [VERIFY]. SuccessFactors EC remains the authoritative master upstream of ECP.

Source of truth

SuccessFactors Employee Central

Authoritative employee identity, sponsorship, contract terms, salary structure, and Iqama status from the Muqeem flow where that is in place.

Calculation

Employee Central Payroll

Runs the KSA payroll calculation. Per-employee gross, deductions, and net by wage type. Emits the standard bank payment file and the S/4 posting.

Integration

The Mudad bridge

Reads ECP wage-type output, applies the mapping table, generates the Mudad salary and authorisation files, tracks the bank settlement callback, and records the audit trail.

Regulator

Mudad

Receives the salary structure and authorisation. Watches the bank settlement. Authoritative record of regulatory state.

The S/4HANA posting is unchanged. It runs in parallel. ECP posts to S/4 for the cost accrual; the bridge posts to Mudad for the regulator. Decoupling these two outputs is what gives the architecture room to survive a Mudad schema change without disturbing the finance close.

The first time we ran the cycle end to end, the payroll team did not have to open Mudad. The bridge handled the authorisation, the bank cleared the settlement, and the next morning the reconciliation screen in ECP just showed green. That is what we wanted.
Customer payroll lead, KSA private-sector employer

Wage-type alignment: the make-or-break

More KSA WPS programmes get stuck here than anywhere else. ECP returns the payroll result in wage types. An enterprise will typically have between 40 and 120 of them by the time benefits, allowances, and country-specific items are configured. Mudad expects four categories: basic, housing, transport, other.

The mapping table is the contract between the two systems. Every wage type in ECP has to be assigned a Mudad category. Get it right and the cycle goes through. Get it wrong and you either fail the upload, or, worse, pass the upload but report a salary structure that distorts the Saudisation calculation downstream.

What we have learned to do:

01

Source the mapping from a customer-readable table

Not hard-coded in the bridge. The payroll team should be able to query and reason about it.

02

Validate the mapping at run time

If a new wage type appears with no Mudad category assigned, fail loudly before the cycle is authorised, not silently after.

03

Flag allowance ratios near Saudisation thresholds

If the cycle's structure is about to push the employer into a less favourable Saudisation band, the payroll team needs to know before the authorisation goes out. [VERIFY: current Nitaqat basic-to-allowance ratios.]

Employee status synchronisation

The other quiet failure mode: an employee's status in SuccessFactors and an employee's status in Mudad drift. An employee on unpaid leave, an Iqama-pending joiner, a final-exit leaver mid-cycle: each one needs to be reflected correctly in the Mudad payload.

The pattern we use:

SuccessFactors is the source of truth for status

The bridge does not accept overrides at the Mudad layer.

Iqama state from Muqeem joins the picture

A non-Saudi employee whose residency lapsed within the cycle cannot be paid. The bridge surfaces this before the authorisation step, not after.

Mid-cycle leavers and joiners are pro-rated by ECP

The bridge passes through whatever ECP calculated. A payroll calculation should never live in two places.

Compliance posture and audit trail

Three obligations sit on top of the technical flow.

Data residency

Saudi PDPL covers employee personal data, including salary records. The bridge runs in a Saudi-resident tenant and does not export personal data outside the Kingdom in clear form. [VERIFY: tenant region and SAP BTP options for KSA data residency.]

Saudi PDPL

Audit trail

Every action (wage type mapped, salary record generated, authorisation sent, settlement received) is recorded with actor, timestamp, and source record. Queryable, not just stored.

Retention

Payroll records carry statutory retention. The bridge does not delete records; it tags expired ones for legal review. [VERIFY: KSA labour-law and tax retention periods.]

Three pitfalls

What catches KSA payroll programmes most consistently.

Bank file format variation

Saudi banks each have their own WPS file specification. Build the file generation as a configurable adapter, not a hard-coded path.

Per-bank spec

Retroactive corrections

ECP retro runs are fine in ECP, harder in Mudad. Define the retro policy before go-live: next cycle's authorisation, or a one-off Mudad correction. Both are valid; only one should be the default.

Set the default

Allowance taxonomy drift

New allowances (relocation, performance, ad-hoc bonuses) each need a Mudad category. The bridge must fail loudly on an unmapped wage type, or the amount silently lands in 'other' and skews Saudisation reporting.

Fail loudly

Where to go next

If you are running KSA payroll on SuccessFactors and you have not yet wired Mudad, three steps before any integration kicks off:

01

Inventory the wage types

Pull the full catalogue from ECP. Categorise each into Mudad's basic, housing, transport, or other. If any sit in 'other' by default, decide if that is what you want for Saudisation reporting.

02

Map your banks

Each bank you pay through has its own WPS file format. List them. Decide which bank will be primary; build the primary first.

03

Decide the retro policy

Next cycle, or one-off Mudad correction. Document it. Bake it into the bridge. Communicate it to the regulator if your retro volume is high.

Mudad is solvable. It is not, in our experience, a project that ends with the bridge going live. Wage-type drift and bank-format changes mean the integration needs an owner. The pattern that survives: a managed integration, a maintained mapping table, and a payroll team that knows where the seams are.

Next step

If you run KSA payroll on SuccessFactors, the Mudad integration is on your roadmap. We've shipped it.

Talk to our KSA payroll team