Zum Inhalt springen

DATEV-Exportformat

Der Buchhaltungs-Export erstellt aus freigegebenen Eingangsrechnungen ein Exportpaket: einen Buchungsstapel im DATEV-Format und die Belege als DATEV-Belegpakete. Diese Seite beschreibt die Dateien so, wie Acriva sie schreibt. Sie richtet sich an alle, die das Paket einlesen, prüfen oder weiterverarbeiten.

Acriva leistet keine Steuerberatung. Welche Steuerschlüssel und Konten richtig sind, klärt der Arbeitsbereich mit seiner Steuerberatung.

Ein Export ist ein Download, eine ZIP-Datei mit dem Namen DATEV-Export_<von>_<bis>.zip. <von> und <bis> sind der Zeitraum als JJJJMMTT.

Eintrag Inhalt
EXTF_Buchungsstapel_<von>_<bis>.csv Der Buchungsstapel.
Belege_01.zip, Belege_02.zip, … DATEV-Belegpakete. Jedes enthält document.xml und die Belegdateien, ohne Unterordner.

Die Belegpakete sind eigene Einträge neben dem Buchungsstapel und liegen unkomprimiert im Paket, weil sie selbst ZIP-Dateien sind. Die Steuerberatung liest die CSV-Datei in DATEV Rechnungswesen ein (Stapelverarbeitung) und überträgt jedes Belegpaket mit DATEV Belegtransfer an DATEV Unternehmen online.

Datei Format
Buchungsstapel DATEV-Format (EXTF), Header-Version 700, Formatkategorie 21 („Buchungsstapel“), Formatversion 13
document.xml DATEV XML-Schnittstelle online, Version 6.0, Namensraum http://xml.datev.de/bedi/tps/document/v06.0 (Schema Document_v060.xsd)
  • Zeile 1 ist der Header mit 31 Feldern, Zeile 2 enthält die 125 Spaltenüberschriften, und ab Zeile 3 folgt eine Buchungszeile je Kontierungszeile einer Rechnung.
  • Felder sind durch ; getrennt, jede Zeile endet mit CR LF.
  • Textfelder stehen in "; ein " im Text wird verdoppelt. Die Spaltenüberschriften der zweiten Zeile stehen ohne Anführungszeichen.
  • Zahlen haben ein Dezimalkomma und kein Tausendertrennzeichen.
  • Ein leeres Textfeld wird als "" geschrieben, jedes andere leere Feld als nichts.
  • Kein Textfeld enthält ein Steuerzeichen oder einen Zeilenumbruch.

Acriva füllt diese Felder. Alle anderen bleiben leer.

Nr. Feld Wert
1–5 Kennzeichen, Versionsnummer, Formatkategorie, Formatname, Formatversion "EXTF", 700, 21, "Buchungsstapel", 13
6 Erzeugt am Wann der Export erstellt wurde, als JJJJMMTTHHMMSSFFF in deutscher Ortszeit (Europe/Berlin)
8 Herkunft "AC"
11 Beraternummer Aus der DATEV-Anbindung, 1001 bis 9999999
12 Mandantennummer Aus der DATEV-Anbindung, 1 bis 99999
13 WJ-Beginn Der erste Tag des Wirtschaftsjahres, in dem der Zeitraum liegt, als JJJJMMTT
14 Sachkontenlänge Aus der DATEV-Anbindung, 4 bis 8
15, 16 Datum von, Datum bis Der Zeitraum, als JJJJMMTT
17 Bezeichnung "Eingangsrechnungen MM/JJJJ" für genau einen Kalendermonat, sonst "ER TT.MM.JJJJ bis TT.MM.JJJJ"
19 Buchungstyp 1 (Finanzbuchführung)
20 Rechnungslegungszweck 0
21 Festschreibung 0: Die Steuerberatung prüft den Stapel und schreibt ihn in DATEV fest
22 WKZ "EUR"
27 Sachkontenrahmen "03" für SKR03, "04" für SKR04
31 Anwendungsinformation "Acriva"

Feld 9 („Exportiert von“) bleibt leer. Wer exportiert hat, steht im Protokoll von Acriva.

Ein Beispiel für September 2026:

"EXTF";700;21;"Buchungsstapel";13;20261002093015123;;"AC";"";"";29098;10442;20260101;4;20260901;20260930;"Eingangsrechnungen 09/2026";"";1;0;0;"EUR";;"";;;"03";;;"";"Acriva"

Acriva füllt diese Spalten. Alle anderen der 125 Spalten bleiben leer.

