
Payroll integration
Sympa to AFAS integration: new hires, contracts and salary to Dutch payroll
With an integration between Sympa and AFAS Profit, a new employee from Sympa arrives in AFAS as an employee with contract, schedule and salary, and approved changes follow with their effective date. Payroll only completes the Dutch payroll tax details and no longer copies anything from Sympa.
What the integration does
Groups that use Sympa as HR system in all countries and run payroll for a Dutch entity in AFAS Profit record new employees twice, first in Sympa and then in AFAS. Pay rises approved in Sympa sometimes reach AFAS a month late.
- The Sympa administrator creates an API interface with only the fields payroll needs.
- Every hour KoppelHet requests the employees changed since the previous round, and only their approved rows.
- A new employee arrives in AFAS with contract, schedule, salary and cost centre. Payroll completes payroll tax credit and other tax choices.
- A salary or hours change goes to AFAS with the effective date from Sympa, also when it lies in the future.
- An end date in Sympa closes the contract in AFAS.
What to watch for with Sympa and AFAS Profit
- An API interface in Sympa has no fixed field list; the administrator chooses which fields it contains. We set up an interface with only what payroll needs, so reviews and other HR records stay outside the integration.
- Sympa allows one hundred requests per hour per interface by default, for reading and writing combined. KoppelHet therefore requests only changed employees, in large pages, and schedules the initial load of all employees outside office hours.
- Table rows in Sympa, such as salary and working time, can have a validity period. KoppelHet reads the row that applies on the effective date, so a rise from the first of next month also lands in AFAS with that date.
- A table row in Sympa can still be awaiting approval or have been declined. Only approved rows go to AFAS; a row that is still waiting follows once it has been approved.
- Sympa reads from a reporting database that lags slightly, usually less than a minute and sometimes up to half an hour. The check before the cut-off therefore runs with some margin, so a last-minute change is not missed.
- AFAS works with hours and days per week and needs a step for a scale salary. Sympa environments set up for several countries do not hold these; the number of days is agreed per customer and payroll completes the step.
- Sympa's activity log only shows the last ten requests. What went to AFAS per employee is therefore recorded in the logging of the KoppelHet platform.
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 the integration see everything in Sympa?
No. The administrator decides in Sympa which fields the interface contains. We only ask for the data needed for payroll.
What if a pay rise in Sympa has not been approved yet?
Then the integration waits. Once the row is approved, it goes to AFAS with its effective date and AFAS settles any difference in the next run.
Does anything go back to Sympa?
Not by default. Sympa can receive data through the same API; whether the AFAS employee number should go back, for example, is agreed per customer.
What about the GDPR?
You are the controller and KoppelHet is the processor, under a data processing agreement. The Sympa interface only holds the fields for payroll, and every action of the integration is in the audit logging.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Sympa is read through the Sympa Integration API (OData v4, JSON) on an interface the administrator creates in the API panel, with X-ApiKey or basic authentication. Changed employees with $filter on modified, paging with $top and $skip, valid table rows with since, until or at, and approved rows with $expand and Approval eq 5. Throttling by default one hundred requests per hour per interface.
- 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 Sympa | Field in AFAS Profit | Notes |
|---|---|---|
Personeelsnummer (uniek veld van de interface) | Medewerker (EmId) of vrij veld | Fixed key |
Voornaam en achternaam | Voornaam (FiNm), voorvoegsel (Is) en achternaam (LaNm) | Split the name prefix |
Persoonsnummer (BSN) | BSN (SoSe) | Only if it is recorded in Sympa |
Startdatum dienstverband | Begindatum contract (DaBe) | |
Einddatum dienstverband | Einddatum contract (DaEn) | |
Uren per week (tabelregel met geldigheid) | Aantal uren per week (HrWk) | |
Salaris (tabelregel met geldigheid) | Salaris (EmSa) en soort salaris | |
Organisatie-eenheid (doelveld kostenplaatscode) | Kostenplaats | Through a lookup table |
Bankrekening | Bankgegevens (AfasBankInfo) |
Related
Greenhouse → Sympa
Greenhouse to Sympa integration: hired candidate as a data card with contract row in Sympa
Recruitee → Sympa
Recruitee to Sympa integration: hired candidates as a data card in Sympa
SmartRecruiters → Sympa
SmartRecruiters to Sympa integration: ready to onboard becomes a data card in Sympa
Sympa → 4PS Construct
Sympa to 4PS Construct integration: fitters of the Dutch employer from Sympa in 4PS, with cost centre as a dimension