
Payroll integration
Sage HR to Loket integration: Dutch employees, salary and leavers from Sage HR into payroll
With an integration between Sage HR and Loket, a new Dutch employee from Sage HR arrives in Loket as a concept employee, with start date, position, hours and salary, and later salary changes and a departure follow to the employment. Payroll only completes in Loket what Sage HR does not hold, such as collective agreement and payroll tax credit.
What the integration does
Organisations that use Sage HR for staff in several countries and run Dutch payroll in Loket, often through an accounting firm, now email new people and pay rises. Because Sage HR has no hours and bank account in the API, those details are regularly missing in Loket until just before the payroll run.
- HR hires an employee in Sage HR in the team that belongs to the Dutch employer, with the custom fields for hours per week and IBAN.
- KoppelHet sees the new employee at the next run and creates a concept employee in Loket at the right employer.
- The accounting firm completes collective agreement, payroll tax credit and pension and converts the concept into an employee.
- A new compensation in Sage HR becomes a new wage record in Loket, with the start date from Sage HR.
- A termination ends the employment in Loket; a rehire becomes a new employment for the same employee.
What to watch for with Sage HR and Loket
- Sage HR marks flexible workers with the irregular_contract_worker flag. In Loket that becomes an employment with the on-call indicator, so the accounting firm immediately sees whether an appearance obligation must be recorded.
- Loket only accepts an IBAN without spaces. In Sage HR the IBAN is kept in a custom field, where HR often copies it with spaces; KoppelHet removes them and checks the format before the concept is created.
- The hours per week come from a custom field in Sage HR and go to the deviating hours in Loket next to the employer's shift. The full-time hours stay with the Loket shift, and Loket calculates the part-time factor itself.
- A compensation in Sage HR has a category. Only the Salary category becomes a wage record in Loket; an hourly compensation goes as an hourly wage, and a period Loket does not use, such as per year, KoppelHet converts to the employer's payroll period.
- Loket keeps wage records as a chain in which a new record closes the previous one. KoppelHet therefore does not blindly append a compensation with a start date in the past, but reports it to the accounting firm when a later wage record already exists.
- A termination in Sage HR has a reason from a fixed list. When ending an employment, Loket asks for the reason according to the Tax Administration and whether the departure is due to long-term illness. We fix that translation at the start; illness as the cause is always checked with HR.
- A rehire in Sage HR keeps the same id. KoppelHet creates a new employment for the existing employee in Loket and sets the earlier start date as the historical start date, instead of creating a second employee.
How we build and run it
- The integration runs on the KoppelHet platform, hosted in a data centre in the EU.
- Every sync and every error is visible in the functional log; on an error your administrator is notified.
- A change that cannot go through is not half-applied but queued for another attempt.
- KoppelHet is ISO 27001 certified. Data travels encrypted and stays on the platform no longer than needed.
- After go-live we manage the integration and adjust it when your process changes.
- The integration fits next to your existing integration layer. Only the fields in the design are transferred; the platform keeps no register of its own.
Implementation and price
This is not an app you switch on. We build the integration for your organisation on our platform, with building blocks we reuse on every project. So it is custom work that does not start from scratch.
A consultant prepares the intake and analyses both systems. We then record the mapping and exceptions field by field, test in the test or acceptance environment and go live at a moment you choose. Costs are a one-off amount for the setup and a monthly amount for platform, monitoring and support.
Frequently asked questions
Does this work if an accounting firm manages Loket for us?
Yes. The firm gives the integration access to your employers in Loket and simply sees new concepts appear.
Does leave from Sage HR go to Loket too?
Not by default. That can be added later as an extension.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Sage HR through {subdomain}.sage.hr/api with the X-Auth-Token header - GET /employees (employment_start_date, irregular_contract_worker, position_history), GET /terminated-employees with termination.reason, GET /employees/{id}/compensations (start_date, end_date, period, category) and GET /employees/{id}/custom-fields. No webhooks; KoppelHet reads periodically, in pages of fifty.
- Loket through the Loket REST API with OAuth - PostConceptEmployeeByEmployerId (iban without spaces, isOnCallEmployment, historicalStartDate), PostWageByEmploymentId (grossWage, grossWageType, payrollPeriodType) and PostWorkingHoursByEmploymentId (deviatingHoursPerWeek), both as a date chain, and PatchTerminateByEmploymentId (endOfEmploymentReasonTaxAuthorities, endOfEmploymentDueToIllness).
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Sage HR | Field in Loket | Notes |
|---|---|---|
id | Vrij veld bij de werknemer | Fixed key |
first_name, last_name, date_of_birth | Persoonsgegevens conceptwerknemer | |
team of eigen veld werkgever | Werkgever in Loket | Lookup table |
employment_start_date | Begindatum dienstverband | |
irregular_contract_worker | Oproepovereenkomst (isOnCallEmployment) | |
Eigen veld uren per week | Afwijkende uren per week in de arbeidstijd | |
Eigen veld IBAN | IBAN zonder spaties | |
compensation (amount, period, start_date, category Salary) | Loon met ingangsdatum | |
termination_date en termination.reason | Einddatum en reden einde dienstverband |
Related
Recruitee → Sage HR
Recruitee to Sage HR integration: hired candidates as employees in Sage HR
Sage HR → Active Directory
Sage HR to Active Directory integration: domain accounts per team, with an expiry date from the termination
Sage HR → ADP iHCM
Sage HR to ADP iHCM integration: compensation and leavers from Sage HR to Dutch ADP payroll
Sage HR → AFAS Profit
Sage HR to AFAS integration: employees of the Dutch entity in AFAS Profit Payroll