Skip to Content
Guides nach Use CaseLohnabrechnung & Lohnbüro

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:

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:

FeldVerwendung
worked_minutesEffektiv gearbeitete Zeit.
night_minutesMinuten in Nachtarbeit (Zuschläge).
overtime_minutesÜberstunden des Zeitraums.
expected_minutesSollarbeitszeit laut Vertrag.
balance_minutesDifferenz gearbeitet − Soll.
banked_hours_balance_minutesSaldo des Stundenkontos.
absences_minutesAbwesenheitsminuten 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.csv

Der 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.

Last updated on