

Payroll integration
Zoho People to AFAS integration: new hires and changes to Dutch payroll
With an integration between Zoho People and AFAS Profit, new employees from Zoho People arrive in AFAS with contract, schedule, salary and bank account, and changes and departures follow with their effective date. HR manages employees in Zoho People, payroll runs in AFAS and retypes nothing.
What the integration does
Organisations that already use Zoho software and chose Zoho People as HR system often run payroll for their Dutch employees in AFAS Profit. HR changes fields in Zoho People, and payroll copies those changes into AFAS by hand.
- HR records a new employee or change in Zoho People; a workflow sends a webhook to KoppelHet.
- KoppelHet fetches the full record, with its tabular sections, and translates the fields to AFAS.
- A new employee starts the onboarding process in AFAS with contract, schedule and salary.
- A change goes to the right part of AFAS with the effective date from Zoho People.
- Every hour KoppelHet fetches records changed since the previous round, in case a webhook did not arrive.
What to watch for with Zoho People and AFAS Profit
- In Zoho People the employee is a form the administrator adjusts. Fields for hours, salary, BSN and IBAN are usually custom fields with their own name. At the start we record per customer which field goes where; if the administrator removes or renames a field, KoppelHet reports it instead of sending an empty field to AFAS.
- A request in Zoho People returns at most two hundred records at a time and can filter on records added or changed after a timestamp. KoppelHet stores that timestamp after every round and next time only requests the difference.
- Anyone sending more than four hundred requests per minute to Zoho People is locked out for five minutes. That also affects other integrations on the same environment. KoppelHet therefore stays well below that limit, also during the initial load of all employees into AFAS.
- Data with history, such as salary rows, is often held in a tabular section of the form in Zoho People, with its own row id. KoppelHet reads all rows and writes the row valid on the effective date as salary in AFAS, so a rise from next month is also in AFAS with that date.
- Webhooks in Zoho People run through a workflow on the form, and failed webhooks stay in Zoho with a button to resend them. KoppelHet does not rely on that alone and fetches the changes itself every hour, so a missed notification does not become a missed payroll change.
- The Zoho People API is included in the Essential HR, Professional, Premium and Enterprise plans. At the start we check the plan, because otherwise AFAS cannot receive data from Zoho People.
- Zoho People can look up an employee by employee ID or by email address. On the first connection we use that to compare every employee already in AFAS with Zoho People, so nobody ends up twice in AFAS.
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 work with our own fields in Zoho People?
Yes. We read fields by their internal name and record at the start which ones go to AFAS. A new field is included when you ask for it.
Does leave from Zoho People also go to AFAS?
Not in the first version. Leave and attendance can be added later as an extension, if payroll needs them in AFAS.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Zoho People is read through the Zoho People API with OAuth 2.0 (Self Client in the Zoho Developer Console, header Authorization Zoho-oauthtoken, scope ZOHOPEOPLE.forms.READ). Records through GET /people/api/forms/employee/getRecords with sIndex, limit (at most 200) and modifiedtime (timestamp in milliseconds); search with SearchColumn EMPLOYEEID or EMPLOYEEMAILALIAS. Tabular sections come back in tabularSections. Threshold of four hundred requests per minute, then a five-minute lock.
- AFAS is written through the HrOnboarding UpdateConnector for new employees and KnEmployee (AfasContract, AfasTimeTable, AfasSalary, AfasBankInfo) for changes.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Zoho People | Field in AFAS Profit | Notes |
|---|---|---|
EmployeeID | Medewerker (EmId) | Fixed key |
FirstName, LastName | Voornaam, voorvoegsel en achternaam | Split the name prefix |
Geboortedatum en adresvelden | Persoonsgegevens en woonadres | |
Datum in dienst | Begindatum contract | |
Employeestatus en vertrekdatum | Einddatum contract | |
Afdeling (lookup) | Organisatorische eenheid en kostenplaats | Through a lookup table |
Eigen velden voor uren, salaris, BSN en IBAN | Rooster, salaris, BSN en bankrekening | Field names per customer |
Related
Recruitee → Zoho People
Recruitee to Zoho People integration: hired candidates in the Zoho People employee form
Teamtailor → Zoho People
Teamtailor to Zoho People integration: hired candidates as a record in the Zoho People employee form
Zoho People → Active Directory
Zoho People to Active Directory integration: HR drives the domain account, not the other way round
Zoho People → Arbodienst (SIVI)
Zoho People to the occupational health service via SIVI: sick leave records as absence reports