Salarisadministratie
Doel: je salarissoftware of salarisadministratiekantoor voeden met effectieve uren, afwezigheden en verlofsaldi van een periode, zonder handmatige exports.
Vereiste scopes: org:fichajes:read, org:ausencias:read, org:saldos:read.
De drie kernresources:
GET /v1/work-summaries— de salarisresource: afgesloten aggregaties van werktijd per medewerker en periode.GET /v1/absences— ziekteverzuim, verlof en inhoudingen van de periode.GET /v1/vacation-balances— verlofsaldi voor de afsluiting.
Work summaries: uren van de periode
work-summaries retourneert één rij per medewerker × periode met de aggregaties al berekend (geen losse klok-events). Filter op period=day|month en een bereik from/to (≤ 1 jaar).
curl -s "$KINMU_BASE_URL/work-summaries?period=month&from=2026-06-01&to=2026-06-30" \
-H "Authorization: Bearer $KINMU_API_KEY"{
"data": [
{
"employee_id": "a1b2…",
"period_start": "2026-06-01",
"period_end": "2026-06-30",
"worked_minutes": 9600,
"break_minutes": 1200,
"night_minutes": 300,
"overtime_minutes": 240,
"expected_minutes": 9600,
"balance_minutes": 0,
"banked_hours_balance_minutes": 120,
"absences_minutes": 480,
"source_days": 21
}
],
"meta": { "next_cursor": null, "has_more": false }
}Relevante velden voor de salarisadministratie:
| Veld | Gebruik |
|---|---|
worked_minutes | Effectief gewerkte tijd. |
night_minutes | Minuten in nachtelijke uren (toeslagen). |
overtime_minutes | Overuren in de periode. |
expected_minutes | Contractuele werktijd. |
balance_minutes | Verschil gewerkt − verwacht. |
banked_hours_balance_minutes | Saldo van de urenbank. |
absences_minutes | Afwezigheidsminuten in de periode. |
Maandelijkse aggregaties kunnen uit geconsolideerde snapshots komen. Hangt je afsluiting af van data van de lopende dag, houd dan rekening met mogelijke consolidatievertraging en sluit af over al afgeronde periodes.
Afwezigheden van de periode
Koppel de goedgekeurde afwezigheden die met de salarisperiode overlappen om ziekteverzuim en inhoudingen toe te passen:
curl -s "$KINMU_BASE_URL/absences?status=approved&from=2026-06-01&to=2026-06-30" \
-H "Authorization: Bearer $KINMU_API_KEY"Elke afwezigheid heeft een type als { key, label } (de key is stabiel: vacation, sick_leave, of custom typen van je bedrijf) en een days_count. Gebruik in je logica altijd de key.
Verlofsaldi
Vraag voor de jaarafsluiting of voor reserveringen de saldi per medewerker en jaar op:
curl -s "$KINMU_BASE_URL/vacation-balances?year=2026" \
-H "Authorization: Bearer $KINMU_API_KEY"{
"data": [
{
"employee_id": "a1b2…",
"year": 2026,
"entitled_days": 23,
"used_days": 10,
"pending_days": 2,
"remaining_days": 11,
"carry_over_days": 0,
"carry_over_expires_at": null
}
]
}Flow van de maandafsluiting
Haal de actieve medewerkers van de periode op
GET /v1/employees?status=active (pagineer met cursor bij meer dan 100).
Download de work-summaries van de maand
GET /v1/work-summaries?period=month&from=…&to=….
Koppel de goedgekeurde afwezigheden
GET /v1/absences?status=approved&from=…&to=….
(Optioneel) Genereer de wettelijke urenregistratie
Vraag voor de arbeidsinspectie het rapport time_registry_monthly aan (RD-ley 8/2019):
curl -s -X POST "$KINMU_BASE_URL/reports" \
-H "Authorization: Bearer $KINMU_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{ "type": "time_registry_monthly", "format": "csv", "params": { "month": "2026-06" } }'Formaten: csv of xlsx (xlsx alleen voor check_ins_export). Je krijgt 202 { "id": "…", "status": "processing" }. Poll GET /v1/reports/{id} tot status=completed; de response bevat dan een download_url, een tijdelijke signed URL (TTL 5 min, eenmalig te gebruiken). De signature is de credential: download het bestand vanaf die URL zonder Authorization-header:
# 1) obtener la download_url (solo aparece cuando status=completed)
DL=$(curl -s "$KINMU_BASE_URL/reports/<id>" \
-H "Authorization: Bearer $KINMU_API_KEY" | jq -r '.download_url')
# 2) descargar el fichero desde la URL firmada (sin Bearer; un solo uso, 5 min)
curl -s -L "$DL" -o registro-horario-2026-06.csvDe scope org:informes:read is verplicht om het rapport aan te vragen. De download_url is eenmalig te gebruiken en verloopt na 5 minuten: vraag hem op en download meteen.