prekontoDokumentationAPIMCPFAQBlog

DATEV-Export

Das Ergebnis eines Exports ist eine Datei, die DATEV einliest. Diese Seite beschreibt, wie sie aufgebaut ist, welche Felder prekonto füllt und an welchen Stellen ein Buchungsstapel in der Praxis scheitert — Kodierung, Feldlängen und ein Belegdatum ohne Jahr.

Was der Export tut — und was nicht

Sie wählen einen Zeitraum. prekonto sammelt alle exportierbaren Buchungssätze dieses Zeitraums — Status auto oder bestaetigt —, prüft sie noch einmal vollständig und schreibt daraus eine EXTF-Datei. Der Vorgang wird als Stapel protokolliert: Dateiname, Anzahl Buchungen, Summe und alles, was beim Schreiben verändert werden musste.

prekonto bucht nicht in DATEV ein. Es erzeugt einen Stapel, den die Kanzlei importiert. Der Import selbst, seine Freigabe und die Festschreibung sind Handlungen in DATEV und bleiben dort — wir haben keinen Zugang zu Ihrem DATEV-Bestand und brauchen keinen.

Vor dem Schreiben läuft die strengste Prüfung der ganzen Kette: die Kontolängen des Mandanten, „Gegenkonto steht in der Kontenliste“, „Automatikkonto ⇒ kein BU-Schlüssel“ und die Wirtschaftsjahr-Grenze. Der Grund ist praktisch: Was hier durchgeht, merkt vor dem DATEV-Import niemand mehr — und dann sitzt jemand in der Kanzlei vor einer Fehlermeldung, die er nicht verursacht hat.

Aufbau der Datei

ZeileInhaltFelder
1Header mit den Kopfdaten des Stapels31
2Spaltenüberschriften125
3 und folgendeje eine Buchungszeile125
EigenschaftWert
KennungEXTF
Version700
Formatkategorie21 (Buchungsstapel)
Formatversion13
Buchungstyp1 (Finanzbuchführung)
Festschreibung0 — im Header und in jeder Zeile
WährungskennzeichenEUR
TrennzeichenSemikolon
Textbegrenzerdoppelte Anführungszeichen
ZeilenendeCRLF
ZeichensatzISO-8859-1
DateinameEXTF_<Bezeichnung>_<von>_<bis>.csv

Die Feldpositionen sind positionsgebunden: DATEV liest Feld 10 als Belegdatum, egal was in der Überschriftenzeile steht. Ein Verschieben um eine Spalte macht aus dem Buchungstext einen Skonto-Betrag — deshalb ist die Zahl 125 keine Schätzung, sondern eine harte Prüfung beim Erzeugen.

Aus den Kopfdaten des Mandanten gehen in den Header: Beraternummer (Feld 11), Mandantennummer (12), Wirtschaftsjahresbeginn (13) und Sachkontenlänge (14), dazu der Stapelzeitraum (15 und 16), die Bezeichnung (17) und der Sachkontenrahmen (27).

Das Belegdatum ohne Jahr

In einer EXTF-Datei stehen drei verschiedene Datumsformate, und alle drei sind Fallstricke:

WoFormatBeispiel
Header: WJ-Beginn, Datum von, Datum bisJJJJMMTT20260701
Header: Erzeugt amJJJJMMTThhmmssfff20260806143012000
Buchungszeile: Belegdatum (Feld 10)TTMM — ohne Jahr1207
Deshalb darf ein Stapel das Wirtschaftsjahr nicht überschreiten. Das Belegdatum in der Buchungszeile trägt kein Jahr; DATEV leitet es aus dem Stapelzeitraum im Header ab. Reicht ein Stapel über die Wirtschaftsjahr-Grenze, wäre 0301 nicht mehr eindeutig — der 3. Januar könnte zu zwei Jahren gehören. prekonto lehnt einen solchen Zeitraum deshalb ab, statt eine Datei zu erzeugen, die beim Import scheitert oder — schlimmer — mit falschem Jahr durchläuft.

Praktisch heißt das: pro Periode exportieren, typischerweise monatlich, und über den Jahreswechsel hinweg zwei Stapel. Das Wirtschaftsjahr endet ein Jahr nach dem hinterlegten Beginn minus einen Tag — bei einem abweichenden Wirtschaftsjahr also nicht am 31. Dezember.

Welche Felder gefüllt werden

Von den 125 Feldern einer Buchungszeile werden die folgenden gefüllt. Alle anderen bleiben leer — ein leeres Feld ist eine Aussage, ein geratenes nicht.

Die gefüllten Feldpositionen. Feld 20 (Beleglink) bleibt leer: Die Verknüpfung mit dem Belegbild gehört zur Belegbild-Ablage in DATEV und wird von prekonto nicht geschrieben.
FeldNameInhalt
1Umsatz (ohne Soll/Haben-Kz)Bruttobetrag, deutsches Zahlenformat
2Soll/Haben-KennzeichenBezogen auf das Konto: Eingangsrechnung H, Gutschrift oder Storno S
7KontoPersonenkonto des Kreditors — eine Stelle länger als die Sachkonten
8Gegenkonto (ohne BU-Schlüssel)Sachkonto für den Aufwand
9BU-SchlüsselSteuerschlüssel. Leer bei Automatikkonten
10BelegdatumTTMM, ohne Jahr
11Belegfeld 1Rechnungsnummer — Grundlage der offenen-Posten-Verwaltung
12Belegfeld 2Zweites Belegfeld, sofern gesetzt
14BuchungstextKurzer Klartext zur Buchung
37KOST1 - KostenstelleSofern gesetzt
38KOST2 - KostenstelleSofern gesetzt
114FestschreibungImmer 0
118GeneralumkehrFür Storno-Sachverhalte

