Payroll goes wrong in small ways: a leaver paid a full month, overtime missed for a driver, unpaid leave nobody told finance about. Most of those come from hours being recorded in one place and paid from another.

In HR there is one source of hours, the attendance register, and the payroll run reads it.

1. The register

Attendance is one row per employee per day: Present, Absent, Half day or Leave, with regular and overtime hours. Approved leave writes Leave rows into the register by itself, so nobody re-enters it. The weekend days, hours per day and days per month are company settings.

If you also run Manpower, timesheet hours go to this same register. The customer is billed from, and the worker paid from, one set of numbers.

2. Creating the run

One run per month. The calculation does the following for each active employee:

  • Prorates basic pay and allowances for joiners and leavers.
  • Deducts unpaid leave and unexcused absence.
  • Adds overtime at the company's multiplier.
  • Applies employee social insurance and calculates the employer's share.
  • Adds a monthly end-of-service accrual.

Suspended employees are not paid. Insurance rates and the wage cap are company settings that default to zero, because Circumz does not assume statutory rates. Enter the ones that apply to you.

3. Draft, adjust, recalculate

A draft run can be adjusted per employee, for a bonus, a deduction or a correction, and recalculated. Nothing is posted and nothing is final.

4. Approval freezes it

Approving a run freezes it and, if Accounting is on, posts one journal:

  • Debit salaries expense for gross pay, employer insurance and the end-of-service accrual.
  • Credit salaries payable for net pay, insurance payable for both shares, and the end-of-service provision.

Paying the run debits salaries payable and credits cash or bank.

5. The bank list

The run produces a list for the finance team to use at the bank. It is a plain CSV. It is not a WPS file, and Circumz does not submit to Mudad or to GOSI.

End of service

When an employee is terminated, the system calculates a figure using the rule in HR settings: none, or the Saudi Labour Law rule in articles 84 and 85. That rule gives half a month's wage for each of the first five years and a full month after, with the amount scaled down for resignation under ten years. The figure is a calculation. There is no final settlement document and no payout step, and the provision is not released automatically.

Leave and documents

Leave types carry an entitlement. Requests are approved, rejected or cancelled, balances update, and the database refuses overlapping pending or approved leave. Separately, residence permits, passports and licences carry expiry dates, and HR shows what has expired and what expires in the next 60 days.

What to keep in mind

Anyone who can view HR can see salaries. There is no separate payroll permission, so keep the role small. IBANs are stored as entered and masked on screen, not encrypted. And there is no recruitment, appraisal or self-service module.

If those limits suit you, the monthly work reduces to checking the register, reviewing the draft and approving.