BambooHR logoZenegy logo

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.

  1. HR records a new employee with a Danish location in BambooHR.
  2. KoppelHet receives the signed webhook and checks the national ID as a CPR number.
  3. KoppelHet creates the employee in Zenegy with the employee number from BambooHR.
  4. A new pay row goes as a PATCH with only the changed fields, and KoppelHet reads the result back.
  5. A termination in the employmentStatus table becomes a resignation in Zenegy.
BambooHR → KoppelHet → ZenegySOURCEBambooHRTARGETZenegyKoppelHetmapping · logging · monitoringBambooHR → KoppelHet → ZenegySOURCEBambooHRTARGETZenegyKoppelHetmapping · logging · monitoring
Out: Employee with CPR, name and address · Employment date and seniority date · Pay and payout period · Resignation

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, 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 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 BambooHRField in ZenegyNotes
nationalIdcprTen digits; checked before sending
employeeNumberPersoneelsnummer in ZenegyOtherwise Zenegy derives one from the CPR
firstName, lastNamename
address1, zipcode, cityaddress, postalNumber, city
hireDateemploymentDate
originalHireDateseniorityDate
payScheduleUitbetalingsperiode (Monthly, Backward, FourteenDays)
employmentStatus-tabel (Terminated, date)Resign employee

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.