Payroll integration
Sage HR to ADP iHCM integration: compensation and leavers from Sage HR to Dutch ADP payroll
An integration between Sage HR and ADP iHCM passes new salary rows, other compensation rows and terminations from Sage HR to Dutch payroll in ADP iHCM. Employees who already exist in ADP get their salary and end date without retyping; creating a new employee in ADP remains work for payroll.
What the integration does
Organisations that use Sage HR for employee records and leave, and process Dutch salaries at ADP iHCM, keep compensation in Sage HR and enter changes in ADP by hand. A terminated employee disappears from the regular list in Sage HR, and is therefore sometimes terminated too late in ADP.
- HR records a compensation row in Sage HR or ends an employment.
- KoppelHet reads compensation per employee and the list of terminated employees, and compares with the previous state.
- A new row with category salary goes to ADP as a salary change; other categories as a variable line.
- A newly terminated employee starts the termination in ADP.
- KoppelHet puts the ADP employee number in a custom field in Sage HR.
What to watch for with Sage HR and ADP iHCM
- Sage HR only returns compensation per employee, not for everyone at once. KoppelHet therefore goes through the employees with an ADP number and compares their rows with the previous run; only a new or changed row goes to ADP.
- A compensation row in Sage HR has a category, such as Salary, with amount, currency, period and start and end date. KoppelHet sends the Salary category to ADP as a salary change and translates the other categories with a table to variable fields of the pay group.
- An employee who leaves disappears from the regular list in Sage HR and then appears in a separate list of terminated employees, with a termination date. KoppelHet reads that separate list, because otherwise a leaver just seems to have vanished and stays on pay in ADP.
- Sage HR can rehire a terminated employee under the same ID, with a new start date. If someone returns while the termination in ADP has not been processed yet, KoppelHet cancels it; if it has been processed, payroll gets a notification to create a new employment in ADP.
- Sage HR has no field for the legal employer. KoppelHet uses a team or a custom field to decide which employees belong in ADP, and writes the ADP employee number back into a custom field, so HR sees in Sage HR who is linked.
- The Sage HR API has no webhooks and returns lists in pages of fifty. KoppelHet therefore reads all pages a few times a day, and runs a full comparison before the ADP submission date.
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
Is Sage HR not too small for ADP?
Sage HR also runs at larger organisations for records and leave. The integration works the same; only the number of calls grows with the number of employees.
Does the integration create new employees in ADP?
No. Payroll creates the employee in ADP; KoppelHet then links them and puts the number in Sage HR.
Which compensation categories go along?
Salary, and the categories we link to a variable field in ADP with payroll at the start. The rest stays in Sage HR.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Sage HR API at {subdomain}.sage.hr/api with the X-Auth-Token header: GET /employees (with team_history, employment_status_history, position_history), GET /employees/{id}/compensations (start_date, end_date, currency, amount, period, category), GET /terminated-employees (termination_date), POST /employees/{id}/rehire (date, start_fresh) and PUT /employees/{id}/custom-fields/{custom_field_id}. Pagination per 50; no webhooks.
- ADP iHCM through GET /hr/v2/workers, the Base Remuneration Change API (2416 and 2417), the Pay Data Input API for iHCM NL and the Worker Terminate API (worker.terminate, worker-termination.cancel). Canonicals in the Consumer Application Registry (CAR).
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Sage HR | Field in ADP iHCM | Notes |
|---|---|---|
Eigen veld ADP-nummer | payrollfilenumber | KoppelHet fills the field |
Team of eigen veld werkgever | payrollGroupCode | Lookup |
compensation: category Salary, amount, period | Salarisbedrag 2417 en salariscode 2416 | |
compensation: start_date | effectiveDateTime van de salariswijziging | |
compensation: andere category, amount, start_date | Variabel veld (Vxxx) via Pay Data Input | Lookup per category |
terminated-employees: termination_date | Beëindiging in worker.terminate |
Related
Recruitee → Sage HR
Recruitee to Sage HR integration: hired candidates as employees in Sage HR
Sage HR → Active Directory
Sage HR to Active Directory integration: domain accounts per team, with an expiry date from the termination
Sage HR → AFAS Profit
Sage HR to AFAS integration: employees of the Dutch entity in AFAS Profit Payroll
Sage HR → Arbodienst (SIVI)
Sage HR to the occupational health service via SIVI: time off requests of the sickness policy as absence reports