HR to ERP
Personio to Coupa integration: Personio employees as Coupa users with cost centre and approver
With an integration between Personio and Coupa, every employee from Personio becomes a Coupa user, with employee number, department, the supervisor as manager and a default account from the cost centre in Personio. A different cost centre or supervisor in Personio carries through to Coupa, and after the last working day the user becomes inactive.
What the integration does
Organisations that use Personio as their HR system and Coupa for purchasing and expenses often maintain Coupa users with CSV imports. A changed cost centre in Personio then only reaches Coupa with the next import, and requests from those weeks land on the old account.
- Personio reports a change; KoppelHet acknowledges straight away and puts the request in a queue.
- KoppelHet fetches the employment with cost centres, department and supervisor.
- Department, manager, account and content group are checked for existence in Coupa.
- The user is created or updated on the stored Coupa ID.
- After the last working day KoppelHet sets the user to inactive.
What to watch for with Personio and Coupa
- Personio sometimes splits an employment over several cost centres with a weight. A Coupa user has one default account. KoppelHet picks the cost centre with the largest weight as default; requesters can still choose another account per line in Coupa.
- Personio has its own webhook for a changed cost split, separate from other employment changes. KoppelHet uses it to update only the default account in Coupa, so a correction by finance does not also resend manager and department.
- Personio expects an acknowledgement of each webhook within three seconds and otherwise retries for up to three days. Coupa can respond more slowly, and creating a user requires checks first. KoppelHet therefore acknowledges at once and processes the change afterwards, so Personio does not send duplicate notifications.
- A move to another entity appears in Personio as a termination with the type company switch, followed by a new employment. In Coupa that is the same person who only gets a different content group and account. KoppelHet therefore does not deactivate the user for this type, but updates it, so open requests and approvals stay in place.
- On a termination Personio gives both the end date of the employment and the last working day. Someone taking leave in the final weeks therefore stops working before the end date. KoppelHet sets the Coupa user to inactive after the last working day, so no requests run under that name after the departure.
- The supervisor is stored in Personio as the ID of another person. Coupa only accepts a manager who is already a user. KoppelHet looks up the supervisor's work email, creates a new supervisor first and only then the employees below them.
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 approved expenses from Coupa go back to payroll?
Not in this integration. That is a separate flow that can be added later as an extension.
What if finance does not have a cost centre in Coupa yet?
Then the old default account stays and finance gets an alert. KoppelHet does not create accounts in Coupa.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Personio through webhooks (employment.created, employment.updated, employment.updated.cost-centers, employment.terminated; IDs only, 2xx within 3 seconds, retried for up to 3 days) and the v2 API for persons and employments (legal_entity, supervisor, org_units, cost_centers with weight, termination with last_working_day and type SUB_COMPANY_SWITCH).
- Coupa through the Users API - POST /api/users and PUT /api/users/:id on the stored Coupa ID, with login, email, employee-number, firstname, lastname, department, manager, default-account, content-groups, default-currency, licence flags such as expense-user, authentication-method with sso-identifier, and active.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Personio | Field in Coupa | Notes |
|---|---|---|
Werkmail van de persoon | login en email | Both unique |
Personeelsnummer (attribuut in Personio) | employee-number | |
org_units (type department) | department | |
supervisor.id | manager | Through the supervisor's work email |
cost_centers (hoogste weight) | default-account | Finance table |
legal_entity.id | content-groups en default-currency | Table per entity |
termination.last_working_day | active = false |
Related
Ashby → Personio
Ashby to Personio integration: hires with hours and entity as new employees in Personio
Bullhorn → Personio
Bullhorn to Personio integration: placements as a person with employment in Personio
Carerix → Personio
Carerix to Personio integration: successful placement as a new employee in Personio
Greenhouse → Personio
Greenhouse to Personio integration: hired candidates as employees in Personio