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.
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 (in → out) 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ächstenout; weitereout-Ereignisse ohne vorangegangenesinbleiben 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-Spalte | JSON-Feld | Format | Bedeutung |
|---|---|---|---|
date | date | ISO-8601, z. B. 2026-07-01T07:58:23 | Zeitpunkt des Stempelereignisses (lokale Anlagenzeit) |
id | customId | Zeichenkette, ggf. leer | Personalnummer aus Eigene IDs |
accountId | accountId | Ganzzahl | Account-ID des Benutzers auf der STARFACE |
status | status | in oder out | eingestempelt / ausgestempelt |
Zeiterfassungs-Export (Zeitdauern)
Ein Datensatz je Benutzer und Zeiteinheit:
| CSV-Spalte | JSON-Feld | Format | Bedeutung |
|---|---|---|---|
date | date | JJJJ-MM-TT (pro Tag), JJJJ-MM (pro Monat), JJJJ (pro Jahr) | Zeiteinheit der Summe |
id | customId | Zeichenkette, ggf. leer | Personalnummer aus Eigene IDs |
accountId | accountId | Ganzzahl | Account-ID des Benutzers |
duration | duration | Stunden mit Dezimalkomma, z. B. 8,53 | erfasste 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).
accountIdist ein JSON-Zahlwert; alle übrigen Felder sind Zeichenketten — auchduration(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:
| Angabe | Pflicht | Verwendung |
|---|---|---|
| Beraternummer | ja | Vorlaufzeile |
| Mandantennummer | ja | Vorlaufzeile |
| Ausfallschlüssel | nur Kalendererfassung | Feld 3 jeder Datenzeile (für alle Zeilen identisch) |
| Personalnummern (Eigene IDs) | ja | Feld 1 jeder Datenzeile — ohne Zuordnung entstehen unbrauchbare Datensätze |
Aufbau der Importdateien
Beide Varianten beginnen mit derselben Vorlaufzeile:
| Feld | Format | Bedeutung |
|---|---|---|
| 1 | Ganzzahl | Beraternummer |
| 2 | Ganzzahl | Mandantennummer |
| 3 | MM/JJJJ | Abrechnungsmonat |
Monatserfassung — Datenzeilen (2 Felder):
| Feld | Format | Bedeutung |
|---|---|---|
| 1 | Zeichenkette | Personalnummer |
| 2 | Stunden mit Dezimalkomma | Summe der erfassten Stunden im Monat |
Kalendererfassung — Datenzeilen (4 Felder), je Benutzer nach Kalendertag aufsteigend sortiert; nur Tage mit erfassten Zeiten werden ausgegeben:
| Feld | Format | Bedeutung |
|---|---|---|
| 1 | Zeichenkette | Personalnummer |
| 2 | TT (zweistellig) | Kalendertag im Abrechnungsmonat |
| 3 | Zeichenkette | konfigurierter Ausfallschlüssel |
| 4 | Stunden mit Dezimalkomma | erfasste 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:
| Ziel | Verbindungsangaben | Ablageort |
|---|---|---|
| OneDrive / SharePoint | Microsoft-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. |
| SFTP | SFTP Server, SFTP Verzeichnis, SFTP Benutzername, SFTP Kennwort | angegebenes Verzeichnis auf dem SFTP-Server. Alle angegebenen Verzeichnisse außer dem letzten müssen existieren; maximal ein Verzeichnis wird dynamisch erstellt. |
| SMB | SMB 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:
| Export | Muster (Download) | Beispiel |
|---|---|---|
| Zeitstempel | zeitstempel[_AccountID]-Jahr[-Monat].csv bzw. .json | zeitstempel-2026-7.csv |
| Zeiterfassung pro Tag | zeiterfassung_tag[_AccountID]-Jahr[-Monat].csv bzw. .json | zeiterfassung_tag_101-2026-7.csv |
| Zeiterfassung pro Monat | zeiterfassung_monat[_AccountID]-Jahr[-Monat].csv bzw. .json | zeiterfassung_monat-2026-7.json |
| Zeiterfassung pro Jahr | zeiterfassung_jahr[_AccountID]-Jahr.csv bzw. .json | zeiterfassung_jahr-2026.csv |
| DATEV Monatserfassung | monatserfassung-JJJJ-MM.txt | monatserfassung-2026-07.txt |
| DATEV Kalendererfassung | kalendererfassung-JJJJ-MM.txt | kalendererfassung-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_HHMMSSergä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
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.