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)#

ColumnTypeNotes
monthYYYY-MMEach month of the period must appear.
employee_idTextInternal HR code; the dedup key.
employee_nameTextUsed in sampling worksheets.
nationalitysaudi | non_saudiDrives the Saudization KPI.
fteDecimal 0–10.5 for half-time, etc.
hoursNumberStandard month = 160.
base_salarySARGross.
overtimeSAR
absence_deductionSAR (negative)
bonusesSARBonuses + commissions.
gosi_employerSAREmployer share only.
eosb_accrualSARPeriod accrual, not paid amount.
housing_allowanceSAR
transport_allowanceSAR
education_allowanceSAR
other_employee_itemsSARDocument each component.

After import: what Local Check builds#

  1. Average headcount per nationality (end-of-month basis, ignores duplicates).
  2. Total compensation table matching LCGPA template §3.1.
  3. TB bridge computing the difference vs the GL payroll account.
  4. 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.