Deel logoVisma.net ERP logo

HR to ERP

Deel to Visma.net ERP integration: own employees per legal entity as employees in the right branch

With an integration between Deel and Visma.net ERP, every own employee (direct employee) of a legal entity that books in Visma.net automatically becomes an employee in Visma.net, in that entity's branch, with department, employee class, calendar and work email. EOR employees and contractors stay out of Visma.net, and after a completed termination KoppelHet sets the employee to inactive on the day after the last working day.

What the integration does

Organisations that manage their own employees in Deel HR and do finance, hours and expenses in Visma.net ERP create employees in Visma.net by hand. Deel also holds EOR employees and contractors, and they do not belong in the books as employees.

  1. HR creates a direct employee in Deel under an own legal entity that books in Visma.net.
  2. Deel reports it; KoppelHet checks hiring type and entity and creates the employee on hold.
  3. On the start date the employee goes to active; changes in department or work email follow right away.
  4. Once the termination in Deel is completed, the employee goes to inactive on the day after the last working day.
Deel → KoppelHet → Visma.net ERPSOURCEDeelTARGETVisma.net ERPKoppelHetmapping · logging · monitoringDeel → KoppelHet → Visma.net ERPSOURCEDeelTARGETVisma.net ERPKoppelHetmapping · logging · monitoring
Out: Own employees with number, name and work email · Legal entity to branch · Department, employee class and calendar · Status on hold, active or inactive

What to watch for with Deel and Visma.net ERP

  • According to the current Deel guide, Create a direct employee creates an employee under the organisation's own legal entity. Such employees have hiring type direct_employee. Only they go to Visma.net; eor, peo and contractor stay out, because their pay or invoice comes in through another route.
  • Every person in Deel belongs to a legal entity through client_legal_entity. Branches are read-only in the Visma.net API. KoppelHet links every entity that books in Visma.net to an existing branch, and an entity without a branch stays outside the integration.
  • A new employee is often in onboarding in Deel for weeks before they start. Visma.net has the on hold status for an employee who has not been activated yet. KoppelHet therefore creates the employee during onboarding and sets them to active on the start date.
  • A termination in Deel goes through statuses from PENDING to COMPLETED, and can also fail or be cancelled. KoppelHet only acts once the status is COMPLETED and then reads the last working day. A cancelled termination therefore leaves the employee active in Visma.net.
  • Departments in Deel have a parent department. In Visma.net a department is a flat list, with an expense account and subaccount per department. Finance sets which Deel department belongs to which Visma.net department; a new Deel department without a rule becomes an alert instead of an employee on the wrong account.
  • Visma.net asks for an employee class and a calendar with working hours and time zone per employee. Deel has neither, but does have the country of the employment. KoppelHet picks class and calendar per country with a table from finance, so an employee in Germany gets the German calendar.
  • In Deel's people list the work email sits per employment, not on the person. Visma.net refuses an employee without an email address. KoppelHet takes the work email of the employment at the own entity, and waits with creating the employee if it is still empty.

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

Do EOR employees from Deel also end up in Visma.net?

Not as employees. They are on the payroll of a Deel employer; finance books Deel's invoice as a purchase. If they do need to submit hours or expenses in Visma.net, that can be added later as an extension.

Technical details for IT

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

  • Deel through the REST API (version 2026-01-01) with an API token or OAuth2, scope people:read. GET /rest/people with hiring_types (contractor, eor, peo, hris_direct_employee, hris_direct_contractor, direct_employee, contractor_outside_deel, person_without_contract), hiring_statuses (including onboarding, active, offboarding), worker_id, client_legal_entity, department with parent, direct_manager, active_worker_termination_status (PENDING, CONTRACT_TERMINATION_DATA_COLLECTED, IN_PROGRESS, COMPLETED, FAILED, CANCELED) and direct_employee_termination_last_day; employments[] with work_email and country. Webhooks per type of creation and for updates.
  • Visma.net ERP through the Service API with Visma Connect (OAuth 2.0 client credentials, per tenant). POST /v1/employee with mandatory employeeCd, department, employeeClass, branch, calendar and contact with lastName and email; PUT /v1/employee/{employeeCd} with If-Match; status Active, On hold or Inactive. Branches through GET only. Limit per hour per company and client, with X-RateLimit headers and Retry-After on 429.

Which fields are transferred

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

Field in DeelField in Visma.net ERPNotes
worker_idemployeeCd
first_name, last_namecontact.firstName en contact.lastName
employments[].work_emailcontact.emailMandatory in Visma.net
client_legal_entitybranchThrough a table; branches already exist
department (met parent)departmentThrough a table from finance
hiring_typeFilterOnly direct_employee
employments[].countryemployeeClass en calendarPer country through a table
start_date en direct_employee_termination_last_daystatus (Hold, Active, Inactive)

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.