
Payroll integration
BambooHR to Zenegy integration: Danish employees from BambooHR with CPR and seniority in Zenegy
An integration between BambooHR and Zenegy creates a new Danish employee from BambooHR in Zenegy, with CPR number, address, employment date and seniority date, and passes pay changes and leavers on. BambooHR has no CPR field of its own, so the integration reads the national ID and checks it before Zenegy gets it.
What the integration does
Organisations that use BambooHR internationally and have Danish payroll processed in Zenegy email a starter's CPR number to payroll. A returning employee then often gets a new seniority date in Zenegy, while BambooHR knows the original date.
- HR records a new employee with a Danish location in BambooHR.
- KoppelHet receives the signed webhook and checks the national ID as a CPR number.
- KoppelHet creates the employee in Zenegy with the employee number from BambooHR.
- A new pay row goes as a PATCH with only the changed fields, and KoppelHet reads the result back.
- A termination in the employmentStatus table becomes a resignation in Zenegy.
What to watch for with BambooHR and Zenegy
- Zenegy does not create an employee without a CPR number. BambooHR has fields for the US SSN, the UK NIN and the Canadian SIN, but not for the CPR; organisations use nationalId for it. KoppelHet only reads that field for Danish employees and checks that it has ten digits.
- Besides the employment date Zenegy also asks for a seniority date. BambooHR has hireDate and, from API version 1.1, originalHireDate for the first hire. KoppelHet fills seniority with originalHireDate, so a returning employee keeps their accrued rights in Danish payroll.
- If the integration sends no employee number, Zenegy creates one itself based on the CPR. The numbers in both systems then drift apart. KoppelHet therefore sends the employeeNumber from BambooHR, and reports an employee without a number instead of creating them.
- A PATCH in Zenegy may only contain the fields to change, and a change on a field from the global values does nothing without an error. On a new pay row from BambooHR KoppelHet only sends the amount and reads the employee back afterwards to see whether Zenegy really took it over.
- Zenegy pays monthly in advance, monthly in arrears or every fourteen days. In BambooHR each employee belongs to a paySchedule. KoppelHet records the Zenegy period per schedule, so an employee does not end up in the wrong run.
- An employee who has not been in any payroll run can be deleted in Zenegy, and that is final. If a hire in BambooHR does not go ahead, KoppelHet only deletes the employee after payroll approves; after the first run a resignation follows through the resign function.
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 time off from BambooHR also go to Zenegy?
Not in the first version. Danish holiday rules run in Zenegy; time off can follow 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.
- BambooHR through signed webhooks (HMAC in X-BambooHR-Signature) and the employees API with nationalId, employeeNumber, hireDate, originalHireDate and paySchedule; compensation and employmentStatus tables. API key of a separate user.
- Zenegy Payroll API with OAuth 2.0: Post employee (cpr, name, address, postalNumber, city, employmentDate, seniorityDate), PATCH employee with value, path and op, Get employee details, Delete employee before the first run and Resign employee.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in BambooHR | Field in Zenegy | Notes |
|---|---|---|
nationalId | cpr | Ten digits; checked before sending |
employeeNumber | Personeelsnummer in Zenegy | Otherwise Zenegy derives one from the CPR |
firstName, lastName | name | |
address1, zipcode, city | address, postalNumber, city | |
hireDate | employmentDate | |
originalHireDate | seniorityDate | |
paySchedule | Uitbetalingsperiode (Monthly, Backward, FourteenDays) | |
employmentStatus-tabel (Terminated, date) | Resign employee |
Related
Ashby → BambooHR
Ashby to BambooHR integration: hire, changed start date and employment status in BambooHR
BambooHR → 4PS Construct
BambooHR to 4PS Construct integration: employees from BambooHR in the 4PS company of their location
BambooHR → Active Directory
BambooHR to Active Directory integration: accounts in your own domain from HR
BambooHR → ADP iHCM
BambooHR to ADP iHCM integration: salary, bonuses and commissions to Dutch payroll