Zeiterfassung & Lohnbuchhaltung¶
Zeiterfassung – Abruf täglicher Zeitkontenwerte¶
| Information | Wert |
|---|---|
| Verfügbar in Planerio-Versionen | 1.x / 2.0 |
| Verfügbar über Technisches Login | ja |
| Verfügbar über Browser | nein (identische Daten können jedoch aus der Monatsübersicht exportiert werden) |
| Endpunkt-Pfad | /planerio/timetracking/timesheet/api/external/v1/aaa-bbb-ccc/daily-balances |
Über diesen Endpunkt können Sie Sollzeit, Nettozeit, Pausenzeit und Gleitzeitwerte für jeden Tag eines abgeschlossenen Monats abrufen. Die Antwort ist für den einfachen Import in ein BI-System strukturiert.
Für den Datenabruf benötigen Sie ein im Abschnitt Konfiguration erstelltes Schichtgruppen-Token. Berücksichtigt werden nur Mitarbeiter, deren primäre Schichtgruppe mit diesem Token verknüpft ist. Deaktivierte oder gelöschte Mitarbeiter sowie Mitarbeiter mit deaktivierter Zeiterfassung sind nicht enthalten.
Die URL zum Datenabruf lautet:
https://<host>/planerio/timetracking/timesheet/api/external/v1/aaa-bbb-ccc/daily-balances?year=2025&month=1
Ersetzen Sie aaa-bbb-ccc durch das entsprechende Schichtgruppen-Token. Die Query-Parameter year und month sind erforderlich.
| Parameter | Beschreibung |
|---|---|
| year=2025 | Jahr des abzurufenden Monats. Das Jahr darf nicht vor 2020 liegen. |
| month=1 | Monat als Zahl von 1 bis 12. Der angegebene Monat darf nicht in der Zukunft liegen. |
| page=1 | (optional) Seitennummer für die Seitennummerierung. Die Zählung beginnt bei 1. |
Folgende Daten sind in der Antwort enthalten. Für einen abgeschlossenen Monat wird pro Mitarbeiter und Kalendertag eine Zeile zurückgegeben:
| Feldname | Datentyp | Beschreibung |
|---|---|---|
| employee_uuid | string | Planerio-systemweit eindeutige ID des Mitarbeiters |
| employee_external_id | string|null | Wurde der Mitarbeiter über einen Import angelegt, enthält dieses Feld die uniqueId, die ihn im externen System identifiziert. |
| employee_personnel_number | string|null | Personalnummer des Mitarbeiters |
| employee_name | string | Vor- und Nachname des Mitarbeiters |
| status | string | Status der Monatsdaten: month_closed für einen abgeschlossenen Monat oder unavailable, wenn für den Mitarbeiter keine abgeschlossenen Daten für den angefragten Monat vorliegen |
| year | integer | Jahr der Zeile |
| month | integer | Monat der Zeile |
| day | integer | Kalendertag der Zeile |
| break_minutes | integer | Für die Berechnung berücksichtigte Pausenzeit in Minuten. Falls eine automatisch vorgeschriebene Pause länger als die gestempelte Pause ist, wird die vorgeschriebene Pause zurückgegeben. |
| net_minutes | integer | Nettoarbeitszeit in Minuten |
| target_minutes | integer | Sollarbeitszeit in Minuten |
| flexitime_daily_minutes_before_bonuses | integer | Gleitzeitänderung des Tages vor Zuschlägen in Minuten (net_minutes minus target_minutes) |
| flexitime_accumulated_minutes | integer | Kumulierter Gleitzeitstand am Ende des Tages in Minuten |
| flexitime_change_minutes | integer | Tatsächliche Gleitzeitänderung des Tages einschließlich berücksichtigter Zuschläge in Minuten |
Beispiel-Antwort:
[
{
"employee_uuid": "7e6e30ea-4890-4cab-b52e-e40e1a2ce58d",
"employee_external_id": "ext-4711",
"employee_personnel_number": "0123",
"employee_name": "Erika Mustermann",
"status": "month_closed",
"year": 2025,
"month": 1,
"day": 2,
"break_minutes": 30,
"net_minutes": 450,
"target_minutes": 420,
"flexitime_daily_minutes_before_bonuses": 30,
"flexitime_accumulated_minutes": 1230,
"flexitime_change_minutes": 30
}
]
Liegen für einen berücksichtigten Mitarbeiter keine abgeschlossenen Monatsdaten vor, enthält die Antwort für diesen Mitarbeiter genau eine Zeile mit status: "unavailable". Die Datums- und Zeitwertfelder fehlen in diesem Fall.
Ein fehlender Pflichtparameter, ein Jahr vor 2020, ein ungültiger Monat oder ein zukünftiger Monat führt zum HTTP-Status-Code 400.
Zeiterfassung – Abruf monatlicher Zeitkontenwerte¶
| Information | Wert |
|---|---|
| Verfügbar in Planerio-Versionen | 1.x / 2.0 |
| Verfügbar über Technisches Login | ja |
| Verfügbar über Browser | nein (identische Daten können jedoch aus der Monatsübersicht exportiert werden) |
| Endpunkt-Pfad | /planerio/timetracking/timesheet/api/external/v1/aaa-bbb-ccc/monthly-balances |
Über diesen Endpunkt können Sollzeit, Nettozeit und Gleitzeitwerte für einen Monat abgerufen werden. Die Antwort enthält genau eine Zeile pro Mitarbeiter. Neben abgeschlossenen Monaten können Sie auch einen offenen Monat abfragen, sofern dafür bereits berechnete Zeitkontenwerte vorliegen.
Berücksichtigt werden nur Mitarbeiter, deren primäre Schichtgruppe mit dem verwendeten Schichtgruppen-Token verknüpft ist. Deaktivierte oder gelöschte Mitarbeiter sowie Mitarbeiter mit deaktivierter Zeiterfassung sind nicht enthalten.
Die URL zum Datenabruf lautet:
https://<host>/planerio/timetracking/timesheet/api/external/v1/aaa-bbb-ccc/monthly-balances?year=2025&month=1
Ersetzen Sie aaa-bbb-ccc durch das entsprechende Schichtgruppen-Token. Die Query-Parameter year und month sind erforderlich.
| Parameter | Beschreibung |
|---|---|
| year=2025 | Jahr des abzurufenden Monats. Das Jahr darf nicht vor 2020 liegen. |
| month=1 | Monat als Zahl von 1 bis 12. Der angegebene Monat darf nicht in der Zukunft liegen. |
| page=1 | (optional) Seitennummer für die Seitennummerierung. Die Zählung beginnt bei 1. |
Folgende Daten sind in der Antwort enthalten:
| Feldname | Datentyp | Beschreibung |
|---|---|---|
| employee_uuid | string | Planerio-systemweit eindeutige ID des Mitarbeiters |
| employee_external_id | string|null | Wurde der Mitarbeiter über einen Import angelegt, enthält dieses Feld die uniqueId, die ihn im externen System identifiziert. |
| employee_personnel_number | string|null | Personalnummer des Mitarbeiters |
| employee_name | string | Vor- und Nachname des Mitarbeiters |
| status | string | Status der Monatsdaten: month_closed, month_open oder unavailable |
| year | integer | Jahr der Zeile |
| month | integer | Monat der Zeile |
| day | integer | Bei einem abgeschlossenen Monat der letzte Kalendertag des Monats; bei einem offenen Monat der letzte Tag, für den berechnete Zeitkontenwerte vorliegen |
| net_minutes | integer | Nettoarbeitszeit des Monats in Minuten |
| target_minutes | integer | Sollarbeitszeit des Monats in Minuten |
| flexitime_minutes | integer | Gleitzeitstand am angegebenen Tag in Minuten |
| flexitime_unadjusted_minutes | integer | Gleitzeitstand vor manueller Korrektur in Minuten. Bei einem offenen Monat entspricht dieser Wert flexitime_minutes. |
| flexitime_minutes_month_start | integer | Aus dem Vormonat übertragener Gleitzeitstand zu Monatsbeginn in Minuten |
Beispiel-Antwort:
[
{
"employee_uuid": "7e6e30ea-4890-4cab-b52e-e40e1a2ce58d",
"employee_external_id": "ext-4711",
"employee_personnel_number": "0123",
"employee_name": "Erika Mustermann",
"status": "month_closed",
"year": 2025,
"month": 1,
"day": 31,
"net_minutes": 9840,
"target_minutes": 9600,
"flexitime_minutes": 700,
"flexitime_unadjusted_minutes": 760,
"flexitime_minutes_month_start": 460
}
]
month_closed kennzeichnet einen abgeschlossenen Monat. month_open kennzeichnet einen offenen Monat und enthält den zuletzt berechneten Stand. Liegen für einen berücksichtigten Mitarbeiter weder abgeschlossene noch berechnete offene Monatsdaten vor, wird status: "unavailable" zurückgegeben; die Datums- und Zeitwertfelder sind dann null.
Ein fehlender Pflichtparameter, ein Jahr vor 2020, ein ungültiger Monat oder ein zukünftiger Monat führt zum HTTP-Status-Code 400.
Seitennummerierung für tägliche und monatliche Zeitkontenwerte¶
Die Endpunkte daily-balances und monthly-balances liefern pro Seite die Daten von höchstens 250 Mitarbeitern. Die Seitennummerierung bezieht sich auf Mitarbeiter, nicht auf einzelne Tages- oder Monatszeilen. Daher enthält eine Antwort immer alle Zeilen eines Mitarbeiters.
- Sind höchstens 250 berechtigte Mitarbeiter mit dem Schichtgruppen-Token verknüpft, kann der Parameter
pageentfallen. - Sind mehr als 250 berechtigte Mitarbeiter verknüpft, ist
pageerforderlich. Ein Aufruf ohne diesen Parameter wird mit dem HTTP-Status-Code422abgelehnt; die Antwort weist darauf hin, dasspageangegeben werden muss. page=1liefert die ersten 250 Mitarbeiter,page=2die nächsten 250 Mitarbeiter usw.- Liegen für eine angeforderte Seite keine weiteren Mitarbeiter vor, wird eine leere JSON-Liste (
[]) mit dem HTTP-Status-Code200zurückgegeben.
Zeiterfassung – Abruf der Gleitzeitstände¶
⚠️ Dieser Endpunkt wird bis Ende 2026 außer Betrieb genommen. Wechseln Sie auf die oben beschriebenen aktuellen Endpunkte.
| Information | Wert |
|---|---|
| Verfügbar in Planerio-Versionen | DEPRECATED |
| Verfügbar über Technisches Login | ja |
| Verfügbar über Browser | ja |
| Endpunkt-Pfad | /integrations/tokenapi/v2/aaa-bbb-ccc/time-tracking |
Über diesen Endpunkt können Sie Gleitzeitstände automatisiert oder manuell abrufen. Dafür benötigen Sie ein im Abschnitt Konfiguration erstelltes Schichtgruppen-Token.
Ihr Planerio Account Manager muss diesen Endpunkt zunächst aktivieren (Stichwort TIMESHEET_API_ARCHIVE_START_MONTH_YEAR). Der Abruf steht am Tag nach der Aktivierung zur Verfügung.
Die URL zum Datenabruf lautet:
https://<host>/integrations/tokenapi/v2/aaa-bbb-ccc/time-tracking
Ersetzen Sie aaa-bbb-ccc durch das entsprechende Schichtgruppen-Token. Sie können den Datenabruf mit den folgenden Query-Parametern konfigurieren. Leiten Sie den ersten Parameter mit ? und alle weiteren Parameter mit & ein.
| Parameter | Beschreibung |
|---|---|
| startMonth=2022-01 | Beginn des Zeitraums, für den Gleitzeitstände abgerufen werden. Geben Sie den Monat im Format YYYY-MM an, z. B. 2020-12 für Dezember 2020. Das Jahr muss zwischen 2000 und 2099 liegen. |
| endMonth=2022-01 | Ende des Zeitraums, für den Gleitzeitstände abgerufen werden. |
Folgende Daten sind enthalten (jeweils eine Zeile pro Mitarbeiter und Jahr/Monat):
| Feldname | Beschreibung |
|---|---|
| flexitime | Gleitzeitstand |
| unadjustedFlexitime | Gleitzeitstand vor manueller Korrektur |
| targetHours | Sollstunden |
| netHours | Nettostunden/Iststunden |
| year | Jahr |
| month | Monat |
| personnelNumber | Personalnummer des Mitarbeiters |
| employee_uuid | Planerio-systemweit eindeutige ID des Mitarbeiters |
Bei nachträglichen Korrekturen stehen die aktualisierten Werte in der Regel erst am folgenden Tag zur Verfügung.
ℹ️ Gibt dieser Endpunkt nach mehr als 20 Sekunden den HTTP-Status-Code 503 zurück, reduzieren Sie den abgefragten Zeitraum oder die Anzahl der Mitarbeiter. Mit separaten Schichtgruppen-Token können Sie die Mitarbeiterzahl begrenzen. Im Extremfall kann ein separates Token pro Schichtgruppe erforderlich sein.
Zeiterfassung – Erstellen und Importieren von Zeitstempeln¶
| Information | Wert |
|---|---|
| Verfügbar in Planerio-Versionen | 1.x / 2.0 |
| Verfügbar über Technisches Login | ja |
| Verfügbar über Browser | ja |
| Endpunkt-Pfad | /integrations/tokenapi/v2/aaa-bbb-ccc/timestampEvent |
Über diesen Endpunkt können Sie Zeitstempel für Kommen und Gehen in Planerio erstellen. Sie verhalten sich wie Zeitstempel, die über Zeiterfassungshardware oder die mobile Planerio-App erstellt wurden. Die URL des Endpunkts lautet:
https://<host>/integrations/tokenapi/v2/aaa-bbb-ccc/timestampEvent
Ersetzen Sie aaa-bbb-ccc durch das entsprechende Schichtgruppen-Token (siehe Abschnitt Konfiguration).
Zeitstempel können nur für Mitarbeiter erstellt werden, deren primäre Schichtgruppe mit dem verwendeten Schichtgruppen-Token verknüpft ist. Dadurch lässt sich der Zugriff auf bestimmte Schichtgruppen beschränken.
Folgende Parameter stehen zur Verfügung:
| Feldname | Beschreibung |
|---|---|
| personnel_number | Personalnummer zur Identifikation des Mitarbeiters. Ist sie innerhalb der verknüpften Schichtgruppen nicht eindeutig, wird ein Fehler zurückgegeben. |
| in_out | in (Kommen/Einstempeln) oder out (Gehen/Ausstempeln) |
| date_time | Datum und Uhrzeit im Format YYYY-MM-DD HH:MM:SSDer Wert darf: - höchstens fünf Minuten in der Zukunft liegen; - nicht vor dem 1. Januar des Vorjahres liegen; - nicht vor dem ersten Arbeitstag des Mitarbeiters liegen. |
| comment | (optional) Kommentar mit bis zu 4.096 Zeichen |
Übermitteln Sie die Felder in einem POST-Request. Beispiel mit curl:
curl -v \
--data-urlencode 'personnel_number=001234' \
--data-urlencode 'in_out=out' \
--data-urlencode 'date_time=2020-05-23 19:13:37' \
-H 'X-Planerio-Api-Gateway-Auth: SESSIONTOKEN' \
'https://HOST/integrations/tokenapi/v2/AAA-BBB-CCC/timestampEvent'
Wurde der Zeitstempel erfolgreich gespeichert oder war bereits ein identischer Zeitstempel vorhanden, gibt der Endpunkt den HTTP-Status-Code 204 mit einem leeren Response-Body zurück.
Zeiterfassung – Abrufen von Zeitstempeln¶
| Information | Wert |
|---|---|
| Verfügbar in Planerio-Versionen | 1.x / 2.0 |
| Verfügbar über Technisches Login | ja |
| Verfügbar über Browser | ja |
| Endpunkt-Pfad | /integrations/tokenapi/v1/aaa-bbb-ccc/timestampEvents |
Über diesen Endpunkt können Sie unverarbeitete Zeitstempel für Kommen und Gehen aus Planerio abrufen. Die URL des Endpunkts lautet:
https://<host>/integrations/tokenapi/v1/aaa-bbb-ccc/timestampEvents
Ersetzen Sie aaa-bbb-ccc durch das entsprechende Schichtgruppen-Token (siehe Abschnitt Konfiguration). Folgende Query-Parameter stehen zur Verfügung. Leiten Sie den ersten Parameter mit ? und alle weiteren Parameter mit & ein.
| Parameter | Beschreibung |
|---|---|
| startDate=2023-01-01 | Beginn des Zeitraums, für den Zeitstempel abgerufen werden. Geben Sie das Datum im Format YYYY-MM-DD an, z. B. 2020-12-31 für den 31. Dezember 2020. Das Jahr muss zwischen 2000 und 2099 liegen. |
| endDate=2023-01-31 | Ende des Zeitraums, für den Zeitstempel abgerufen werden. |
| includeDeleted=1 | (optional) Schließt gelöschte Zeitstempel ein. Standardmäßig werden sie nicht zurückgegeben. |
| updatedAfter=2023-02-01 | (optional) Beschränkt das Ergebnis auf Zeitstempel, die nach einem Stichtag geändert wurden. Dies eignet sich für differenzielle Synchronisierungen. Geben Sie das Datum im Format YYYY-MM-DD an. |
| withMetaData=1 | Aktiviert zusätzliche Felder in der Antwort (siehe unten). Dies kann die Antwortzeit verlängern. |
| returnSorted=1 | (optional) Sortiert das Ergebnis. Standardmäßig ist das Ergebnis unsortiert. |
| format=csv | (optional) Legt das Format der ausgegebenen Daten fest. Verfügbar sind json (Standard), csv und xls. |
Folgende Datenfelder werden pro Zeitstempel geliefert:
| Feldname | Beschreibung |
|---|---|
| timestamp_uuid | Eindeutige ID des Zeitstempelereignisses |
| date_time | Datum und Uhrzeit im Format YYYY-MM-DD HH:MM:SS |
| in_out | in (Kommen/Einstempeln) oder out (Gehen/Ausstempeln) |
| employee_personnel_number | Personalnummer des zugehörigen Mitarbeiters |
| employee_uuid | Planerio-systemweit eindeutige ID des Mitarbeiters |
| deleted_at | Zeitpunkt der Löschung im Format YYYY-MM-DD HH:MM:SS (nur wenn includeDeleted gesetzt und der Zeitstempel gelöscht ist) |
| date_time_original | Ursprünglicher Wert im selben Format wie date_time, falls der Zeitstempel korrigiert wurde |
| employee_external_id | Wurde der Mitarbeiter über einen Import angelegt, enthält dieses Feld die uniqueId, die ihn im externen System identifiziert. |
| employee_cost_center | Kostenstelle des Mitarbeiters (sofern vorhanden) |
| employee_first_name employee_last_name |
Vor- und Nachname des Mitarbeiters (mit withMetaData=1) |
| request_reason | Freitextbegründung, falls der Zeitstempel durch einen Antrag erstellt oder geändert wurde (mit withMetaData=1) |
| approved_by_display_name | Name des Mitarbeiters, der den Antrag freigegeben hat, falls der Zeitstempel durch einen Antrag erstellt oder geändert wurde (mit withMetaData=1) |
| stamp_type_code | (sofern vorhanden) Code des Stempel-Subtyps |
Lohnbuchhaltung – Abruf von manuellen Zuschlägen¶
| Information | Wert |
|---|---|
| Verfügbar in Planerio-Versionen | 1.x / 2.0 |
| Verfügbar über Technisches Login | ja |
| Verfügbar über Browser | nein |
| Endpunkt-Pfad | /planerio/timetracking/payroll/api/external/token-api/aaa-bbb-ccc/manual-bonuses |
Über diesen Endpunkt können Sie manuelle Zuschläge („Boni“) aus der vorbereitenden Lohnbuchhaltung abrufen. Automatisch vergebene Boni sind über diesen Endpunkt nicht verfügbar.
Verwenden Sie diesen Endpunkt erst nach Rücksprache mit Ihrem Planerio Account Manager.
Für den Datenabruf benötigen Sie ein im Abschnitt Konfiguration erstelltes Schichtgruppen-Token. Die URL lautet:
https://<host>/planerio/timetracking/payroll/api/external/token-api/aaa-bbb-ccc/manual-bonuses
Ersetzen Sie aaa-bbb-ccc durch das entsprechende Schichtgruppen-Token und hängen Sie die folgenden Query-Parameter an. Leiten Sie den ersten Parameter mit ? und alle weiteren Parameter mit & ein.
| Parameter | Beschreibung |
|---|---|
| year=2023 | Jahr, für das Boni abgerufen werden |
| month=6 | Monat, für den Boni abgerufen werden |
Folgende Daten sind in der Antwort enthalten (jeweils pro Bonus):
| Feldname | Datentyp | Beschreibung |
|---|---|---|
| unique_bonus_id | string | Eindeutige ID für diesen Zuschlag |
| employee_uuid | string | Planerio-systemweit eindeutige ID des Mitarbeiters |
| employee_personnel_number | string|null | Personalnummer des Mitarbeiters |
| employee_external_id | string|null | Wurde der Mitarbeiter über einen Import angelegt, enthält dieses Feld die uniqueId, die ihn im externen System identifiziert. |
| is_deleted | bool | Löschkennzeichen |
| updated_at | string | Änderungszeitstempel im Format YYYY-MM-DD HH:MM:SS |
| payroll_code | string | Lohnart |
| value | number | Numerischer Wert, z. B. Anzahl der Stunden, Tage oder Schichten beziehungsweise Eurobetrag |
| unit | string | Einheit von value: OTHER, HOURS, EURO oder SHIFTS |
| wage_factor | number|null | Wert in Euro für Boni vom Typ „Euro pro Stunde, Schicht oder Tag“ |
| start_date_time | string | Startzeit im Format YYYY-MM-DD HH:MM:SS (nur für Boni des Werttyps „Zeitraum“) |
| end_date_time | string | Endzeit im Format YYYY-MM-DD HH:MM:SS (nur für Boni des Werttyps „Zeitraum“) |
| payroll_bonus_reason | string | Kommentar des Benutzers, der den Zuschlag beantragt hat |