Overview
Payroll is one of the most consequential data processes a business runs. Every pay run depends on data from multiple systems — worked hours from the time registration system, leave balances and absences from the HR system, expense reimbursements from the expense management system, contract changes from the HR administration, and the tax and pension data that payroll legislation requires. When this data flows correctly — automatically, accurately, and at the right time — payroll runs cleanly. When it does not — when hours are manually re-entered and the transcription produces errors, when a salary change made in the HR system does not reach the payroll processor before the cutoff, when an absence recorded in the leave system is not reflected in the pay calculation — payroll errors follow.
Payroll integrations automate the data flows that payroll accuracy depends on. They eliminate the manual data transfer between systems that introduces errors and consumes HR and payroll administrator time. They ensure that payroll data is current at cutoff — that hours are submitted, absences are recorded, and contract changes are applied before the payroll run that they should affect. And they produce the audit trail that payroll compliance requires — the record of what data was submitted to payroll, when, and from which source.
We build payroll integrations for HR and finance teams that need reliable, automated data flows between their HR systems, time registration tools, leave management software, expense platforms, and the payroll processors that run their salary calculations — connected correctly, validated properly, and delivered on time.
The Payroll Data Problem
Payroll errors have a distinctive cost structure. They are discovered after the fact — after the salary has been paid incorrectly, after the employee has noticed the discrepancy, after the month-end has closed. Correcting them requires manual adjustment in the payroll system, reprocessing, potential correction of tax and social security filings, and the administrative overhead of explaining and apologising to the affected employee.
The root causes of payroll errors are almost always data issues — and data issues are almost always the result of manual data transfer between systems that do not integrate directly. An hour worked that was recorded in the time system but not submitted to payroll because the integration broke and nobody noticed. A salary increase that was approved and recorded in the HR system but not communicated to the payroll processor before the cutoff. A sick leave period that was recorded in the absence system but not flagged to payroll for the sick pay calculation. A new employee whose payroll record was not created in time for their first pay run because the onboarding data was still in the HR system waiting to be manually submitted.
Each of these failures has the same root cause: data that existed in one system did not reach the payroll system when it needed to. Integration eliminates this failure mode.
What Payroll Integrations Cover
Employee master data synchronisation. The payroll system needs accurate, current employee master data — name, address, bank account, tax identification, employment type, salary, employment start date, contract type. This data lives in the HR system. Keeping it synchronised with the payroll system — automatically, when changes occur rather than on a periodic batch — ensures that the payroll system always reflects the current employment data rather than the employment data as it was at the last manual sync.
New employee creation in the payroll system triggered by the completion of the employee's HR record — without requiring HR or payroll to manually create the payroll record in a separate step. Contract change propagation — salary changes, hours changes, role changes — applied to the payroll system on the effective date of the change rather than discovered at the next payroll run. Employee departure — termination date, final salary period, holiday pay liability — communicated to the payroll system in time for the final pay run to be processed correctly.
Hours and time data submission. For organisations paying employees on the basis of hours worked — hourly employees, overtime calculations, project-based time allocation — the hours data from the time registration system needs to reach the payroll system at cutoff. Hours submission integration extracts the approved hours from the time system — after manager approval, after any correction workflow has been completed — and delivers them to the payroll processor in the format it requires.
For Dutch payroll specifically, hours data feeds into the calculation of social security contributions, pension contributions, and the payroll tax (loonheffing) that the payroll processor applies. Hours data that arrives after cutoff, or that is submitted with errors, produces incorrect contribution calculations that require correction.
Absence and sick leave data. Sick leave has specific payroll consequences in Dutch employment — the Ziektewet and the two-year sick pay obligation create payroll implications that differ from standard leave. Sick leave data from the absence system — start date, duration, any UWV involvement — needs to reach the payroll system for the correct sick pay calculation to be applied. Absence integration delivers this data automatically, ensuring that sick pay is calculated correctly without requiring HR to manually communicate every sick leave occurrence to payroll.
Leave balance data at period end — the leave taken, the accrued balance, the remaining entitlement — feeds into the holiday pay (vakantiegeld) calculation that Dutch payroll requires. Accurate leave data in the payroll system is a prerequisite for correct holiday pay processing.
Expense reimbursement data. Employee expenses approved for reimbursement need to reach the payroll system for inclusion in the pay run — or be paid through a separate reimbursement run depending on the organisation's payment practice. Expense integration delivers approved expense claims — amounts, tax treatment, cost centre allocation — to the payroll processor in the format it requires, avoiding the manual expense submission that produces delays and transcription errors.
Pension and benefit data. Pension contributions, salary sacrifice arrangements, and benefit deductions need to be calculated and communicated to the payroll processor and to the pension provider or benefit insurer. Pension integration connects the HR system's pension record with the payroll processor and the pension provider — ensuring that contribution rates are current, that changes to pension scheme membership are communicated, and that contribution amounts are correctly reported.
Payroll output reconciliation. After the payroll run, the output from the payroll system — the payslip data, the tax filings, the social security contribution amounts — needs to be reconciled against the source data to confirm that the payroll was calculated correctly. Reconciliation integration retrieves the payroll output and compares it against the source data submitted — flagging discrepancies for review before the payroll is finalised rather than after the salaries have been paid.
Journal and accounting entries. The payroll journal — the accounting entries that record salary costs, employer contributions, and payroll liabilities — needs to reach the financial accounting system. Journal integration produces the payroll journal in the format that Exact Online, AFAS, or the relevant accounting system requires and delivers it at the point in the payroll process when the journal should be posted, eliminating the manual journal entry that payroll accounting otherwise requires.
Dutch Payroll Specifics
Dutch payroll operates within a specific legislative and administrative framework that payroll integrations for Dutch employers need to handle correctly.
Loonaangifte. The monthly payroll tax return submitted to the Belastingdienst through the loonaangifte process requires data in a specific format — employer identification, employee identification (BSN), salary components, withholding tax calculations, and social security contribution breakdowns. Payroll integrations that feed data to payroll processors running Dutch loonaangifte need to ensure that the data they submit is complete and correctly structured for the processor to produce a compliant return.
Loonstrook requirements. Dutch law specifies the information that must appear on a payslip — the salary components, the deductions, the holiday pay accrual, the pension contribution. Payslip generation from payroll processor output and delivery to employees — through the employee portal or through direct digital delivery — needs to meet these statutory requirements.
UWV data submissions. For sick leave beyond defined durations, ZW-uitkering applications, WIA assessments, and other UWV processes, specific data submissions are required. Integration between the absence management system and the UWV submission process — or between the payroll system and UWV — automates the data submissions that these processes require.
Pensioenfondsrapportages. Pension fund reporting — the periodic contribution and membership data that pension providers require — needs to be produced from payroll data in the format the pension fund specifies. Pension integration produces the pension fund report from payroll output and delivers it through the submission mechanism the fund requires.
AFAS Integration
AFAS is the most common combined HR and payroll platform for Dutch employers in the mid-market segment. AFAS manages the full HR and payroll stack — employee records, salary administration, absence registration, and payroll processing — and provides the integration interfaces that connect external systems to the AFAS data.
AFAS as source system. For organisations where AFAS is the HR system of record and payroll processing happens in AFAS, integrations from time registration, absence management, and expense systems deliver data into AFAS through the AFAS REST API. AFAS then applies this data in its payroll calculation.
AFAS as destination system. For organisations where employee data is managed in AFAS but processed through a separate payroll processor, integration extracts the relevant payroll data from AFAS — salary, hours, absences, contract changes — and delivers it to the external payroll processor in the required format.
AFAS InSite and OutSite. AFAS's employee self-service portals — InSite and OutSite — can be supplemented or replaced by custom employee portal development that integrates with AFAS through the API, providing the self-service functionality the organisation needs without the limitations of the standard AFAS portal.
Integration Points
Time registration systems. Hours and time data from time tracking software — approved hours by employee, by project, by cost centre — delivered to AFAS or the payroll processor at the payroll cutoff schedule.
Leave and absence management. Leave balances, approved leave, sick leave records, and absence data from the leave management system — delivered to payroll for holiday pay calculation, sick pay processing, and absence reporting.
Expense management. Approved expense reimbursements — amounts, categories, tax treatment — delivered to payroll for inclusion in the pay run.
Exact Online. Payroll journal entries delivered to Exact Online — salary costs, employer contributions, payroll liabilities — in the account and cost centre structure that Exact Online requires. Employee cost data for management reporting.
Pension providers. Contribution data and membership records delivered to pension funds — ABP, PFZW, Zwitserleven, Nationale-Nederlanden — in the format and through the submission mechanism each fund specifies.
Belastingdienst. Loonaangifte preparation support — the data validation and format checking that ensures payroll processor output produces a compliant tax return.
UWV. Sick leave duration data and absence records for the UWV reporting that long-term sick leave triggers.
Technologies Used
- Rust / Axum — high-performance data transformation pipelines, payroll cutoff processing, validation engines
- C# / ASP.NET Core — AFAS REST API integration, complex payroll logic, Dutch employment law calculations, journal generation
- React / Next.js — payroll integration monitoring dashboard, reconciliation interface, error handling views
- TypeScript — type-safe frontend and API code throughout
- SQL (PostgreSQL, MySQL) — integration audit trail, submission records, reconciliation data
- Redis — processing job queuing, cutoff coordination, status tracking
- AFAS REST API — primary HR and payroll system integration
- Exact Online API — payroll journal and financial data integration
- REST / Webhooks — time, leave, and expense system connectivity
- SFTP / secure file transfer — payroll processor file-based data exchange where API is not available
- SMTP — payroll cutoff notifications, error alerts, reconciliation reports
Getting Payroll Data Right
Payroll integration is not technically glamorous work. It is data plumbing — making sure that the right data gets from the right system to the right place at the right time, in the right format, with the right validation applied before it gets there. But the consequences of getting it wrong are felt by every employee whose payslip contains an error, by every HR and payroll administrator who has to fix it, and by the organisation that has to correct its tax filings as a result.
Getting it right means designing integrations that are resilient — that handle the edge cases, that manage cutoff timing correctly, that surface errors before they become payroll mistakes, and that produce the audit trail that allows every payroll input to be traced back to its source. That is the standard we build payroll integrations to.
Payroll Data That Is Right First Time
The best payroll run is one that requires no manual intervention — where all the data arrived accurately and on time, where the output matches the source data, and where the payslips that employees receive reflect what they earned. That outcome requires the data infrastructure to support it.