For CPA Firms
Stage 4 — Importing the monthly labor grid
Build the employee × month × component matrix that drives §3 — including Saudization, allowances, and the GOSI bridge.
9 min readUpdated 16 April 2026
What "in scope" means#
Total in-scope compensation = base salary + overtime − absence deductions + bonuses/commissions + employer GOSI share + housing/transport/education allowances + EOSB accrual + leave + other employee items. Outsourced labor, healthcare, EOSB interest, and trainee/trainer fees are excluded (see §3 standard).
Template structure (one row per employee per month)#
| Column | Type | Notes |
|---|---|---|
| month | YYYY-MM | Each month of the period must appear. |
| employee_id | Text | Internal HR code; the dedup key. |
| employee_name | Text | Used in sampling worksheets. |
| nationality | saudi | non_saudi | Drives the Saudization KPI. |
| fte | Decimal 0–1 | 0.5 for half-time, etc. |
| hours | Number | Standard month = 160. |
| base_salary | SAR | Gross. |
| overtime | SAR | |
| absence_deduction | SAR (negative) | |
| bonuses | SAR | Bonuses + commissions. |
| gosi_employer | SAR | Employer share only. |
| eosb_accrual | SAR | Period accrual, not paid amount. |
| housing_allowance | SAR | |
| transport_allowance | SAR | |
| education_allowance | SAR | |
| other_employee_items | SAR | Document each component. |
After import: what Local Check builds#
- Average headcount per nationality (end-of-month basis, ignores duplicates).
- Total compensation table matching LCGPA template §3.1.
- TB bridge computing the difference vs the GL payroll account.
- Sampling worksheet seeded for the §3 sample (next article).
Common errors blocked at import
Missing months for an employee, duplicated employee/month rows, outsourced staff misclassified as employees, and EOSB payments instead of accruals are all rejected at validation with row-level messages.