Nr. Spalte Wert
1 Umsatz Der Bruttobetrag der Kontierungszeile mit zwei Nachkommastellen, zum Beispiel 1190,00. Immer positiv, nie 0,00.
2 Soll-/Haben-Kennzeichen "S" für eine Rechnung, "H" für eine Gutschrift. Es bezieht sich auf Spalte 7.
3 WKZ Umsatz "EUR"
7 Konto Das Sachkonto der Zeile: Ziffern in der Sachkontenlänge des Arbeitsbereichs.
8 Gegenkonto Das Kreditorenkonto des Lieferanten: Ziffern, höchstens eine Stelle länger als ein Sachkonto.
9 BU-Schlüssel Der Steuerschlüssel der Zeile, eine bis vier Ziffern. Leer, wenn die Zeile keinen hat oder das Sachkonto ein Automatikkonto ist.
10 Belegdatum Das Rechnungsdatum als TTMM. Das Jahr ergibt sich aus dem Header.
11 Belegfeld 1 Die Rechnungsnummer, auf die zulässigen Zeichen abgebildet (siehe Belegfeld 1), höchstens 36 Zeichen.
14 Buchungstext Der Name des Lieferanten und die Rechnungsnummer, wie sie geschrieben ist, höchstens 60 Zeichen.
20 Beleglink "BEDI ""<GUID>""" mit der GUID des Belegs im Belegpaket.
37 KOST1 – Kostenstelle Die Nummer der Kostenstelle, höchstens 36 Zeichen aus [A-Za-z0-9_ ]. Leer, wenn die Zeile keine hat.
114 Festschreibung 0

Der Betrag ist brutto, und der Steuerschlüssel bestimmt die Steuer. Eine Gutschrift wird mit positivem Betrag und "H" geschrieben; die Generalumkehr (Spalte 118) verwendet Acriva nicht.

Diese Spalten füllt Acriva nicht: die EU-Spalten (40, 41, 123, 124), „Sachverhalt L+L“ (43), den Steuersatz (119), Skonto (13), das Leistungsdatum (115) und die Fälligkeit (117). Eine Buchung, die sie braucht, ergänzt die Steuerberatung in DATEV.

Die Nummern der Steuerschlüssel sind Daten des Arbeitsbereichs, keine festen Werte von Acriva: Der Stapel schreibt die Nummer, die an der Kontierungszeile gewählt ist.

Eine Rechnung mit zwei Kontierungszeilen, die zweite ohne Steuerschlüssel und mit Kostenstelle, beginnt so (jede Zeile hat 125 Spalten, hier gekürzt):

1190,00;"S";"EUR";;;"";4930;70001;"9";0509;"RE-2026/0815";"";;"Muster Bürobedarf GmbH RE-2026/0815";;"";;;;"BEDI ""0199b000-0000-7000-8000-000000000001""";…
238,50;"S";"EUR";;;"";4980;70001;"";0509;"RE-2026/0815";"";;"Muster Bürobedarf GmbH RE-2026/0815";;"";;;;"BEDI ""0199b000-0000-7000-8000-000000000001""";…

„Belegfeld 1“ lässt nur die Zeichen [A-Za-z0-9_$&%*+\-/] zu. Acriva bildet die Rechnungsnummer in dieser Reihenfolge ab:

  1. ä ö ü ß werden zu ae oe ue ss, æ œ þ zu ae oe th, jeweils auch in Großbuchstaben.
  2. Jeder andere Buchstabe mit einem Akzent oder Strich wird zu seinem Grundbuchstaben: é zu e, ø zu o, ł zu l.
  3. Jedes Zeichen, das danach nicht zulässig ist, entfällt. Dazu gehören Leerzeichen, Punkt und Komma.
  4. Ein + oder - am Anfang entfällt.
  5. Das Ergebnis wird auf 36 Zeichen gekürzt.

Aus RE 2026.0042-Ä wird so RE20260042-AE. Zwei Rechnungsnummern, die sich nur in entfallenen Zeichen unterscheiden, ergeben denselben Wert. Bleibt kein Zeichen übrig, exportiert Acriva die Rechnung nicht. Die Rechnungsnummer, wie sie geschrieben ist, steht im Buchungstext.

Der Buchungstext besteht aus dem Namen des Lieferanten, einem Leerzeichen und der Rechnungsnummer. Zeichen außerhalb des Zeichensatzes werden ersetzt (siehe Zeichensatz). Beginnt der Text mit =, +, -, @, einem Tabulator oder einem Wagenrücklauf und ist er keine Zahl, stellt Acriva ein ' voran, damit eine Tabellenkalkulation ihn nicht als Formel liest. Danach wird der Text auf 60 Zeichen gekürzt.

