Spendesk connects natively to Personio, BambooHR, HiBob, Workday, Deel, PayFit and Lucca (see Spendesk's native HR tools integrations). If your HR tool is not one of them, your developers or your integration partner can connect it through the Spendesk API, so that new hires, moves and leavers reach Spendesk without anyone re-typing them.
This article is for Account Owners and Admins who decide on and set up the integration. The developer who builds it follows the technical guide Syncing users from your HR system.
What the integration can do
When this happens in your HR tool | Spendesk does this |
A department, team or project is created or renamed | Creates or renames the matching cost center, with its owner |
Someone is hired | Creates the member, with their role (requester or controller), default cost center, manager and spending policy, and sends them the Spendesk invitation |
Someone changes name | Updates their first and last name |
Someone moves to another team | Changes their default cost center |
Someone changes manager | Changes their manager |
Someone becomes, or stops being, a finance controller | Switches their role between requester and controller |
Someone leaves | Removes them from the entity: their cards and subscriptions are handled as for any member you remove |
People are matched on their work email: it must be the same in your HR tool and in Spendesk.
What stays in Spendesk
Some changes cannot be made through the API. Keep them in Spendesk, and agree with your team who handles them:
Admins, Account Owners and Travel Managers. The API only manages members who are requesters or controllers. It cannot update or remove anyone who holds another role, nor give or take away the Admin and Account Owner roles.
Changing someone's email address.
Changing a spending policy after the member is created, and teams.
Members with transfers still on their way (for example a reimbursement) cannot be removed until finance has cleared them.
An email already used in another Spendesk organisation cannot be added: contact Spendesk support.
⚠️ One or the other, not both. On an entity whose members are managed by a native HR integration, the API refuses every change to members. Choose one way per entity.
Set it up
Ask for API access. The user endpoints are experimental: ask your Customer Success Manager, or write to support-public-api@spendesk.com, to enable them for your company.
Switch on what you want to sync. Cost centers, reporting managers and spending policies must be enabled on the entity, otherwise the integration cannot set them.
Create the API key from the right account. In Settings > Integrations > API access management, create a key (see Build a native integration using Spendesk API) with these permissions:
read and manage users;
manage user roles, if you want role changes synced;
read and manage cost centers.
The integration acts as the person who created the key. That person must be an active Admin or Account Owner of every entity you sync. If they leave or lose that role, the sync stops: create the key from an account that will stay in place.
Share the key securely with your developer or integration partner, with the link to the technical guide.
Check that it works
New members appear in Settings > Members, in the Invited tab until they accept their invitation, then in Active.
Removed members move to the Archived tab.
Every call made with the key — what it did, for which member, and whether it worked — is listed in Settings > Integrations > API audit log: see See what your API keys and integrations did.
Spendesk does not alert you when a change is refused. Ask your developer to send the refused changes (a removal blocked by a pending transfer, a manager unknown in Spendesk) to whoever owns the HR process.
FAQ
How quickly do changes reach Spendesk?
As soon as the integration sends them: the timing is up to your integration (for example, every night or as soon as the HR tool records the change).
Does Spendesk send changes back to my HR tool?
No. The integration reads from your HR tool and writes to Spendesk.
We have several entities. Do we need several keys?
Not necessarily: an organisation-level key can sync every entity, as long as the person who created it is Admin or Account Owner in each of them.

