Lohnabrechnung & Lohnbüro
Ziel: deine Lohnsoftware mit effektiven Stunden, Abwesenheiten und Urlaubssalden eines Zeitraums versorgen — ohne manuelle Exporte.
Benötigte Scopes: org:fichajes:read, org:ausencias:read, org:saldos:read.
Die drei zentralen Ressourcen:
GET /v1/work-summaries— die Ressource für die Lohnabrechnung: abgeschlossene Arbeitszeit-Aggregate pro Person und Zeitraum.GET /v1/absences— Krankmeldungen, Urlaub und Abzüge des Zeitraums.GET /v1/vacation-balances— Urlaubssalden für den Abschluss.
Work Summaries: die Stunden des Zeitraums
work-summaries liefert eine Zeile pro Person × Zeitraum mit bereits berechneten Aggregaten (keine einzelnen Stempelungen). Filtere mit period=day|month und einem Bereich from/to (≤ 1 Jahr).
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 Felder für die Lohnabrechnung:
| Feld | Verwendung |
|---|---|
worked_minutes | Effektiv gearbeitete Zeit. |
night_minutes | Minuten in Nachtarbeit (Zuschläge). |
overtime_minutes | Überstunden des Zeitraums. |
expected_minutes | Sollarbeitszeit laut Vertrag. |
balance_minutes | Differenz gearbeitet − Soll. |
banked_hours_balance_minutes | Saldo des Stundenkontos. |
absences_minutes | Abwesenheitsminuten im Zeitraum. |
Monatsaggregate können aus konsolidierten Snapshots stammen. Wenn dein Abschluss von Daten des laufenden Tages abhängt, rechne mit einer möglichen Konsolidierungslatenz und schließe nur über bereits vollständige Zeiträume ab.
Abwesenheiten des Zeitraums
Gleiche die genehmigten Abwesenheiten ab, die den Abrechnungszeitraum überlappen, um Krankmeldungen und Abzüge anzuwenden:
curl -s "$KINMU_BASE_URL/absences?status=approved&from=2026-06-01&to=2026-06-30" \
-H "Authorization: Bearer $KINMU_API_KEY"Jede Abwesenheit trägt type als { key, label } (die key ist stabil: vacation, sick_leave oder eigene Typen deines Unternehmens) sowie days_count. Verwende in deiner Logik immer die key.
Urlaubssalden
Für den Jahresabschluss oder für Rückstellungen fragst du die Salden pro Person und Jahr ab:
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
}
]
}Ablauf des Monatsabschlusses
Liste die aktiven Mitarbeitenden des Zeitraums
GET /v1/employees?status=active (paginiere mit cursor, wenn es mehr als 100 sind).
Lade die Work Summaries des Monats
GET /v1/work-summaries?period=month&from=…&to=….
Gleiche die genehmigten Abwesenheiten ab
GET /v1/absences?status=approved&from=…&to=….
(Optional) Erzeuge den gesetzlichen Arbeitszeitnachweis
Für die Arbeitsinspektion forderst du den Report time_registry_monthly an (spanisches 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" } }'Formate: csv oder xlsx (xlsx nur für check_ins_export). Du erhältst 202 { "id": "…", "status": "processing" }. Polle GET /v1/reports/{id}, bis status=completed; dann enthält die Antwort download_url, eine temporär signierte URL (TTL 5 Min., einmalige Nutzung). Die Signatur ist das Credential: Lade die Datei über diese URL ohne Authorization-Header herunter:
# 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.csvDer Scope org:informes:read ist zum Anfordern des Reports Pflicht. Die download_url ist einmalig nutzbar und läuft nach 5 Minuten ab: Fordere sie an und lade sofort herunter.