Jedes Belege_NN.zip enthält document.xml und je Rechnung eine Datei: das Original der Dokumentversion, die bei der Erstellung des Exports aktuell war.

  • Der Dateiname ist die GUID des Dokuments als 32 Hexadezimalziffern ohne Bindestriche und die Endung, zum Beispiel 0199b000000070008000000000000001.pdf.
  • Die GUID ist die ID des Dokuments in Acriva. Dieselbe GUID steht im „Beleglink“ der Buchungszeilen.
  • Acriva übergibt die Dateitypen PDF, XML, TIF, JPG und PNG. Der Typ ergibt sich aus der Endung des Dateinamens des Originals; nur wenn der Name keine Endung hat, aus seinem Medientyp. Eine Rechnung mit einem anderen Dateityp kommt in keinen Export.

document.xml hat diesen Aufbau:

<?xml version="1.0" encoding="utf-8"?>
<archive xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="6.0" generatingSystem="Acriva" xmlns="http://xml.datev.de/bedi/tps/document/v06.0">
<header>
<date>2026-10-02T09:30:15</date>
</header>
<content>
<document guid="0199b000-0000-7000-8000-000000000001" type="1" processID="2">
<extension xsi:type="File" name="0199b000000070008000000000000001.pdf" />
<repository>
<level id="1" name="Acriva" />
<level id="2" name="Eingangsrechnungen" />
<level id="3" name="2026-09" />
</repository>
</document>
</content>
</archive>
Angabe Wert
header/date Wann der Export erstellt wurde, in deutscher Ortszeit ohne Zeitzone. Der Header enthält sonst nichts.
document/@guid Die ID des Dokuments in Acriva.
document/@type 1 (Eingangsrechnung)
document/@processID 2: Der Beleg soll abgelegt und nicht noch einmal zur Buchung angeboten werden. Das bestätigt erst der erste Import.
extension Ein Eintrag vom Typ File mit dem Dateinamen des Belegs.
repository Drei Ebenen: Acriva, Eingangsrechnungen und der Monat des Rechnungsdatums als JJJJ-MM.

Jedes Dokument steht in einem Export genau einmal, auch wenn seine Rechnung mehrere Buchungszeilen hat.

Datei Zeichensatz
Buchungsstapel Windows-1252, ohne Byte-Order-Mark
document.xml UTF-8, ohne Byte-Order-Mark
Dateinamen in den Paketen nur ASCII

Ein Zeichen, das Windows-1252 nicht kennt, wird ersetzt und nie stillschweigend weggelassen: zuerst durch seinen Grundbuchstaben (ł zu l, č zu c), sonst durch ?. Steuerzeichen und Zeilenumbrüche werden zu einem Leerzeichen. „Łódź Sp. z o.o.“ steht im Buchungstext deshalb als „Lódz Sp. z o.o.“.

Ein Export wählt nach dem Rechnungsdatum aus. Der Zeitraum muss in einem Wirtschaftsjahr des Arbeitsbereichs liegen, weil eine Buchungszeile nur Tag und Monat trägt und der Header ein Wirtschaftsjahr nennt. Einen Zeitraum über die Grenze eines Wirtschaftsjahres lehnt Acriva ab; exportieren Sie die beiden Teile getrennt.

Ein Export nimmt Rechnungen auf, die freigegeben, noch nicht exportiert und nicht im Papierkorb sind, deren Rechnungsdatum im Zeitraum liegt und deren Dokument die exportierende Person lesen darf. Eine Rechnung bleibt draußen, wenn

  • ihre Kontierung fehlt oder nicht den Rechnungsbetrag ergibt,
  • ihre Rechnungsnummer fehlt oder kein zulässiges Zeichen für „Belegfeld 1“ enthält,
  • ihr Rechnungsdatum fehlt (die Liste der Kandidaten nennt eine solche Rechnung in jedem Zeitraum, damit sie auffällt),
  • Netto und USt. nicht den Bruttobetrag ergeben,
  • ihre Währung nicht Euro ist,
  • ihr kein Lieferant verknüpft ist, der Lieferant nicht bestätigt ist oder kein Kreditorenkonto hat,
  • ein Sachkonto nicht die Sachkontenlänge hat oder nur aus Nullen besteht, das Kreditorenkonto nicht aus Ziffern besteht, um mehr als eine Stelle länger ist als ein Sachkonto oder nur aus Nullen besteht, oder die Nummer einer Kostenstelle oder eines Steuerschlüssels nicht ihre Form hat,
  • ihr Original größer als 20 MB ist oder einen Dateityp hat, den Acriva nicht übergibt.

Die Texte, mit denen die App diese Gründe nennt, stehen unter Was der Export ablehnt.