ISO-8859-1: der Fallstrick Nummer eins

Die Datei ist ISO-8859-1 (Latin-1) kodiert, nicht UTF-8. Sie wird byteweise so ausgeliefert, wie sie erzeugt wurde, und muss so bei DATEV ankommen.

Nicht umkodieren. Eine Pipeline, die „zur Sicherheit“ nach UTF-8 normalisiert, liefert einen Stapel mit kaputten Umlauten. Beim Download über die API heißt das: --output datei.csv und nicht durch ein Werkzeug leiten, das Text erkennt und anfasst. Auch ein Editor, der beim Speichern auf UTF-8 wechselt, reicht dafür schon.

Zeichen, die es in ISO-8859-1 nicht gibt, werden vor dem Schreiben ersetzt — wird zu EUR, Auslassungspunkte werden zu drei Punkten. Zeilenumbrüche und Tabulatoren in einem Textfeld werden durch Leerzeichen ersetzt, weil sie sonst die CSV-Zeile sprengen würden. Jeder solche Eingriff erscheint im Schreibprotokoll.

Die Reihenfolge ist dabei wichtig und nicht beliebig: erst umschreiben, dann kürzen. Würde man zuerst kürzen, wäre das Feld nach dem Ersetzen von durch EUR wieder zu lang — und DATEV lehnte die Zeile ab.

Feldlängen und Kürzungen

FeldHöchstlänge
Belegfeld 1 (Rechnungsnummer)36 Zeichen
Belegfeld 212 Zeichen
Buchungstext60 Zeichen
KOST1 / KOST2je 36 Zeichen
Header: Bezeichnung des Stapels30 Zeichen
Header: Exportiert von25 Zeichen

Was länger ist, wird hart abgeschnitten und im Schreibprotokoll gemeldet. Das ist die richtige Reihenfolge der Übel: Ein gekürzter Buchungstext ist ärgerlich, eine abgelehnte Zeile hält den ganzen Import auf. Bei Belegfeld 1 lohnt ein Blick, wenn Ihre Lieferanten lange Rechnungsnummern verwenden — dieses Feld trägt die offene-Posten-Verwaltung, und eine gekürzte Nummer ordnet später keine Zahlung mehr zu.

Das Schreibprotokoll

Jeder Stapel trägt dauerhaft ein Protokoll der Eingriffe, die beim Schreiben nötig waren — abrufbar auch später und nicht nur direkt nach dem Erzeugen. Ein leeres Protokoll heißt: nichts verändert.

CodeBedeutung
gekuerztEin Text war länger als das DATEV-Feld und wurde abgeschnitten.
zeichen_ersetztEin Zeichen ist in ISO-8859-1 nicht darstellbar und wurde ersetzt.
steuerzeichen_entferntEin Zeilenumbruch oder Tabulator hätte die CSV-Zeile gesprengt.

Jeder Eintrag nennt das Feld, die Zeilennummer und — sofern zuordenbar — die betroffene Buchung. Diese Meldungen sind keine Fehler: Die Datei ist gültig und importierbar, der Wert steht nur nicht mehr so darin, wie er geliefert wurde.

Wenn der Export abgelehnt wird

Lieber eine klare Ablehnung als eine Datei, die in der Kanzlei scheitert. Die Gründe:

GrundWas zu tun ist
keine_saetzeIm Zeitraum gibt es keinen exportierbaren Buchungssatz. Prüfliste abarbeiten oder anderen Zeitraum wählen.
zeitraum_ausserhalb_wirtschaftsjahrDer Zeitraum verlässt das Wirtschaftsjahr. Die Antwort nennt Beginn und Ende — den Stapel entsprechend teilen.
buchung_ausserhalb_wirtschaftsjahrEin einzelner Buchungssatz liegt außerhalb. Belegdatum prüfen; es könnte falsch extrahiert sein.
buchung_ausserhalb_zeitraumEin Satz gehört nicht in den gewählten Zeitraum.
buchung_ungueltigWiderspruch zu den Stammdaten: Kontolänge passt nicht zur Sachkontenlänge, oder ein Automatikkonto trägt einen BU-Schlüssel.
header_ungueltigDie Kopfdaten des Mandanten sind unbrauchbar — Beraternummer, Mandantennummer, Wirtschaftsjahr oder Sachkontenlänge prüfen.

Wo es zuordenbar ist, nennt die Antwort die auslösende Buchung. Für die Statuscodes dieser Fälle siehe die Fehlerregel der API. Und noch ein Fall, der nichts mit dem Format zu tun hat: Ist ein Stapel protokolliert, die Datei aber nicht mehr in der Ablage, antwortet der Download mit 410 — dann wird der Stapel neu erzeugt.

GoBD und Festschreibung

Die GoBD verlangen unter anderem, dass Buchungen nachvollziehbar entstehen und nachträgliche Änderungen erkennbar bleiben. Für einen Kontierungsvorschlag heißt das dreierlei: Vorschlag, Buchung und Festschreibung bleiben getrennt, jede Änderung ist nachvollziehbar, und die fachliche Entscheidung bleibt bei einem Menschen.

Was prekonto dafür tut:

Keine Rechtsberatung. Ob Ihre Verfahrensdokumentation und Ihr Prozess insgesamt GoBD-konform sind, entscheidet nicht ein einzelnes Werkzeug in der Kette. Die Punkte oben beschreiben, was prekonto beiträgt — die Beurteilung des Gesamtverfahrens gehört zu Ihrem Steuerberater.

Weiterlesen