Zum Inhalt

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 page entfallen.
  • Sind mehr als 250 berechtigte Mitarbeiter verknüpft, ist page erforderlich. Ein Aufruf ohne diesen Parameter wird mit dem HTTP-Status-Code 422 abgelehnt; die Antwort weist darauf hin, dass page angegeben werden muss.
  • page=1 liefert die ersten 250 Mitarbeiter, page=2 die nächsten 250 Mitarbeiter usw.
  • Liegen für eine angeforderte Seite keine weiteren Mitarbeiter vor, wird eine leere JSON-Liste ([]) mit dem HTTP-Status-Code 200 zurü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:SS
Der 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