Grenze Wert
Rechnungen je Export höchstens 2.000
Originale je Export zusammen höchstens 1 GB
Ein Original höchstens 20 MB
Ein Belegpaket (Belege_NN.zip) wird bei etwa 100 MB oder 4.999 Belegen geschlossen
Kontierungszeilen je Rechnung höchstens 50
Grund beim Zurücksetzen 1 bis 500 Zeichen

Eine Auswahl über 2.000 Rechnungen oder 1 GB beantwortet die API mit 409 und dem Code export-too-large. Wählen Sie einen kürzeren Zeitraum. Fehlen beim Erstellen die Berater- oder die Mandantennummer der DATEV-Anbindung, ist die Antwort 409 mit dem Code finance-settings-incomplete.

  • Ganz oder gar nicht. Ein Export entsteht in einem Schritt. Hat sich eine einzige Rechnung der Auswahl inzwischen geändert oder wurde sie exportiert, entsteht kein Export (409, Code export-conflict).
  • Jede Rechnung in einem Export. An einer exportierten Rechnung lassen sich Kontierung, Lieferant, Steuerzeilen und Skonto nicht mehr ändern, und sie kommt in kein weiteres Paket, solange niemand ihre Exportmarkierung zurücksetzt. Die Felder, die aus dem Dokument kopiert sind (Rechnungsnummer, Lieferantenname, Datumsangaben, Bruttobetrag), folgen weiterhin dem Dokument. Das Paket ändert sich dadurch nicht: Acriva speichert seine Buchungszeilen, wenn es erstellt wird.
  • Derselbe Stapel bei jedem Download. Acriva speichert die Buchungszeilen bei der Erstellung so, wie sie geschrieben werden, zusammen mit dem Zeitpunkt und den Angaben der DATEV-Anbindung. Der Buchungsstapel wird nur daraus gebaut und ist bei jedem Download Byte für Byte derselbe, auch wenn sich Stammdaten oder die DATEV-Anbindung später ändern.
  • Dieselben Belege. Der Export merkt sich je Rechnung die Dokumentversion. Originale ändern sich nie, deshalb liefert jeder Download dieselben Dateien. Wurde ein Dokument inzwischen endgültig gelöscht, fehlt seine Datei im Belegpaket; der Buchungsstapel bleibt, wie er gespeichert ist.
  • Zugriff. Ein früheres Paket kann nur herunterladen, wer jedes Dokument darin lesen darf. Sonst antwortet der Download mit 404. Jeder Download wird je Beleg im Protokoll vermerkt.
  • Zurücksetzen. Wird die Exportmarkierung einer Rechnung mit einem Grund zurückgesetzt, geht die Rechnung mit dem nächsten Paket hinaus. Der frühere Export bleibt unverändert und enthält sie weiterhin. Die GUID des Belegs bleibt dieselbe, weil sie die ID des Dokuments ist.

Die App nutzt diese Endpunkte; alle erfordern die Berechtigung, den Export zu nutzen. Die Schemas stehen in der API-Referenz, die Anmeldung beschreibt die Upload-API.

Endpunkt Zweck
GET /api/v1/t/<tenant>/finance/exports/candidates?from=…&to=… Die Kandidaten eines Zeitraums, jede mit den Gründen, die sie ausschließen
POST /api/v1/t/<tenant>/finance/exports/preview Die Buchungszeilen einer Auswahl; schreibt nichts
POST /api/v1/t/<tenant>/finance/exports Erstellt den Export
GET /api/v1/t/<tenant>/finance/exports Frühere Exporte, der neueste zuerst
GET /api/v1/t/<tenant>/finance/exports/<exportId>/download Das Paket als ZIP
POST /api/v1/t/<tenant>/finance/invoices/<invoiceId>/export-reset Setzt die Exportmarkierung einer Rechnung zurück, mit einem Grund
  • Ein eigenes Prüfprogramm liest in Acrivas Tests Referenz-Stapel: die 31 Header-Felder und die 125 Spalten gegen die Ausdrücke der Formatbeschreibung von DATEV, die Feldzahl jeder Zeile, CR LF, den Zeichensatz und die Regeln zwischen Feldern, zum Beispiel die Länge der Konten.
  • document.xml wird gegen Document_v060.xsd validiert, das Schema, das DATEV veröffentlicht.
  • Referenzdateien halten die Bytes des Stapels und von document.xml fest.

Diese Prüfungen ersetzen keinen Import in DATEV. Der erste echte Import, der Buchungsstapel in DATEV Rechnungswesen und ein Belegpaket über Belegtransfer, erfolgt mit dem Pilotkunden.