AFAS Profit logo4PS Construct logo

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.

  1. Payroll approves the period and creates the journal in AFAS, as today.
  2. KoppelHet retrieves that employer's payroll journal entry and translates every AFAS account to the G/L account in 4PS.
  3. Before sending, KoppelHet checks that every cost centre and cost unit exists in 4PS and that the journal balances to zero.
  4. The journal then appears as a batch in a dedicated payroll journal in the 4PS company of that employer.
  5. Finance reviews the batch and posts it in 4PS. If something is missing, the reason per line is shown in the platform.
AFAS Profit → KoppelHet → 4PS ConstructSOURCEAFAS ProfitTARGET4PS ConstructKoppelHetmapping · logging · monitoringAFAS Profit → KoppelHet → 4PS ConstructSOURCEAFAS ProfitTARGET4PS ConstructKoppelHetmapping · logging · monitoring
Out: Payroll journal entry per employer and period · G/L accounts in 4PS · Cost centre and cost unit as dimension · Company per employer

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, 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

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 ProfitField in 4PS ConstructNotes
WerkgeverCompany in 4PSFixed mapping per employer
Rekening in de loonjournaalpostaccountNumberThrough a lookup table to the 4PS chart of accounts
Debet en creditamountOne signed amount; credit becomes negative
KostenplaatsdimensionSetLines (dimensie kostenplaats)Code must exist as a dimension value in 4PS
KostendragerdimensionSetLines (tweede dimensie)Which dimension is agreed with finance
Periode en jaarpostingDateLast day of the period, unless finance prefers otherwise
Werkgever, jaar en periodedocumentNumberSo every batch can be traced and not posted twice
Omschrijving looncomponentdescription

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.