Payroll systems are tested once a month, and failure is expensive and public: an employee underpaid, an insurance deduction wrong, or a cycle posted before attendance was complete. This system is built around one principle — block the error before posting, not after.
The real problem in multi-country groups
A company operating in one country needs a payroll system. A group hiring across several needs something harder: one system applying different rule sets to different populations of employees simultaneously. The differences are not marginal:
- Tax — progressive brackets in one country, absent entirely in another.
- Social insurance — different contribution bases, floors, ceilings and employer shares, sometimes with different treatment for nationals and expatriates.
- Leave — different accrual rates, carry-over caps and treatment of the balance on termination.
- End of service — formulas that differ entirely by reason for leaving and length of service.
The common workaround — one installation per country — creates a bigger problem: no single place shows the group as a whole, and every change has to be made several times. Here, each country's rules are a self-contained pack applied to the companies registered in it, over shared infrastructure.
What the system covers
Employee records and org chart
Personal and employment data, job history, contracts with expiry dates, and linked documents — residency, work permit, certifications — with alerts before any of them lapse. The org chart drives the approval routing.
Attendance
The data source is a per-company setting: a file from a biometric device, employee self-service punches, or a direct connection. Punches are processed against the assigned shift to derive lateness, absence and overtime — the inputs the payroll run later depends on.
Leave
Leave types and accrual rules are defined per country and contract type. Employees see their balance at the moment of request, paid and unpaid days are calculated automatically, and requests exceeding the balance are blocked. Approvals follow the org chart, with delegation available at employee, department or company level while a manager is away.
Payroll
Pay is built from configurable elements rather than fixed fields: basic, allowances, deductions and bonuses, each with its own calculation rule and its own effect on the tax base and the insurance base. This absorbs different pay structures across group companies without code changes.
The gate before the run
Before a cycle can run, the system verifies attendance completeness, settlement of pending leave requests, overtime approval, pay-element completeness per employee, and the presence of tax and insurance rules for the country. A failing check stops the run and states the reason.
Accounting effect
An approved run posts its own journal entry — gross pay, tax and insurance deductions, and net payable — with the option to distribute labour cost across cost centres or projects instead of charging it all to a single administrative expense account.
Self-service
Much of the HR workload is communication rather than calculation: where is my leave request, what is my balance, when does my residency expire. Employees get their own page showing balances, requests and documents; managers get an inbox showing only what awaits their decision.
Working with the ERP
The system runs standalone or as a module inside Keystone ERP. In the latter case payroll expense becomes part of the financial statements directly, and site labour cost reaches project cost in Keystone Construction without manual adjusting entries.