Zum Hauptinhalt springen

Exportformate

Zeiterfassung exportiert Stempeldaten als CSV- oder JSON-Datei sowie als DATEV-Importdatei für die Lohnabrechnung. Die Dateien lassen sich herunterladen oder direkt auf konfigurierte Speicherziele (OneDrive/SharePoint, SFTP, SMB) hochladen. Diese Seite dokumentiert die Dateiformate und das Ablageschema als Vertrag für weiterverarbeitende Systeme — Lohnbuchhaltung, HR-Software und BI-Werkzeuge.

Verwendung durch Dritte

Diese Schnittstelle ist für die Nutzung durch Drittsysteme freigegeben. Änderungen und Erweiterungen werden je Version in den Release Notes dokumentiert.

Grundlagen

  • Typ: Datei-Export — CSV, JSON (Karte Datei-Export) und DATEV-Textdateien (Karte Datev-Export) in der Moduloberfläche
  • Datengrundlage: die Stempelereignisse aus der externen Datenbank, gefiltert nach Jahr, optional Monat und optional einem einzelnen Benutzer
  • Exportarten: Zeitstempel (rohe Ereignisse) oder Zeiterfassung (berechnete Zeitdauern, wahlweise pro Tag, pro Monat oder pro Jahr)
  • Kodierung: UTF-8, eine Zeile je Datensatz; Feldtrennzeichen Semikolon (CSV und DATEV); Dezimaltrennzeichen Komma
  • Personalnummern: Das Feld id (CSV) bzw. customId (JSON) und die DATEV-Personalnummer stammen aus der Zuordnung unter Konfiguration / Einstellungen / Eigene IDs. Ohne Zuordnung bleibt das Feld im CSV-/JSON-Export leer; für den DATEV-Export ist die Zuordnung zwingend erforderlich.
  • Lizenz: Exporte erfordern eine gültige Modullizenz.

Der Benutzername ist nicht Bestandteil der Exporte; die Zuordnung erfolgt über die Account-ID oder die Personalnummer.

Berechnung der Zeitdauern

Für die Zeiterfassungs- und DATEV-Exporte paart das Modul die Stempelereignisse je Benutzer und Kalendertag chronologisch (inout) und summiert die Abschnitte:

  • Beginnt ein Tag mit out (Einstempeln am Vortag), zählt die Zeit ab 00:00 Uhr.
  • Endet ein Tag mit offenem in, zählt die Zeit bis zum Tagesende; beim aktuellen Tag bis zum Zeitpunkt des Exports.
  • Bei mehreren in-Ereignissen in Folge zählt das jeweils letzte vor dem nächsten out; weitere out-Ereignisse ohne vorangegangenes in bleiben unberücksichtigt.

Ergebnis ist eine Stundenzahl mit zwei Nachkommastellen und Dezimalkomma (z. B. 8,53). Monats- und Jahreswerte sind Summen der Tageswerte.

CSV- und JSON-Export

Beide Dateitypen enthalten dieselben Felder; im CSV heißt die Personalnummern-Spalte id, im JSON customId.

Zeitstempel-Export

Ein Datensatz je Stempelereignis:

CSV-SpalteJSON-FeldFormatBedeutung
datedateISO-8601, z. B. 2026-07-01T07:58:23Zeitpunkt des Stempelereignisses (lokale Anlagenzeit)
idcustomIdZeichenkette, ggf. leerPersonalnummer aus Eigene IDs
accountIdaccountIdGanzzahlAccount-ID des Benutzers auf der STARFACE
statusstatusin oder outeingestempelt / ausgestempelt

Zeiterfassungs-Export (Zeitdauern)

Ein Datensatz je Benutzer und Zeiteinheit:

CSV-SpalteJSON-FeldFormatBedeutung
datedateJJJJ-MM-TT (pro Tag), JJJJ-MM (pro Monat), JJJJ (pro Jahr)Zeiteinheit der Summe
idcustomIdZeichenkette, ggf. leerPersonalnummer aus Eigene IDs
accountIdaccountIdGanzzahlAccount-ID des Benutzers
durationdurationStunden mit Dezimalkomma, z. B. 8,53erfasste Zeitdauer

Formatdetails:

  • CSV: erste Zeile ist die Kopfzeile mit den Spaltennamen, Felder semikolongetrennt, keine Anführungszeichen.
  • JSON: die Datei enthält ein JSON-Array der Datensätze in einer Zeile (kompakt, ohne Einrückung). accountId ist ein JSON-Zahlwert; alle übrigen Felder sind Zeichenketten — auch duration (wegen des Dezimalkommas).
  • Sortierung: Bei den Zeiterfassungs-Exporten sind die Datumswerte je Benutzer aufsteigend sortiert, die Reihenfolge der Benutzer ist nicht zugesichert. Beim Zeitstempel-Export entspricht die Zeilenreihenfolge der Ablage in der Datenbank. Sortieren Sie in der Weiterverarbeitung bei Bedarf selbst.

