

Payroll to finance
AFAS to 4PS Construct integration: payroll journal per employer in the right 4PS company
With an integration between AFAS Profit and 4PS Construct, the payroll journal entry appears after every approved payroll period as a journal batch in the 4PS company of the right employer, with cost centre and cost unit as a dimension on every line. Finance reviews and posts in 4PS, and nobody has to rework an export file from AFAS any more.
What the integration does
Anyone running payroll in AFAS Profit and financial and project accounting in 4PS Construct converts a journal report in Excel to the 4PS chart of accounts after every period. With several employers that happens per employer, and a cost centre that does not yet exist in 4PS only shows up when the import fails.
- Payroll approves the period and creates the journal in AFAS, as today.
- KoppelHet retrieves that employer's payroll journal entry and translates every AFAS account to the G/L account in 4PS.
- Before sending, KoppelHet checks that every cost centre and cost unit exists in 4PS and that the journal balances to zero.
- The journal then appears as a batch in a dedicated payroll journal in the 4PS company of that employer.
- Finance reviews the batch and posts it in 4PS. If something is missing, the reason per line is shown in the platform.
What to watch for with AFAS Profit and 4PS Construct
- In AFAS the payroll journal entry belongs to an employer, in 4PS to a company. Each employer gets a fixed 4PS company, so the payroll costs of one operating company never land in the books of the other.
- AFAS puts amounts in a debit and a credit column, 4PS expects one amount with a plus or minus per line. KoppelHet turns credit into a negative amount and only sends a journal when it balances to zero.
- Cost centres and cost units from AFAS arrive in 4PS as dimension values on the line. New dimension values cannot be created through the standard API; finance records them in 4PS. KoppelHet reports a missing code before the batch is sent.
- Technicians book their hours in 4PS against projects. The payroll journal therefore posts to G/L account and cost centre, and not again to the project, so payroll costs do not appear twice in project results.
- AFAS no longer supports the old export definitions for external accounting packages. Organisations that use AFAS only for HRM and Payroll often rely on a home-made file; the integration puts the journal straight into a 4PS journal.
- The journal goes into a dedicated payroll journal in 4PS and is not posted automatically by default. Finance posts after review; if finance wants KoppelHet to post directly, that can be set per company.
- Employer, year and period are passed as the document number. If the same period comes out of AFAS again after a correction, KoppelHet sees that a batch with that number already exists and stages the correction separately.
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
Can 4PS not import the payroll journal itself?
With a file it can, but then someone has to produce it per employer from AFAS and convert it to the 4PS chart of accounts. The integration does that translation the same way every period and checks codes beforehand.
Do the hours from 4PS also go to AFAS?
Not in this integration. Hours and allowances from 4PS to payroll is a separate flow that can be added later as an extension.
What if finance has already closed a period in 4PS?
Then posting on that date fails. The batch stays staged and finance decides whether to reopen the period or move the posting date.
Does this also work with 4PS on-premises?
Yes, if the Business Central API in your environment is reachable for the integration. We agree that with your 4PS administrator at the start.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- The payroll journal entry is read from AFAS with a dedicated GetConnector in its own app connector, with OAuth (client credentials). The AFAS classic token expires on 31 August 2027.
- 4PS Construct runs on Microsoft Dynamics 365 Business Central. 4PS is written through the Business Central API v2.0, per company - journals (the batch), journalLines with accountNumber, postingDate, documentNumber, amount (one signed amount) and dimensionSetLines. Posting is possible with the bound action Microsoft.NAV.post on the journal.
- dimensionValues is read-only in the API (GET). Access through an app registration in Microsoft Entra ID with only the permissions needed in the 4PS environment.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in AFAS Profit | Field in 4PS Construct | Notes |
|---|---|---|
Werkgever | Company in 4PS | Fixed mapping per employer |
Rekening in de loonjournaalpost | accountNumber | Through a lookup table to the 4PS chart of accounts |
Debet en credit | amount | One signed amount; credit becomes negative |
Kostenplaats | dimensionSetLines (dimensie kostenplaats) | Code must exist as a dimension value in 4PS |
Kostendrager | dimensionSetLines (tweede dimensie) | Which dimension is agreed with finance |
Periode en jaar | postingDate | Last day of the period, unless finance prefers otherwise |
Werkgever, jaar en periode | documentNumber | So every batch can be traced and not posted twice |
Omschrijving looncomponent | description |
Related
ADP Workforce Now → AFAS Profit
ADP Workforce Now to AFAS integration: Dutch employees from the US HR system in AFAS Profit
AFAS Profit → Adobe Creative Cloud
AFAS to Adobe Creative Cloud integration: users and product profiles from AFAS Profit
AFAS Profit → AG5
AFAS to AG5 integration: employees, employments and absence from AFAS Profit in the skills matrix
AFAS Profit → AllSolutions
AFAS to AllSolutions integration: the AFAS Profit payroll journal posted in AllSolutions