Sage HR logoLoket logo

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.

  1. 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.
  2. KoppelHet sees the new employee at the next run and creates a concept employee in Loket at the right employer.
  3. The accounting firm completes collective agreement, payroll tax credit and pension and converts the concept into an employee.
  4. A new compensation in Sage HR becomes a new wage record in Loket, with the start date from Sage HR.
  5. A termination ends the employment in Loket; a rehire becomes a new employment for the same employee.
Sage HR → KoppelHet → LoketSOURCESage HRTARGETLoketKoppelHetmapping · logging · monitoringSage HR → KoppelHet → LoketSOURCESage HRTARGETLoketKoppelHetmapping · logging · monitoring
Out: Concept employee with personal details and IBAN · Employment with employer and on-call indicator · Working hours · Wage with effective date · End of employment and rehire

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, architecture and compliance

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.

Price indication · Complex

Leave your work email and you see the price indication right away.

We only use your address to follow up on your question about this integration.

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 HRField in LoketNotes
idVrij veld bij de werknemerFixed key
first_name, last_name, date_of_birthPersoonsgegevens conceptwerknemer
team of eigen veld werkgeverWerkgever in LoketLookup table
employment_start_dateBegindatum dienstverband
irregular_contract_workerOproepovereenkomst (isOnCallEmployment)
Eigen veld uren per weekAfwijkende uren per week in de arbeidstijd
Eigen veld IBANIBAN zonder spaties
compensation (amount, period, start_date, category Salary)Loon met ingangsdatum
termination_date en termination.reasonEinddatum en reden einde dienstverband

Related

Which systems do you want to connect?

Tell us which systems you use and what should happen automatically. Together we define the smallest working solution, with a clear design and a quote before building.