
HR to ERP
Personio to Visma.net ERP integration: employees ready for time cards and expense claims in Visma.net
With an integration between Personio and Visma.net ERP, every new employee from Personio appears as an employee in Visma.net, with department, branch and the right employee class, so time cards and expense claims work from the first working day. After the last working day in Personio the integration sets the employee in Visma.net to inactive.
What the integration does
Organisations with Personio for HR and Visma.net ERP for finance, projects and expenses create new colleagues in Visma.net by hand, sometimes a week after the start. Until then they cannot log hours, and departed colleagues stay active in the approval route.
- HR records a new employee in Personio, with department, legal entity and start date.
- KoppelHet creates the employee in Visma.net, on hold until the start date, with department, branch, employee class and calendar.
- On the start date the integration sets the employee to active and into the manager's work group, so approvals reach the right person.
- A new department or manager in Personio goes to Visma.net on its effective date.
- After the last working day the employee becomes inactive in Visma.net. Open expense claims can still be processed.
What to watch for with Personio and Visma.net ERP
- An employee who has not started yet has the status onboarding in Personio. Visma.net has the status on hold for an employee who is not active yet. KoppelHet therefore creates the employee in advance and only sets them to active on the start date.
- Visma.net requires a department, branch, employee class and calendar for a new employee. Personio has no employee class or calendar. KoppelHet derives the class from the employment type, internal or external, and the calendar from the office in Personio.
- In Personio an employment can be split over several cost centres, each with a percentage. An employee in Visma.net belongs to one department with its own expense account. KoppelHet picks the department from Personio and leaves the split over cost centres in Personio and payroll.
- Personio divides an organisation into departments and teams. Visma.net only has departments, and a department must exist before an employee can be placed in it. We leave teams out; KoppelHet reports a new Personio department to finance, who creates it in Visma.net with the right expense account.
- Every legal entity in Personio becomes a fixed branch in Visma.net. When an employee changes entity, the employee moves to the other branch in Visma.net and earlier expense claims stay with the old one.
- Visma.net routes approvals for time cards and expense claims through work groups in the company tree. The manager from Personio owns a work group, and KoppelHet places the employee in that group, so approval follows a change of manager.
- Personio reports a termination immediately with its own event, including the last working day. Visma.net has no end date for an employee in its API. KoppelHet keeps the date and sets the employee to inactive the next day.
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
Does the employee also get a login in Visma.net?
Not through the integration. An administrator links a user to the employee in Visma.net; that needs the email address the integration already fills in.
Do salary or hourly rate go to Visma.net?
No. Visma.net can hold cost rates per employee, but finance manages those. Only the data needed for time, expenses and approval leaves Personio.
What if an employee returns?
Then the integration sets the same employee in Visma.net back to active, with the new department and branch. The old time cards stay with that employee.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Personio through the v2 API for persons and employments (status, type, org_units, cost_centers with weight, legal_entity, office, supervisor, termination with last_working_day), filtered on updated_at. Webhooks for employment.created, employment.updated and employment.terminated, signed with HMAC-SHA256.
- Visma.net ERP through POST /v1/employee (required employeeCd, department, employeeClass, branch, calendar and contact with lastName and email) and PUT /v1/employee/{employeeCd} with ETag and If-Match. Status Active, Hold or Inactive; work groups through companyTreeInfo (workGroupID, owner). Departments through GET /v1/department.
- Access to Visma.net through Visma Connect with OAuth 2.0 client credentials and a tenant_id, with consent from an administrator of the environment.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Personio | Field in Visma.net ERP | Notes |
|---|---|---|
person id of eigen personeelsnummer | employeeCd | Fixed key; follows the employee ID structure in Visma.net |
first_name, last_name | contact.firstName, contact.lastName | |
email | contact.email | Required in Visma.net |
org_units (type department) | department | Through a table to the department code in Visma.net |
legal_entity | branch | |
type (INTERNAL of EXTERNAL) | employeeClass | |
office | calendar | Working hours and time zone of the office |
status, employment_start_date en termination.last_working_day | status (Hold, Active, Inactive) | |
supervisor | companyTreeInfo (workGroupID) | The manager's work group |
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