HiBob logoCoupa logo

HR to ERP

HiBob to Coupa integration: Bob employees as Coupa users with department, manager and default account

With an integration between HiBob and Coupa, every employee from Bob becomes a user in Coupa, with work email, employee number, department, manager as approver and a default account for requests and expenses. A transfer in Bob updates Coupa on the effective date, and a departure sets the Coupa user to inactive.

What the integration does

Organisations that use HiBob as their HR system and Coupa for purchasing, invoices or expenses often create new colleagues in Coupa by hand. A new manager in Bob then stays outside the approval route for weeks, and people who have left can still submit requests.

  1. Bob reports a new or changed employee; KoppelHet fetches only the fields Coupa needs.
  2. KoppelHet checks whether department, manager and account already exist in Coupa.
  3. Managers go first, then the employees reporting to them.
  4. The user is created or updated; KoppelHet stores the Coupa ID with the employee from Bob.
  5. After the departure in Bob KoppelHet sets the user in Coupa to inactive.
HiBob → KoppelHet → CoupaSOURCEHiBobTARGETCoupaKoppelHetmapping · logging · monitoringHiBob → KoppelHet → CoupaSOURCEHiBobTARGETCoupaKoppelHetmapping · logging · monitoring
Out: User with login, work email and employee number · Department and manager · Default account and default currency · Licences per user · Active or inactive

What to watch for with HiBob and Coupa

  • Bob's search API only filters on ID or email address, and Coupa's Users API documents the active status as its only filter. Neither therefore searches on employee number. KoppelHet therefore stores the Coupa ID with every employee from Bob, so a change always lands on the right user.
  • Bob silently leaves out fields the service user cannot read and still answers 200 OK. Coupa does expect a department and a manager for a new user. KoppelHet compares every response with the requested fields and stops with an alert if the department or the manager is missing, instead of creating a user without an approver.
  • Bob's departure event only arrives at midnight after the effective date, in the site's time zone. If finance wants someone unable to raise requests on the last working day, KoppelHet uses the event for immediate access revocation, which Bob sends as soon as the termination flow is completed.
  • Coupa names department, manager, default account and content group as data that must already exist before a user comes in. In Bob the department is a list value with its own ID. KoppelHet translates that ID into the Coupa department and lists an employee with a department Coupa does not know yet for the Coupa administrator.
  • Without a default currency Coupa falls back on the instance's reporting currency. Bob has no currency per employee, but it has a site per country. KoppelHet sets the default currency and default address through a table per site, so a colleague in London does not raise requests in euros.
  • A transfer recorded ahead of time in Bob gives a table event straight away, but only becomes the current work entry on the effective date. KoppelHet waits with the new manager and department in Coupa until that date, so open requests still sit with the current approver.

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 · Basic

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

Who sets the approval limits?

Finance, in Coupa. The integration sets department, manager and account; limits per job can be added later as an extension.

Does everyone from Bob get a purchasing licence?

No. At the start we agree which licences the integration sets. Anything beyond that is handled by the Coupa administrator.

Technical details for IT

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

  • HiBob through employee data webhooks (employee.created, employee.updated with fieldUpdates, employee.left, employee.access.revoked.immediately, table.entry.created) and POST /people/search with fields (root.email, work.employeeIdInCompany, work.department, work.reportsTo, work.site) and filters only on root.id or root.email. Fields without permission are left out without warning.
  • Coupa through the Users API - POST /api/users, PUT /api/users/:id, GET /api/users/:id and /api/users?status=active. Fields login, email, employee-number, firstname, lastname (string 40), department, manager, default-account, default-address, default-currency (not required, otherwise the reporting currency), content-groups, account-groups, licence flags such as expense-user and purchasing-user, authentication-method (coupa_credentials, ldap or saml, case-sensitive) and active.

Which fields are transferred

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

Field in HiBobField in CoupaNotes
/root/emaillogin en emailBoth unique in Coupa
/work/employeeIdInCompanyemployee-number
/root/firstName, /root/surnamefirstname, lastnameAt most 40 characters
/work/departmentdepartmentList ID from Bob through a lookup table
/work/reportsTo/emailmanager
/work/sitedefault-currency en default-addressTable per site
Kostenplaats (veld in Bob)default-accountFinance table
Lifecycle (vertrek)active = false

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.