KeLoket logo

Payroll integration

Keka to Loket integration: hires, salary changes and exits from Keka in Loket

With an integration between Keka and Loket, a new Dutch employee from Keka arrives as a concept employee in Loket, and salary changes, variable payouts and an approved exit reach the employment with their date. Keka reports a salary change immediately; KoppelHet sets it in Loket from the effective date chosen in Keka.

What the integration does

Organisations that use Keka, often with a large team in India and a smaller team in the Netherlands, have Dutch payroll processed in Loket by a payroll bureau. Salary changes, bonuses and leavers then go by email, and dates and addresses from Keka have to be converted by hand.

  1. In Keka, actions under event triggers send a webhook to KoppelHet on a new employee, a salary change or an approved exit.
  2. KoppelHet fetches the employee and the salary and checks whether the person is in the Dutch pay group.
  3. A new employee becomes a concept employee in Loket; the payroll bureau completes the Dutch payroll details and converts the concept.
  4. A salary change goes to the pay from the effective date, a variable payout to the period of payout.
  5. An approved exit sets the notice date and ends the employment on the last day.
Keka → KoppelHet → LoketSOURCEKekaKekaTARGETLoketKoppelHetmapping · logging · monitoringKeka → KoppelHet → LoketSOURCEKekaKekaTARGETLoketKoppelHetmapping · logging · monitoring
Out: Concept employee with address · Pay with effective date · Variable payouts · Notice date and end of employment

What to watch for with Keka and Loket

  • On a salary change Keka sends the old and new amount, the old and new effective date and the currency, with dates such as Oct 21, 2024. Loket wants a wage record with a start date as year-month-day. KoppelHet converts the new effective date and creates the wage record with it; a change in a currency other than euro does not go through.
  • Keka's salary contains variable amounts with their own payout date, separate from the fixed salary. In Loket these do not belong in the pay but in the period data. KoppelHet puts each variable amount in the period of the payout date, on a pay code agreed per variable component.
  • By default Keka only returns salaries for employees who are still working. For a leaver's final payroll run KoppelHet also requests relieved employees, so a bonus paid out after the last working day still reaches Loket.
  • Keka records when someone submitted their resignation and when they leave. Besides the last day Loket has a separate notice date, which counts for the notice period. KoppelHet fills both, and translates Keka's exit type into Loket's list of termination reasons.
  • The address is stored in Keka as two free address lines with postal code and city. Loket asks for street, house number and addition separately, with at most twenty-four characters for the street. KoppelHet extracts the house number from the first line; an address that cannot be split unambiguously becomes a check item on the concept.
  • Salaries in Keka can be filtered by pay group. KoppelHet only requests the pay group set up for the Netherlands, so Indian salary components such as provident fund never come near Loket.

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

Do we need to use Keka Payroll for the Netherlands?

No, Loket runs payroll. The salary of Dutch employees does have to be in Keka, in its own pay group; otherwise payroll sets the pay in Loket itself.

Who sets up the webhooks in Keka?

A Keka administrator with permission to manage event triggers. We provide the URL and the events.

Does leave from Keka go along?

Not in the first version. Leave and balances 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.

  • Keka through the REST API with a token per tenant. GET hris/employees (lastModified, employmentStatus Working or Relieved, inNoticePeriod; currentAddress with addressLine1 and addressLine2, resignationSubmittedDate, exitDate, exitType, exitReason), GET payroll/salaries (paygroupIds, employmentStatus, working only by default; earnings, deductions, variables with payoutDate, effectiveFrom), pageSize at most 200. Webhooks through Settings, Communications, Event Triggers; EmployeeSalaryUpdated with previous and updated effective date.
  • Loket through the REST API with OAuth - POST conceptemployees (address, cancellationNoticeDate), wages with start date, PATCH payrollperioddata for variable amounts and PATCH terminate with endOfEmploymentReason.

Which fields are transferred

The key fields. The full mapping is agreed per customer.

Field in KekaField in LoketNotes
employeeNumberVrij veld in LoketFixed key
firstName, middleName, lastNameVoornaam, voorvoegsel en achternaam
joiningDateBegindatum dienstverband
currentAddress (addressLine1, addressLine2, zip, city)Straat, huisnummer, toevoeging, postcode en plaats
salary: earnings (basis), effectiveFromBruto loon met begindatum
salary: variables (amount, payoutDate)Periodegegevens in de periode van uitbetaling
resignationSubmittedDateDatum opzegging
exitDate, exitType, exitReasonEinde dienstverband en reden uit dienst

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.