
Payroll to finance
AFAS to Coupa integration: users with approval rights from AFAS, expenses back into the payroll run
With an integration between AFAS Profit and Coupa, every employee from AFAS is automatically a Coupa user, with employee number, manager and cost centre, and expense reports approved for payment in Coupa go to the next AFAS payroll run. A leaver becomes inactive in Coupa after the last working day, so no requests or approvals run in that name any more.
What the integration does
Organisations that run payroll in AFAS Profit and handle purchasing and expenses in Coupa maintain users and approvers in Coupa by hand. A change of manager in AFAS often reaches Coupa too late, so the wrong person approves, and approved expenses are retyped as a mutation in AFAS every month.
- A new employee in AFAS becomes a Coupa user with login, email, employee number, manager and default cost centre, and the expense licence.
- A different manager or cost centre in AFAS carries through to Coupa. After the last working day the integration sets the user to inactive.
- Up to the cut-off date of the payroll period KoppelHet fetches the expense reports approved for payment and not yet exported.
- Per employee the total goes to AFAS as a pay component, with the Coupa expense report number attached; the integration then marks the expense report in Coupa as exported.
Back: Expense reports approved for payment go to AFAS as a pay component
What to watch for with AFAS Profit and Coupa
- In Coupa login and email are mandatory and unique, and the employee number is unique too. KoppelHet checks AFAS beforehand for duplicate work email or a reused number, so Coupa does not silently refuse a new employee.
- Coupa works with licence flags per user, for expenses, purchasing, invoices and more. The integration only switches on the expense licence; anyone who also buys or approves invoices gets those rights through Coupa administration, so the integration hands out no licences nobody intended.
- Approval limits sit on the user in Coupa, separately for expenses, requisitions and invoices. A job change in AFAS adjusts the expense limit through a table maintained by finance, so a promoted manager can approve the right amounts straight away.
- Coupa sets per user through which channel expenses are paid; by default that is the ERP, but it can also be Coupa Pay. For payment through the AFAS payroll run the ERP channel must stay, otherwise Coupa pays itself and the employee receives the amount twice.
- A user in Coupa can only be fetched through the API by its own Coupa ID. KoppelHet stores that ID with each AFAS employee as soon as the user is created, so a change or departure always lands on the right user.
- Coupa allows fetching expense reports that are approved for payment and not yet exported. After processing in AFAS, KoppelHet marks them as exported, and the Coupa expense report number goes along as a reference with the pay component, as Coupa itself recommends.
- If your organisation uses single sign-on for Coupa, the integration sets the login method to SAML with the SSO ID from the identity provider, instead of having a password invitation sent.
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
Do requisitions and invoices also go to AFAS?
No. Only employee expense reports run through payroll. Purchasing and invoices belong in the financial administration.
Who decides an employee's approval limit?
Finance, in a table per job or level. The integration applies the limit as soon as the job changes in AFAS.
Can cost centres also go from Coupa to AFAS?
That can be added later as an extension. In this integration AFAS is the source for an employee's default cost centre.
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 GetConnector on employees, employments and jobs, filtered on change date. Expense reimbursements go to AFAS through the UpdateConnector HrCompMut, as a pay component in the current period.
- To Coupa through the Users API (POST /api/users, PUT /api/users/:id) with login, email, employee_number, firstname, lastname, manager, default_account, expense_user, expense_approval_limit, employee_payment_channel, authentication_method (saml) and sso_identifier, and active for departures.
- Expense reports through GET /api/expense_reports?status=approved_for_payment&exported=false, then marked as exported. Statuses in Coupa include approved_for_payment, scheduled_for_payment and paid.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in AFAS Profit | Field in Coupa | Notes |
|---|---|---|
Medewerkernummer | employee_number | Unique in Coupa |
E-mail werk | login en email | Both mandatory and unique |
Leidinggevende | manager | |
Kostenplaats | default_account | |
Functie of functieniveau | expense_approval_limit | Through a table finance maintains |
Datum uit dienst | active = false | |
Vaste waarde | expense_user = true en employee_payment_channel = ERP | |
Totaal per declarant uit Coupa | Looncomponent onkostenvergoeding (HrCompMut) | With the Coupa expense report number as reference |
Related
ADP Workforce Now → AFAS Profit
ADP Workforce Now to AFAS integration: Dutch employees from the US HR system in AFAS Profit
AFAS Profit → 4PS Construct
AFAS to 4PS Construct integration: payroll journal per employer in the right 4PS company
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