BambooHR logoADP iHCM logo

Payroll integration

BambooHR to ADP iHCM integration: salary, bonuses and commissions to Dutch payroll

With an integration between BambooHR and ADP iHCM NL, salary changes, bonuses, commissions and terminations of Dutch employees from BambooHR reach ADP automatically, in the pay period they belong to. HR only works in BambooHR, and payroll no longer copies any amounts.

What the integration does

Organisations that do HR in BambooHR and have Dutch payroll processed in ADP iHCM export a report every month and enter bonuses and commissions into ADP by hand. A bonus HR enters after the export only reaches the payslip a month later.

  1. ADP or payroll creates the new worker in iHCM; KoppelHet links it once to the BambooHR employee.
  2. BambooHR reports a new salary or a leaver; KoppelHet fetches the compensation table.
  3. The salary goes to the employment in ADP with its effective date.
  4. New bonus and commission rows go as a variable amount to the ADP period of the date they were earned.
  5. A termination in BambooHR ends the employment in ADP.
BambooHR → KoppelHet → ADP iHCMSOURCEBambooHRTARGETADP iHCMKoppelHetmapping · logging · monitoringBambooHR → KoppelHet → ADP iHCMSOURCEBambooHRTARGETADP iHCMKoppelHetmapping · logging · monitoring
Out: Link between BambooHR employee and ADP worker · Salary with effective date and unit · Bonuses and commissions per pay period · Termination · Number of every submission to ADP

What to watch for with BambooHR and ADP iHCM

  • For a changed employee BambooHR always returns all rows of a table, even if only one field changed. KoppelHet therefore compares the bonus and commission rows with what has already been sent to ADP, so an old bonus is not paid again.
  • Bonuses and commissions are kept in BambooHR in their own tables with the amount and the date they were earned. ADP only links an amount to a run if the start and end date of the period match exactly. KoppelHet looks up the pay group period for that date and sends it along.
  • BambooHR records a salary with a unit such as hour, week or year. ADP iHCM knows an amount and a salary code for salary. KoppelHet translates the unit to that code, and holds back an amount in dollars, because BambooHR is often set up from the United States.
  • BambooHR webhooks report changes to regular fields, but not to custom tables. An organisation that keeps bonuses in a custom table gets no notification for them; KoppelHet reads that table hourly for changes.
  • If HR changes a bonus that has already gone to ADP, the difference goes to ADP, for example minus fifty. If the submission has not been processed yet, KoppelHet replaces it; ADP then rejects the whole submission if one line is wrong, so KoppelHet checks all lines first.
  • Commissions have no reason of their own in BambooHR, bonuses do. Each type gets its own variable field of the pay group in ADP, so payroll in iHCM can see what is a bonus and what is a commission.
  • BambooHR retries a failed notification up to five times, the last after forty minutes. After that KoppelHet fetches the compensation table at the check before the cut-off, so a missed salary change still reaches ADP in time.

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 the integration create new workers in ADP?

No. ADP's public iHCM guides have no API for that. ADP or payroll creates the worker, after which the integration keeps it up to date.

What if a bonus is entered after the cut-off?

It then goes to the next period, and payroll sees that in the check. ADP marks a back-dated bonus as such itself.

Technical details for IT

For those who want to know how it works under the hood: APIs, fields and sources used.

  • BambooHR through permissioned webhooks (HTTPS, HMAC-SHA256 with X-BambooHR-Timestamp and X-BambooHR-Signature; up to five retries after 0, 5, 10, 20 and 40 minutes; fields in custom tables not supported) and GET /api/v1/employees/changed/tables/{table}?since= for compensation, bonus, commission and employmentStatus. Fields include employeeNumber, payRate, paidPer, paySchedule; bonus with amount, date, reason and comment.
  • ADP iHCM through event notifications (worker.hire), the Base Remuneration Change API (2416 and 2417, one event per call), the Pay Data Input API for iHCM NL (.add with batch ID in events/data/output/payDataInput/itemId; .replace with all fields, all or nothing) and the Worker Terminate API. Every URI in the Consumer Application Registry (CAR).

Which fields are transferred

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

Field in BambooHRField in ADP iHCMNotes
employeeNumberpayrollfilenumberLinked once to the associateOID
paySchedulepayrollGroupCodeLookup per pay schedule
Compensatie: rate2417 salarisbedragEuro only
Compensatie: paidPer2416 salariscodeHour, month or year to the ADP code
Compensatie: startDateeffectiveDateTime
Bonustabel: amount en dateearningCode Vxxx en earnedPayPeriodStartDate
Commissietabel: amount en dateearningCode Vxxx (eigen veld)
Employment status: date bij status beëindigdworker.terminate

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.