Der Export der Arbeitszeiterfassung (siehe Zugang zur Erfassung und Kopie) hat stabile Spalten: Der Name jeder Spalte ist ein englischer Schlüssel, der nicht übersetzt wird und sich von einer Sprache zur anderen nicht ändert. Wenn du die Datei in ein anderes System importieren willst, kannst du dich darauf verlassen: Wird eine Spalte hinzugefügt, steht sie am Ende ihres Abschnitts, und keine wird umbenannt oder entfernt.
So ist die Datei aufgebaut
- Die CSV ist eine einzige Datei mit allen Abschnitten. Ihre erste Spalte
ist
section(entry,change,day_totalodermonth_total), danach folgen die Spalten der vier Abschnitte nacheinander; die, die für eine Zeile nicht gelten, bleiben leer. Sie trägt ein BOM (sie öffnet sich korrekt in Excel), und Zellen, die als Formel gelesen werden könnten, sind entschärft. - Die Excel-Datei (XLSX) enthält ein Blatt
info(Unternehmen, Steuernummer, Bereich, Zeitzone, Ansicht und Datum des Downloads) und ein Blatt pro Abschnitt:entries,changes,day_totalsundmonth_totals, jeweils nur mit ihren Spalten. - Zeitpunkte stehen in ISO 8601 mit dem Versatz der Zeitzone des
Unternehmens (
2026-10-15T09:00+02:00), Tage alsJJJJ-MM-TTund Monate alsJJJJ-MM. Dauern sind ganze Minuten, Wahrheitswertetrueoderfalse, und Aufzählungswerte erscheinen als ihr Code. - Was nicht zutrifft oder nicht erfasst wurde, bleibt leer: People erfindet keine Daten.
- In der minimierten Ansicht der Arbeitnehmervertretung bleiben Steuernummer, IPs und Vereinbarkeitsmaßnahmen (Schlüssel und Text) Spalten, aber leer, damit die Datei für alle dieselbe Form hat.
Abschnitte: entries (entry)
Eine Zeile pro Abschnitt (die Startbuchung und, falls vorhanden, die, die ihn schließt). Stornierte Abschnitte erscheinen ebenfalls, markiert.
| Spalte | Was sie enthält |
|---|---|
employee_id | Kennung der Person |
employee_last_name | Nachname |
employee_first_name | Vorname |
employee_tax_id | Steuernummer (leer in der minimierten Ansicht) |
date | Tag des Beginns, in der Zeitzone des Unternehmens |
kind | Situation: WORK (Arbeitstag), BREAK (Pause), WAITING (Wartezeit), ON_CALL (Bereitschaft) oder DISCONNECTION_INTERRUPTION |
start | Startzeitpunkt |
end | Endzeitpunkt (leer, wenn es kein Ausstempeln gibt) |
duration_minutes | Dauer des Abschnitts in Minuten |
start_clocking_id | Kennung der Startbuchung |
end_clocking_id | Kennung der Endbuchung |
start_channel | Kanal, über den der Beginn erfolgte: WEB, MCP, CHAT, SYSTEM, TECHNICAL_INCIDENT oder LEGACY (vor dem Verlauf) |
end_channel | Kanal des Endes, mit denselben Werten |
modality | ON_SITE (vor Ort) oder REMOTE |
hours_nature | ORDINARY, OVERTIME oder COMPLEMENTARY |
overtime_compensation | REST (Freizeitausgleich) oder PAY (vergütet), bei Überstunden |
force_majeure | true, wenn die Stunden auf höherer Gewalt beruhen |
conciliation_measure_key | Schlüssel der Vereinbarkeitsmaßnahme (leer in der minimierten Ansicht) |
conciliation_measure_text | Detail der Maßnahme (leer in der minimierten Ansicht) |
automatic_end | true, wenn das Ende vom automatischen Abschluss vor dieser Erfassung gesetzt wurde |
incomplete | true, wenn es ein Einstempeln ohne Ausstempeln an einem beendeten Tag ist |
voided_at | Zeitpunkt, zu dem der Abschnitt storniert wurde |
end_voided_at | Zeitpunkt, zu dem nur das Ausstempeln storniert wurde |
has_conciliation_measure | true, wenn der Abschnitt eine Maßnahme trägt (das Einzige, was die Vertretung sieht) |
Änderungen: changes (change)
Eine Zeile pro angewendeter Revision und pro Vorschlag einer Änderung, mit Angabe, wer vorschlägt, wer freigibt, dem Widerspruch und den Markierungen „nach dem Abschluss“ und technische Störung.
| Spalte | Was sie enthält |
|---|---|
employee_id, employee_last_name, employee_first_name | Die betroffene Person |
record | revision (angewendete Änderung) oder proposal (Vorschlag) |
id | Kennung der Zeile |
proposal_id | Vorschlag, aus dem eine Revision stammt |
clocking_id | Betroffene Buchung |
action | CREATE (Eintrag), MOVE (Zeitänderung), VOID (Stornierung) oder RECLASSIFY (Neueinstufung) |
at | Zeitpunkt der Änderung |
status | PENDING, ACCEPTED, REJECTED oder WITHDRAWN |
channel | Kanal, über den sie erfolgte |
technical_incident | true, wenn es eine technische Störung ist |
after_close | true, wenn sie nach dem Monatsabschluss erfolgte |
reason | Begründung der Änderung |
before, after | Wie die Buchung war und wie sie jetzt ist (in JSON) |
author | Wer die Änderung vorgenommen hat |
author_ip | IP, von der aus sie erfolgte (leer in der minimierten Ansicht) |
proposed_by | Wer vorgeschlagen hat |
proposed_for | Im Namen welcher Partei: EMPLOYEE oder COMPANY |
proposer_ip | IP desjenigen, der vorgeschlagen hat |
decided_by | Wer entschieden hat |
decided_for | Im Namen welcher Partei er entschieden hat |
decided_at | Zeitpunkt der Entscheidung |
decider_ip | IP desjenigen, der entschieden hat |
decision_reason | Begründung der Entscheidung, bei Ablehnung |
employee_discrepancy | Widerspruch der Person |
discrepancy_at | Wann sie ihn hinterlegt hat |
applied_at | Wann sie auf die Erfassung angewendet wurde |
representation_notified_at | Wann die Arbeitnehmervertretung benachrichtigt wurde |
Tagessummen: day_totals (day_total)
Eine Zeile pro Person und Tag. Alle Zeiten sind in Minuten.
| Spalte | Was sie enthält |
|---|---|
employee_id, employee_last_name, employee_first_name | Die Person |
date | Der Tag |
worked_minutes | Tatsächliche Arbeitszeit (schließt Unterbrechungen der Nichterreichbarkeit ein) |
ordinary_minutes | Davon reguläre |
overtime_minutes | Davon Überstunden |
complementary_minutes | Davon Mehrarbeit (Teilzeit) |
unclassified_minutes | Davon nicht eingeordnet (es zählt nur das Gespeicherte, nicht der Vorschlag) |
break_minutes | Pausen |
waiting_minutes | Wartezeiten |
on_call_minutes | Bereitschaftszeit |
disconnection_minutes | Unterbrechungen der Nichterreichbarkeit (bereits in der tatsächlichen Arbeitszeit enthalten) |
incomplete | true, wenn es an diesem Tag Einstempeln ohne Ausstempeln gibt |
workday_regime | FULL_TIME oder PART_TIME, nach dem laufenden Vertrag |
part_time_percentage | Prozentsatz der Teilzeit |
schedule_mode | FIXED oder FLEXIBLE |
ordinary_limit_exceeded | true, wenn das Tagesmaximum regulärer Stunden überschritten wird |
short_rest_minutes | Minuten Ruhezeit seit dem vorigen Arbeitstag, wenn es weniger als 12 Stunden waren |
Monatssummen: month_totals (month_total)
Eine Zeile pro Person und Monat. Sie wiederholt die neun Minutenspalten der
Tagessummen (worked_minutes … disconnection_minutes), nun pro Monat
addiert, und ergänzt:
| Spalte | Was sie enthält |
|---|---|
employee_id, employee_last_name, employee_first_name | Die Person |
month | Der Monat (JJJJ-MM) |
days_worked | Tage mit Arbeit |
incomplete_days | Unvollständige Tage |
flexible_target_minutes | Monatsziel bei flexiblem Arbeitsplan |
flexible_worked_minutes | Im Monat geleistet bei flexiblem Arbeitsplan |
flexible_excess_minutes | Überschuss gegenüber dem Ziel (nie negativ) |
flexible_deficit_minutes | Defizit gegenüber dem Ziel (nie negativ) |
Die flexible Monatsabrechnung erscheint nur für ganze Monate innerhalb des heruntergeladenen Bereichs. Der Saldo ist in Überschuss und Defizit aufgeteilt, zwei Spalten, die nie negativ sind.