DATEV-Lohnimport

Der DATEV-Export erzeugt semikolongetrennte Textdateien (.txt) für den Lohn-Import über eine Herstellerformat-Beschreibung: Die zugehörige INI-Datei (siehe unten) wird einmalig in DATEV importiert und definiert dort Feldaufbau und Trennzeichen; anschließend lassen sich die Monatsdateien einlesen. Zwei Varianten stehen bereit:

  • Monatserfassung — eine Summenzeile je Benutzer und Monat
  • Kalendererfassung — eine Zeile je Benutzer und Kalendertag

Voraussetzungen in der Modulkonfiguration:

AngabePflichtVerwendung
BeraternummerjaVorlaufzeile
MandantennummerjaVorlaufzeile
Ausfallschlüsselnur KalendererfassungFeld 3 jeder Datenzeile (für alle Zeilen identisch)
Personalnummern (Eigene IDs)jaFeld 1 jeder Datenzeile — ohne Zuordnung entstehen unbrauchbare Datensätze

Aufbau der Importdateien

Beide Varianten beginnen mit derselben Vorlaufzeile:

FeldFormatBedeutung
1GanzzahlBeraternummer
2GanzzahlMandantennummer
3MM/JJJJAbrechnungsmonat

Monatserfassung — Datenzeilen (2 Felder):

FeldFormatBedeutung
1ZeichenkettePersonalnummer
2Stunden mit DezimalkommaSumme der erfassten Stunden im Monat

Kalendererfassung — Datenzeilen (4 Felder), je Benutzer nach Kalendertag aufsteigend sortiert; nur Tage mit erfassten Zeiten werden ausgegeben:

FeldFormatBedeutung
1ZeichenkettePersonalnummer
2TT (zweistellig)Kalendertag im Abrechnungsmonat
3Zeichenkettekonfigurierter Ausfallschlüssel
4Stunden mit Dezimalkommaerfasste Stunden des Tages

Formatbeschreibung (INI-Datei)

Zu beiden Varianten liefert das Modul die passende Herstellerformat-Beschreibung als INI-Download (Dateiname zeiterfassung_monatserfassung.ini). Inhalt für die Monatserfassung:

[Allgemein]
Feldanzahl = 2
Feldtrennzeichen = Strichpunkt
Satztrennzeichen = Enter/Return
Zahlenkomma = ,
Datumstrennzeichen = /

[Feldinhalt]
Feld1 = Personalnummer
Feld2 = Wert

Inhalt für die Kalendererfassung:

[Allgemein]
Feldanzahl = 4
Feldtrennzeichen = Strichpunkt
Satztrennzeichen = Enter/Return
Zahlenkomma = ,
Datumstrennzeichen = /

[Feldinhalt]
Feld1 = Personalnummer
Feld2 = TagNr
Feld3 = Ausfallschlüssel
Feld4 = Wert

Der DATEV-Export steht als Download in der Moduloberfläche bereit; eine Ablage auf Speicherzielen erfolgt für DATEV-Dateien nicht.

Upload auf Speicherziele

CSV- und JSON-Exporte lassen sich statt als Download direkt auf ein externes Speicherziel kopieren: Ist beim Export ein Speicherziel ausgewählt, lädt das Modul die Datei unmittelbar nach der Erzeugung dorthin hoch — je Exportvorgang eine Datei. Eine zeitgesteuerte, wiederkehrende Ablage bietet Modulversion 26.4.1 nicht. Enthält der gewählte Zeitraum keine Daten, wird keine Datei erzeugt und nichts hochgeladen.

Speicherziele verwalten Sie in der Moduloberfläche unter Speicherziele / Externe Speicherziele — je Typ beliebig viele benannte Ziele, jeweils mit Testfunktion:

ZielVerbindungsangabenAblageort
OneDrive / SharePointMicrosoft-Anmeldung im Modul (als Anwendung oder als Benutzer; die Benutzeranmeldung verwendet die Microsoft-Graph-Berechtigungen User.Read und Files.ReadWrite.All), Feld Unterverzeichnis, Option Persönliches OneDrive nutzen (nur bei Benutzeranmeldung)Standardmäßig die Dokumentbibliothek des Standard-SharePoint der Organisation (Stammwebsite des Tenants); mit Persönliches OneDrive nutzen das persönliche OneDrive des angemeldeten Benutzers. Das Unterverzeichnis wird relativ zum Laufwerksstamm angelegt; Upload in 5-MiB-Blöcken mit bis zu 3 Versuchen.
SFTPSFTP Server, SFTP Verzeichnis, SFTP Benutzername, SFTP Kennwortangegebenes Verzeichnis auf dem SFTP-Server. Alle angegebenen Verzeichnisse außer dem letzten müssen existieren; maximal ein Verzeichnis wird dynamisch erstellt.
SMBSMB Server, SMB Freigabe, SMB Unterverzeichnis, SMB Benutzername, SMB Kennwort, SMB Workgroup/Domain, SMB Sicherheit (Standard ntlmssp)angegebenes Unterverzeichnis der Freigabe (SMB 3). Benutzername und Kennwort sind zwingend erforderlich; unterstützt werden ausschließlich Microsoft-Windows-Freigaben.

