Darwinbox logoAFAS Profit logo

Payroll integration

Darwinbox to AFAS integration: Dutch employees from Darwinbox in AFAS payroll

With an integration between Darwinbox and AFAS Profit, new employees, salary changes and approved terminations of the Dutch entity reach AFAS automatically from Darwinbox, with the effective date recorded in Darwinbox. Payroll in the Netherlands no longer retypes anything from Darwinbox and only adds the Dutch payroll concepts Darwinbox does not hold.

What the integration does

International organisations that run HR globally in Darwinbox and Dutch payroll in AFAS Profit often receive new Dutch colleagues and pay rises as an email or export from headquarters. Payroll enters them in AFAS by hand and sometimes only hears about a withdrawn resignation after the run.

  1. HR records a new employee, a compensation change or a departure in Darwinbox.
  2. KoppelHet fetches the changed employees daily and keeps only those of the Dutch group company.
  3. A new employee reaches AFAS with personal data, contract, job, department, schedule and salary.
  4. A new base salary gets the effective date of the component in Darwinbox in AFAS.
  5. Only when the departure is approved in Darwinbox does KoppelHet set the end date on the AFAS contract.
Darwinbox → KoppelHet → AFAS ProfitSOURCEDarwinboxTARGETAFAS ProfitKoppelHetmapping · logging · monitoringDarwinbox → KoppelHet → AFAS ProfitSOURCEDarwinboxTARGETAFAS ProfitKoppelHetmapping · logging · monitoring
Out: Employee with personal data and address · Employment with hire date · Job, department and cost centre · Base salary with effective date · Approved termination

What to watch for with Darwinbox and AFAS Profit

  • Darwinbox returns compensation as a breakdown into components, and each component has its own effective date and currency. AFAS holds one amount in euro per salary line. KoppelHet only takes the component agreed as base salary and reports a component in another currency instead of converting it.
  • A departure in Darwinbox has the status approved, pending or revoked. Only an approved departure sets an end date in AFAS. If a departure is revoked after it was passed on, payroll gets an alert to remove the end date in AFAS.
  • Darwinbox records the country per group company. KoppelHet only sends employees of the Dutch group company to AFAS, and with two Dutch entities each to its own AFAS employer.
  • Which fields Darwinbox returns through the API depends on the dataset Darwinbox sets up for the API key. BSN, IBAN and the Dutch address must be in it; if one is missing, payroll completes it in AFAS and KoppelHet does not hold the employee back.
  • If a hire is deleted in Darwinbox before the employee starts, it appears on the list of deleted employees. KoppelHet compares that list with AFAS and reports an employee who was already created there, so no payslip is made for someone who never started.
  • Darwinbox can receive payslips as a PDF, per pay cycle and with gross, deductions and net. If you want, KoppelHet puts the AFAS payslip back into Darwinbox after the run, so Dutch employees find it in the same app as their colleagues elsewhere.
  • Darwinbox returns dates in several formats, such as 07-Aug-2019 next to 07-08-2019. KoppelHet converts them to the format AFAS expects, so a month and a day are not swapped.

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

What do we need to request from Darwinbox?

API access to the Employee Core and Compensation outbound APIs, and a dataset with the fields AFAS needs. Darwinbox enables that on request; ask for it early in the project.

What does payroll fill in AFAS itself?

Collective agreement, scale and step, payroll tax credit and pension. Darwinbox does not know these Dutch concepts, and the integration does not overwrite them.

What happens to a retroactive pay rise?

The component in Darwinbox has its own effective date. It goes along to AFAS, and AFAS settles the difference in the next run.

Technical details for IT

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

  • Darwinbox is read through the Employee Core outbound APIs (masterapi/employee with datasetKey and last_modified, getDeletedEmployees, separationDetails with separation_status, orgmasterapi/groupcompanylist) and the Compensation API componentctcbreakup (per component effective_date, currency, is_latest; filter group_company). Authentication with basic auth plus an api_key per endpoint, or OAuth 2.0 with client credentials. Darwinbox only enables API access on request.
  • Payslips back through Payrollapi/AddComponentPayslip (PDF as base64, period as pay cycle code, gross, deduction, net).
  • AFAS is written through the KnEmployee UpdateConnector, with AfasContract, AfasTimeTable, AfasSalary and AfasBankInfo.

Which fields are transferred

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

Field in DarwinboxField in AFAS ProfitNotes
employee_idMedewerker (EmId) of vrij veldFixed key between both systems
first_name, middle_name, last_nameVoornaam, voorvoegsel en achternaamSplit the name prefix
date_of_birthGeboortedatum
date_of_joiningBegindatum contract (DaBe)Date format converted
designation_nameFunctie (FuId)Through a lookup table
department_nameOrganisatorische eenheid (DpId)Through a lookup table
cost_centerKostenplaats
ctc_break_up: component basissalaris (value, effective_date)Salaris (EmSa) met ingangsdatumWhich component is the base salary is agreed per customer
Contract Termination Date (separation_status Approved)Einddatum contract (DaEn)

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.