The Regulatory Framework: Why SIF Files Are Legally Binding
Under Article 90 of the Saudi Labor Law and SAMA circulars governing the National Wage Protection System, commercial banks are prohibited from processing corporate payroll through standard manual retail transfers.
To achieve legal compliance on Mudad, an establishment's wage disbursement must be packaged in an encrypted, standardized format that the banking core can digest, timestamp, and report back to the National Information Center:
Corporate HR / ERP ──[SIF File Generation]──> SAMA Corporate Banking Gateway ──[Automated Reconciliation]──> Mudad Compliance Ledger
Payroll Calculation
HR extracts attendance, gross wages, and deductions from internal accounting/ERP
SIF Formatting
Assemble data into SAMA-compliant CSV/SIF columns; verify mathematical parity
Bank Portal Upload
Upload SIF to Al Rajhi Corporate, SNB e-Corp, or Riyad Bank; authorize debit
Mudad Compliance Sync
Bank settles funds and transmits cryptographically signed file to Mudad
SIF File Structure: Header vs Detail Records
A compliant SIF file contains two distinct structural sections: the Header Record (which defines batch-level corporate parameters) and the Employee Detail Records (which outline line-item salary distributions).
1. The Header Record (First Row of the File)
The header record identifies the paying entity and provides batch-level control totals to prevent fraudulent file tampering:
| Field Order | Field Technical Name | Format / Length | Description & Validation Rules |
|---|---|---|---|
| H1 | Record Type | Fixed Text (SCR) | Salary Creation Record identifier. Must be uppercase SCR. |
| H2 | Employer Identifier | 10 Digits Numeric | Unified 700 Number or Commercial Registration (CR) matching GOSI. |
| H3 | Corporate Bank Code | 4 Characters Alpha | The 4-letter SAMA identifier of the paying bank (e.g., RJHI, NCBK, RIBL). |
| H4 | File Creation Date | YYYY-MM-DD | Date the payroll file was exported. Must match upload date. |
| H5 | File Creation Time | HHMM (24-Hour) | Time of export (e.g., 1430 for 02:30 PM). |
| H6 | Payer Corporate IBAN | 24 Characters | Corporate checking account from which total salaries will be debited. |
| H7 | Total Records Count | Integer Numeric | The exact count of employee detail rows following the header. |
| H8 | Total Payroll Amount | Numeric (0.00) | Exact sum of all Net Salaries in SAR (must match sum of row net pay). |
| H9 | Currency Code | Fixed Text (SAR) | Must be SAR. Foreign currencies are rejected by Mudad. |
| H10 | Payroll Reference | Text (Max 30 Chars) | Reference label (e.g., SALARY-JAN-2026). No spaces or special characters. |
2. The Employee Detail Record (One Row Per Worker)
Following the single header row, each employee occupies exactly one row. SAMA and Mudad mandate the following 12-column sequence:
| Col | Field Label | Technical Code | Format | Description & Mandatory SAMA Constraints |
|---|---|---|---|---|
| A | Record Identifier | EDR | Fixed Text | Employee Detail Record indicator (EDR). |
| B | ID Type | ID_TYPE | 1 Digit | 1 = National ID, 2 = Iqama, 3 = Border Number. |
| C | National / Resident ID | EMPLOYEE_ID | 10 Digits | 10-digit civil number matching GOSI and Qiwa records. |
| D | Employee Full Name | EMPLOYEE_NAME | Text (Max 50) | Full legal name. Must NOT contain commas (`,`). |
| E | Beneficiary Bank Code | BANK_CODE | 4 Characters | Beneficiary bank SAMA code (e.g., RJHI, NCBK, ALBI, RIBL). |
| F | Beneficiary IBAN | BENEFICIARY_IBAN | 24 Chars | Must begin with SA and pass MOD-97 checksum validation. |
| G | Basic Salary | BASIC_SALARY | Numeric (0.00) | Contractual basic wage registered in GOSI. |
| H | Housing Allowance | HOUSING_ALLOW | Numeric (0.00) | Contractual housing allowance. Enter 0.00 if company provides housing. |
| I | Other Allowances | OTHER_ALLOW | Numeric (0.00) | Transport, overtime, performance incentives, and bonuses. |
| J | Deductions | DEDUCTIONS | Numeric (0.00) | Employee GOSI share, loan repayments, and disciplinary fines. |
| K | Net Salary Paid | NET_SALARY | Numeric (0.00) | Must equal: Basic + Housing + Other − Deductions. |
| L | Days Worked | DAYS_WORKED | Integer (1–31) | Standard working days in the payroll cycle (typically 30). |
SAMA SIF Construction Rules
Mandatory protections enforced by MHRSD & Saudi Labor Law
Step-by-Step Guide: Building a Compliant SIF File in Excel
Most small-to-medium enterprises in Saudi Arabia generate their monthly payroll using Microsoft Excel before exporting to CSV/SIF:
Step 1: Configure Column Formats in Excel
- If Column C is formatted as General or Number, Excel may strip leading zeros or display IDs in scientific notation (2.45E+09), corrupting the file.
Step 2: Implement the Mandatory Parity Formula
In Column K (Net Salary), do not type amounts manually. Implement SAMA's exact automated formula in Excel:
=ROUND((G2 + H2 + I2) - J2, 2)Using =ROUND(..., 2) prevents floating-point micro-cents (such as 4250.000000001) from causing banking gateway rejection.
Step 3: Insert the SAMA Header Row
In Row 1, insert the batch control parameters:
SCR,7001234567,RJHI,2026-01-31,1430,SA0380000123456789012345,50,225000.00,SAR,SAL-JAN-2026Step 4: Populate Employee Detail Rows (Rows 2 to N)
Below the header row, populate each worker's row:
EDR,2,2450123456,Ahmed Mansoor Ali,RJHI,SA4480000456123456789012,5000.00,1250.00,500.00,500.00,6250.00,30
EDR,2,2489654321,Tariq Mahmood,NCBK,SA1210000789123456789034,4000.00,1000.00,250.00,350.00,4900.00,30Step 5: Save as CSV UTF-8
.sif file extension, navigate to the saved file in Windows File Explorer and simply rename the extension from .csv to .sif.Set Text Types
Format Employee ID and IBAN columns as strict Text in Excel
Apply Rounding
Insert =ROUND((Basic + Housing + Other) - Deductions, 2) in Net column
Insert SCR Header
Place batch control parameters, total headcount, and total sum in Row 1
Export CSV UTF-8
Save workbook as CSV UTF-8 (Comma delimited); rename extension to .sif if required
Raw SIF File Code Example: A Working Demonstration
Below is a verified, fully compliant SIF file sample for a company with 3 employees banking with Al Rajhi Bank:
SCR,7009876543,RJHI,2026-02-28,1115,SA0380000555666777888999,3,15450.00,SAR,SALARY-FEB-2026
EDR,2,2345678901,Rashid Khan,RJHI,SA4480000111222333444555,4000.00,1000.00,500.00,350.00,5150.00,30
EDR,2,2456789012,Sultan Al-Otaibi,NCBK,SA1210000222333444555666,5000.00,1250.00,0.00,500.00,5750.00,30
EDR,2,2567890123,Carlos Santos,RIBL,SA6520000333444555666777,3500.00,875.00,400.00,225.00,4550.00,30Verification of Batch Parity:
3 (Matches 3 EDR rows).5,150.00 + 5,750.00 + 4,550.00 = SAR 15,450.00 (Matches 15450.00 in Header H8).(4000.00 + 1000.00 + 500.00) − 350.00 = 5,150.00 SAR ✅(5000.00 + 1250.00 + 0.00) − 500.00 = 5,750.00 SAR ✅(3500.00 + 875.00 + 400.00) − 225.00 = 4,550.00 SAR ✅Official SAMA Bank Codes for SIF Generation
When routing salaries to employees who hold accounts at different commercial banks across the Kingdom, you must input the exact 4-letter SAMA Bank Identifier in Column E:
| Bank Name (Commercial) | SAMA Bank Code (Col E) | IBAN Bank Code Prefix |
|---|---|---|
| Al Rajhi Bank (مصرف الراجحي) | RJHI | SA..80... |
| Saudi National Bank / SNB (البنك الأهلي) | NCBK | SA..10... |
| Riyad Bank (بنك الرياض) | RIBL | SA..20... |
| Banque Saudi Fransi (البنك السعودي الفرنسي) | BSFR | SA..55... |
| Arab National Bank / ANB (البنك العربي الوطني) | ARNB | SA..40... |
| Alinma Bank (مصرف الإنماء) | ALBI | SA..05... |
| Saudi Awwal Bank / SAB (البنك السعودي الأول) | SABB | SA..45... |
| Bank AlJazira (بنك الجزيرة) | BJAZ | SA..60... |
| Bank Albilad (بنك البلاد) | ALBI | SA..15... |
| Gulf International Bank / meem (بنك الخليج) | GIBK | SA..65... |
The 6 Fatal SIF Validation Errors on Mudad & Bank Portals
When an uploaded SIF file fails processing, corporate banking systems generate automated rejection codes. Understanding these errors saves hours of manual reconciliation:
| Rejection Code / Error Message | Underlying Root Cause | Mandatory Resolution Protocol |
|---|---|---|
| `Arithmetic Parity Mismatch (Row X)` | Net salary does not equal Basic + Housing + Other − Deductions. | Audit Row X in Excel; re-apply =ROUND((G+H+I)-J, 2). |
| `Header Batch Total Discrepancy` | Header Field H8 total does not equal the mathematical sum of all Column K rows. | Re-calculate =SUM(K2:Kn) and overwrite Header Field H8. |
| `Invalid IBAN Format / Checksum` | IBAN length is not 24 characters, lacks SA, or failed MOD-97 check. | Request official IBAN certificate from worker; verify via online SAMA IBAN validator. |
| `Corrupted Field Count (Found 13 cols)` | An employee name contains a comma (,), causing the CSV to split the text. | Strip all commas and quotation marks from employee names and descriptions. |
| `Employee ID Not Registered in GOSI` | Iqama number does not exist on the company's GOSI establishment file. | Confirm worker sponsorship transfer was finalized on Qiwa; audit GOSI active register. |
| `Character Encoding Garble (Mojibake)` | File was saved as ANSI instead of UTF-8, turning Arabic characters into ????. | Re-save file in Notepad or Excel as UTF-8 without BOM. |
Real-World Corporate Case Study: Dammam Logistics Fleet
Batch Validation Failed: Field Parity Error. * An external compliance audit examined the raw .sif file in Notepad.
* Three fatal syntax flaws were discovered:
1. Four driver names contained commas copied from passports (e.g., Khan, Tariq).
2. Overtime hours were entered into Column I with three decimal places (350.125), causing net rounding mismatches of SAR 0.01 in 14 rows.
3. The IBAN column in Excel was formatted as "General", which stripped the letters SA from two drivers' bank accounts.
* The firm instituted a standardized Excel payroll macro enforcing =ROUND(..., 2).
* Removed all punctuation from worker names.
* Locked the IBAN column to Text format.
Strategic Checklist: SIF Pre-Flight Audit Routine
Before submitting your SIF file to your bank portal, execute this 5-minute pre-flight checklist:
Pre-Flight SIF Verification Routine
Mandatory protections enforced by MHRSD & Saudi Labor Law
Frequently Asked Questions (FAQ)
What is the difference between a .csv file and a .sif file for Saudi WPS?
A .sif (Salary Information File) is functionally a comma-separated values (.csv) text file formatted to strict SAMA specifications. Some Saudi corporate banks (such as Al Rajhi) require the file to end with the .sif extension, while others (such as SNB e-Corp) accept .csv or .txt. You can change a .csv file to .sif simply by renaming the extension.
What is the exact formula for Net Salary in a SIF file?
Under SAMA regulations, the net salary must strictly follow: Net Salary = Basic Salary + Housing Allowance + Other Allowances − Deductions. Any rounding error or manual discrepancy will cause an immediate system rejection.
How should the Beneficiary IBAN be formatted in Excel for SIF files?
The IBAN column must be formatted as Text before entering data. A valid Saudi IBAN must begin with SA, followed by 22 numeric digits (24 characters in total). Never include spaces or hyphens.
Can I include an employee who does not have an Iqama in the SIF file?
Yes. If an employee is newly arrived and their plastic Iqama has not yet been printed, you can use their 10-digit Border Number (*Raqm Al-Hudood*) by setting Column B (ID_TYPE) to 3.
Why does my bank reject the SIF file for "Incorrect Field Count"?
This almost always occurs because an employee's name or corporate description contains a comma (,). In a CSV file, a comma indicates a new column. A comma inside a name creates an unwanted 13th column, invalidating the row structure. Remove all commas from text fields.
Was this compliance guide helpful?
Your feedback helps our legal editorial team maintain authoritative KSA guidance.
Advocate High Court (Punjab Bar Council) and ATT GCC VAT Certified Specialist. Author of comprehensive regulatory commentaries on Saudi corporate law, ZATCA e-invoicing protocols, and Labor Reform Initiatives.