Passwörter der Speicherziele legt das Modul verschlüsselt ab. Das Modul erzeugt keine eigene Ordnerstruktur — alle Dateien landen unmittelbar im konfigurierten Zielordner. Die Testfunktion lädt eine Datei zeiterfassung_testfile_***.tmp in das Ziel hoch, die Sie anschließend löschen können.

Dateinamen

Der Dateiname kodiert Exportart, optionalen Benutzerfilter und Zeitraum. Beim Upload wird zusätzlich der Erzeugungszeitpunkt angehängt, sodass aufeinanderfolgende Uploads einander nicht überschreiben:

ExportMuster (Download)Beispiel
Zeitstempelzeitstempel[_AccountID]-Jahr[-Monat].csv bzw. .jsonzeitstempel-2026-7.csv
Zeiterfassung pro Tagzeiterfassung_tag[_AccountID]-Jahr[-Monat].csv bzw. .jsonzeiterfassung_tag_101-2026-7.csv
Zeiterfassung pro Monatzeiterfassung_monat[_AccountID]-Jahr[-Monat].csv bzw. .jsonzeiterfassung_monat-2026-7.json
Zeiterfassung pro Jahrzeiterfassung_jahr[_AccountID]-Jahr.csv bzw. .jsonzeiterfassung_jahr-2026.csv
DATEV Monatserfassungmonatserfassung-JJJJ-MM.txtmonatserfassung-2026-07.txt
DATEV Kalendererfassungkalendererfassung-JJJJ-MM.txtkalendererfassung-2026-07.txt
  • [_AccountID] erscheint nur, wenn der Export auf einen einzelnen Benutzer gefiltert ist; [-Monat] entfällt bei Jahresexporten und bei der Auswahl „Alle Monate".
  • Bei CSV/JSON steht der Monat ohne führende Null (-2026-7), bei den DATEV-Dateien zweistellig (-2026-07).
  • Beim Upload wird vor der Dateiendung _JJJJMMTT_HHMMSS ergänzt, z. B. zeiterfassung_monat-2026-7_20260801_143005.csv.

Beispiele

CSV, Zeitstempel (zeitstempel-2026-7.csv):

date;id;accountId;status
2026-07-01T07:58:23;1001;101;in
2026-07-01T12:02:41;1001;101;out
2026-07-01T12:31:07;1001;101;in
2026-07-01T16:45:12;1001;101;out

CSV, Zeiterfassung pro Monat (zeiterfassung_monat-2026-7.csv):

date;id;accountId;duration
2026-07;1001;101;152,25
2026-07;1002;102;140,00

JSON, Zeiterfassung pro Tag (zeiterfassung_tag_101-2026-7.json; die Datei enthält das Array in einer Zeile, hier zur Lesbarkeit umbrochen):

[
{"date": "2026-07-01", "customId": "1001", "accountId": 101, "duration": "8,53"},
{"date": "2026-07-02", "customId": "1001", "accountId": 101, "duration": "7,95"}
]

DATEV Monatserfassung (monatserfassung-2026-07.txt, Beraternummer 12345, Mandantennummer 67890):

12345;67890;07/2026
1001;152,25
1002;140,00

DATEV Kalendererfassung (kalendererfassung-2026-07.txt, Ausfallschlüssel im Beispiel 3):

12345;67890;07/2026
1001;01;3;8,53
1001;02;3;7,95
1002;01;3;8,00
Anwendungsbeispiel

Zum Monatsabschluss exportiert die Personalabteilung die Stempeldaten mit einem Klick als CSV-Monatsdatei auf die SFTP-Freigabe des Steuerbüros und lädt zusätzlich die DATEV-Monatserfassung herunter. Die Lohnbuchhaltung hat das Herstellerformat einmalig über die mitgelieferte INI-Datei eingerichtet und liest die Stunden ohne manuelle Nacherfassung ein.

Versionierung & Kompatibilität

Die CSV-Spaltenfolge und -namen, die JSON-Feldnamen, der Aufbau der DATEV-Dateien sowie das Dateinamensschema sind der stabile Vertrag dieser Schnittstelle; dokumentierter Stand ist Modulversion 26.4.1. Erweiterungen (z. B. zusätzliche Felder) und Änderungen werden in den Release Notes der jeweiligen Modulversion dokumentiert. Automatisierte Weiterverarbeitungen sollten Felder über die Kopfzeile (CSV) bzw. die Feldnamen (JSON) zuordnen, nicht über feste Spaltenpositionen.