FaProtime logo

Leave, absence and time

Factorial to Protime integration: contract versions as Protime contracts, approved absence back as leave in Factorial

With an integration between Factorial and Protime, every employee of an entity that clocks with Protime appears in Protime automatically, with a contract per contract version from Factorial. KoppelHet enters absence approved in Protime as approved leave in Factorial, so the balance and leave calendar in Factorial stay up to date.

What the integration does

Organisations that use Factorial as their HR system and clock with Protime in the Netherlands or Belgium enter new colleagues and changes in hours into Protime by hand. Leave is requested and approved at the clock, but the balance in Factorial lags behind.

  1. HR records an employee and a contract version in Factorial.
  2. KoppelHet puts the person in Protime and creates a contract from the version's effective date.
  3. The employee requests leave in Protime and the manager approves it.
  4. KoppelHet creates the leave in Factorial and approves it there directly, outside the approval flow.
  5. If the absence changes or disappears in Protime, KoppelHet updates or deletes the leave in Factorial.
Factorial → KoppelHet → ProtimeSOURCEFactorialFactorialTARGETProtimeKoppelHetmapping · logging · monitoringFactorial → KoppelHet → ProtimeSOURCEFactorialFactorialTARGETProtimeKoppelHetmapping · logging · monitoring
Out: Person with employee number and start and end date · Contract per contract version · Employer and work location
Back: Approved absence as leave, with half days or hours

What to watch for with Factorial and Protime

  • Factorial has two ways to approve leave through the API: through the approval flow, or by approving the leave directly. The leave is already approved in Protime. KoppelHet uses the direct approval, so managers in Factorial do not get a second request.
  • For a half day Protime reports whether it is the first or the second day part. Factorial stores a half day as the beginning or the end of the day. KoppelHet maps the first day part to the beginning and the second to the end, so the morning off in Factorial is also a morning.
  • Protime reports hourly absence in minutes, while Factorial wants hours in hundredths. KoppelHet converts the minutes, so an hour and a half at the doctor in Protime arrives in Factorial as 150 hundredths of an hour.
  • Each new contract version in Factorial has its own effective date. Protime keeps contracts with a start and end date. On a new version KoppelHet closes the running Protime contract on the day before and opens a new contract, so a change in hours per the first of the month also takes effect on that day in Protime.
  • Factorial stores working hours with a frequency and working days as a list of day names. Protime wants the contract hours in minutes per contract period and the number of working days per week. KoppelHet converts the hours to minutes per week and counts the day names.
  • Factorial can hold several legal entities in one account; Protime keeps an employer history per person. KoppelHet only includes employees of entities that clock with Protime, and sets that entity as the employer in Protime.
  • Factorial reports a reverted termination with its own webhook. Protime then already has an end date. On such a notification KoppelHet removes that date again, so the employee keeps clocking and no absence is refused.

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

Why request leave in Protime and not in Factorial?

Because Protime does not accept absence through the API. Whoever arranges leave at the clock does so in Protime; Factorial receives the result.

Do clocked hours go to Factorial?

Not in this integration. Clocked hours 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.

  • Factorial through the Factorial API (version 2026-10-01 in the path) with OAuth 2.0 and a company token. Webhooks employees/employee/create_with_contract, employees/employee/terminate, employees/employee/unterminate and contracts/contract_version/create and update. Leave back with POST /resources/timeoff/leaves (employee_id, leave_type_id, start_on, finish_on, half_day, start_time, hours_amount_in_cents), then POST /resources/timeoff/leaves/approve_all; update with PUT and delete with DELETE on /resources/timeoff/leaves/{id}.
  • Protime through the Protime API (v1) with OAuth 2.0 client credentials. POST people with externalReferenceIdentifier, POST contracts (from, until, contractHoursInMinutes, fullTimeEquivalentInMinutes, numberOfWorkingDaysPerWeek, numberOfDaysInContractPeriod, kind) and the history for employer and work-location. Absence through webhooks on absences (dayPart First or Second, durationInMinutes, approvalLevel Approved, changeType), signed with HMAC-SHA256.

Which fields are transferred

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

Field in FactorialField in ProtimeNotes
company_identifier@employee-number (externe referentie)Fixed key
first_name, last_namefirstName, lastName
contract starts_on en terminated_oninServiceDate en outOfServiceDate
contract version (effective_on, working_hours, working_week_days)contract (from, contractHoursInMinutes, numberOfWorkingDaysPerWeek)
legal_entity_idemployer-history
location_idwork-location-historyThrough a table
dayPart First of Second (Protime, terug)half_day begin of einde van de dag
durationInMinutes (Protime, terug)hours_amount_in_cents

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.