AFAS Profit logoSage Intacct logo

Payroll to finance

AFAS to Sage Intacct integration: the payroll journal of every AFAS employer as a journal entry in Intacct

With an integration between AFAS Profit and Sage Intacct, the payroll journal of every closed payroll period arrives in Sage Intacct automatically as a journal entry, on the entity that belongs to the AFAS employer and split by department and account. Finance sees the journal as a draft and posts it themselves, instead of converting an AFAS export to Intacct's import format.

What the integration does

Organisations that run Dutch payroll in AFAS Profit and belong to a group that books in Sage Intacct send a payroll journal to the group controller after every period. The controller converts debit and credit, finds the right entity and department and imports the file, often days after the payroll run.

  1. Payroll closes the period in AFAS, as today.
  2. KoppelHet fetches that employer's journal and sums the lines per account and cost centre.
  3. KoppelHet checks whether every account and department exists in Intacct and accepts postings.
  4. The journal goes to Intacct as a draft, on the employer's entity and with period and employer in the title.
  5. Finance checks and posts the journal in Intacct.
AFAS Profit → KoppelHet → Sage IntacctSOURCEAFAS ProfitTARGETSage IntacctKoppelHetmapping · logging · monitoringAFAS Profit → KoppelHet → Sage IntacctSOURCEAFAS ProfitTARGETSage IntacctKoppelHetmapping · logging · monitoring
Out: Payroll journal per employer and period · GL accounts in Intacct · Departments (DEPARTMENT) and optionally class or project · Entity (LOCATION) per AFAS employer · Journal entry as a draft

What to watch for with AFAS Profit and Sage Intacct

  • AFAS puts debit and credit in separate columns. Sage Intacct wants a positive amount per line with an indicator for debit or credit. KoppelHet turns every AFAS line into one Intacct line with the right indicator, and skips lines that net to zero after summing.
  • If the group uses several entities in Intacct, Intacct asks for the entity on every journal line. KoppelHet records per AFAS employer which entity that is, so the payroll journal of the Dutch entity never lands on the books of a sister company.
  • Intacct posts a journal entry arriving through the API immediately by default. KoppelHet sends the payroll journal as a draft, so finance sees it first and posts it themselves. If finance wants direct posting, that is a setting in the integration.
  • A department in Intacct can be active, inactive or active but non-posting. KoppelHet fetches the departments beforehand and holds the journal if an AFAS cost centre points to a department that does not accept postings, with an alert to payroll.
  • Sage Intacct warns that a journal entry with thousands of lines can time out. The payroll journal therefore arrives summed per account, department and cost unit, not per employee. That keeps the journal small and puts no individual pay into the group's financial system.
  • If a line leaves the description empty, Intacct takes over the journal title. KoppelHet puts employer, year and period in the title, and the AFAS journal number as reference, so every posting in Intacct can be traced back in AFAS.
  • If multi-currency is enabled in Intacct, for example because the parent reports in dollars or pounds, Intacct asks for a currency per line. KoppelHet passes the AFAS amounts in euro; the conversion happens in Intacct with the rate type finance chooses.

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 finance in Intacct see what individual employees earn?

No. Intacct only holds totals per account and department. The detail per employee stays in AFAS.

Can departments from Intacct also go to AFAS?

That can be added later as an extension. In this integration KoppelHet only checks whether the AFAS cost centres exist in Intacct.

Can finance still adjust the journal before posting?

Yes. The journal is a draft in Intacct. Finance can review and adjust it before it is posted.

Technical details for IT

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

  • AFAS is read with a dedicated GetConnector on the payroll journal per employer and period, with account, analysis dimension (cost centre and cost unit) and debit or credit amount.
  • To Sage Intacct through the XML API, function create on object GLBATCH with JOURNAL, BATCH_DATE (mm/dd/yyyy), BATCH_TITLE, REFERENCENO, STATE (Draft or Posted, default Posted) and ENTRIES with GLENTRY (ACCOUNTNO, TR_TYPE 1 or -1, TRX_AMOUNT absolute, DESCRIPTION, DEPARTMENT, LOCATION, PROJECTID or CLASSID, CURRENCY and EXCH_RATE_TYPE_ID with multi-currency). At least two lines; BASELOCATION_NO if the journal does not balance per entity.
  • Departments through query on object DEPARTMENT (DEPARTMENTID, TITLE, STATUS active, active non-posting or inactive).

Which fields are transferred

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

Field in AFAS ProfitField in Sage IntacctNotes
GrootboekrekeningACCOUNTNOThrough a lookup table if the charts of accounts differ
Debet of creditTR_TYPE (1 of -1) en TRX_AMOUNTAmount always positive
Kostenplaats (verbijzondering)DEPARTMENT
KostendragerPROJECTID of CLASSIDAgreed per customer
WerkgeverLOCATION (entity) per regel
Laatste dag van de periodeBATCH_DATE (mm/dd/yyyy)
Werkgever, jaar en periodeBATCH_TITLE en REFERENCENO

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.