Skip to content

DATEV export format

The accounting export turns approved incoming invoices into an export package: a booking batch in the DATEV format and the documents as DATEV document packages. This page describes the files as Acriva writes them. It is for everyone who imports, checks or processes the package.

Acriva gives no tax advice. Which tax keys and accounts are right is for the workspace to settle with its tax advisor.

An export is one download, a ZIP file named DATEV-Export_<from>_<to>.zip. <from> and <to> are the period as YYYYMMDD.

Entry Content
EXTF_Buchungsstapel_<from>_<to>.csv The booking batch.
Belege_01.zip, Belege_02.zip, … DATEV document packages. Each holds document.xml and the document files, without folders.

The document packages are entries of their own beside the booking batch and are stored in the package without compression, because they are ZIP files themselves. The tax advisor imports the CSV file into DATEV Rechnungswesen (batch processing) and sends each document package to DATEV Unternehmen online with DATEV Belegtransfer.

File Format
Booking batch DATEV format (EXTF), header version 700, format category 21 (“Buchungsstapel”), format version 13
document.xml DATEV XML interface online, version 6.0, namespace http://xml.datev.de/bedi/tps/document/v06.0 (schema Document_v060.xsd)
  • Line 1 is the header with 31 fields, line 2 holds the 125 column headings, and from line 3 there is one booking line per allocation line of an invoice.
  • Fields are separated by ;, and every line ends with CR LF.
  • Text fields are in "; a " inside the text is doubled. The column headings of the second line are unquoted.
  • Numbers have a decimal comma and no thousands separator.
  • An empty text field is written as "", every other empty field as nothing.
  • No text field holds a control character or a line break.

Acriva fills these fields. All others stay empty.

No. Field Value
1–5 Kennzeichen, Versionsnummer, Formatkategorie, Formatname, Formatversion "EXTF", 700, 21, "Buchungsstapel", 13
6 Erzeugt am When the export was created, as YYYYMMDDHHMMSSFFF in German local time (Europe/Berlin)
8 Herkunft "AC"
11 Beraternummer From the DATEV connection, 1001 to 9999999
12 Mandantennummer From the DATEV connection, 1 to 99999
13 WJ-Beginn The first day of the fiscal year the period lies in, as YYYYMMDD
14 Sachkontenlänge From the DATEV connection, 4 to 8
15, 16 Datum von, Datum bis The period, as YYYYMMDD
17 Bezeichnung "Eingangsrechnungen MM/YYYY" for exactly one calendar month, else "ER DD.MM.YYYY bis DD.MM.YYYY"
19 Buchungstyp 1 (financial accounting)
20 Rechnungslegungszweck 0
21 Festschreibung 0: the tax advisor checks the batch and fixes it in DATEV
22 WKZ "EUR"
27 Sachkontenrahmen "03" for SKR03, "04" for SKR04
31 Anwendungsinformation "Acriva"

Field 9 (“Exportiert von”) stays empty. Who exported is in Acriva’s audit log.

An example for 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 fills these columns. All others of the 125 columns stay empty.

No. Column Value
1 Umsatz The gross amount of the allocation line with two decimals, for example 1190,00. Always positive, never 0,00.
2 Soll-/Haben-Kennzeichen "S" for an invoice, "H" for a credit note. It refers to column 7.
3 WKZ Umsatz "EUR"
7 Konto The line’s G/L account: digits in the workspace’s G/L account length.
8 Gegenkonto The vendor’s account (the vendor account): digits, at most one digit longer than a G/L account.
9 BU-Schlüssel The line’s tax key, one to four digits. Empty when the line has none or the G/L account is an automatic account.
10 Belegdatum The invoice date as DDMM. The year follows from the header.
11 Belegfeld 1 The invoice number, mapped to the allowed characters (see Belegfeld 1), at most 36 characters.
14 Buchungstext The vendor’s name and the invoice number as written, at most 60 characters.
20 Beleglink "BEDI ""<GUID>""" with the GUID of the document in the document package.
37 KOST1 – Kostenstelle The cost center’s number, at most 36 characters of [A-Za-z0-9_ ]. Empty when the line has none.
114 Festschreibung 0

The amount is gross, and the tax key decides the tax. A credit note is written with a positive amount and "H"; Acriva doesn’t use “Generalumkehr” (column 118).

Acriva doesn’t fill these columns: the EU columns (40, 41, 123, 124), “Sachverhalt L+L” (43), the tax rate (119), the cash discount (13), the service date (115) and the due date (117). A booking that needs them is completed by the tax advisor in DATEV.

The numbers of the tax keys are data of the workspace, not fixed values of Acriva: the batch writes the number chosen on the allocation line.

An invoice with two allocation lines, the second without a tax key and with a cost center, starts like this (every line has 125 columns, shortened here):

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” allows only the characters [A-Za-z0-9_$&%*+\-/]. Acriva maps the invoice number in this order:

  1. ä ö ü ß become ae oe ue ss, and æ œ þ become ae oe th, also in upper case.
  2. Every other letter with an accent or a stroke becomes its base letter: é becomes e, ø becomes o, ł becomes l.
  3. Every character that is still not allowed is removed. That includes blanks, periods and commas.
  4. A leading + or - is removed.
  5. The result is cut to 36 characters.

So RE 2026.0042-Ä becomes RE20260042-AE. Two invoice numbers that differ only in removed characters give the same value. When no character is left, Acriva doesn’t export the invoice. The invoice number as written is in the booking text.

The booking text is the vendor’s name, a blank and the invoice number. Characters outside the character set are replaced (see Character set). When the text starts with =, +, -, @, a tab or a carriage return and is not a number, Acriva puts a ' in front, so a spreadsheet doesn’t read it as a formula. After that the text is cut to 60 characters.

Each Belege_NN.zip holds document.xml and one file per invoice: the original of the document version that was current when the export was created.

  • The file name is the document’s GUID as 32 hexadecimal digits without hyphens, plus the extension, for example 0199b000000070008000000000000001.pdf.
  • The GUID is the document’s ID in Acriva. The same GUID is in the “Beleglink” of the booking lines.
  • Acriva hands over the file types PDF, XML, TIF, JPG and PNG. The type follows from the extension of the original’s file name; only when the name has no extension, from its media type. An invoice with another file type goes into no export.

document.xml has this structure:

<?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>
Item Value
header/date When the export was created, in German local time without a zone. The header holds nothing else.
document/@guid The document’s ID in Acriva.
document/@type 1 (incoming invoice)
document/@processID 2: the document is meant to be filed and not offered for booking again. Only the first import confirms that.
extension One entry of the type File with the document’s file name.
repository Three levels: Acriva, Eingangsrechnungen and the month of the invoice date as YYYY-MM.

Every document is in an export exactly once, also when its invoice has several booking lines.

File Character set
Booking batch Windows-1252, without a byte order mark
document.xml UTF-8, without a byte order mark
File names in the packages ASCII only

A character that Windows-1252 lacks is replaced and never dropped silently: first by its base letter (ł becomes l, č becomes c), otherwise by ?. Control characters and line breaks become a blank. So “Łódź Sp. z o.o.” is “Lódz Sp. z o.o.” in the booking text.

An export selects by invoice date. The period must lie within one fiscal year of the workspace, because a booking line carries day and month only and the header names one fiscal year. Acriva refuses a period that crosses a fiscal year; export the two parts separately.

An export takes invoices that are approved, not exported yet and not in the recycle bin, whose invoice date lies in the period and whose document the exporting person may read. An invoice stays out when

  • its allocation is missing or doesn’t add up to the invoice amount,
  • its invoice number is missing or holds no character allowed in “Belegfeld 1”,
  • its invoice date is missing (the list of candidates names such an invoice in every period, so it is noticed),
  • net and VAT don’t add up to the gross amount,
  • its currency is not euro,
  • it has no vendor linked, or the vendor is not confirmed or has no vendor account,
  • a G/L account doesn’t have the G/L account length or consists of zeros only, the vendor’s account isn’t digits, is more than one digit longer than a G/L account or consists of zeros only, or the number of a cost center or a tax key doesn’t have its shape,
  • its original is larger than 20 MB or has a file type Acriva doesn’t hand over.

The texts the app names these reasons with are under What the export refuses.

Limit Value
Invoices per export at most 2,000
Originals per export together at most 1 GB
One original at most 20 MB
One document package (Belege_NN.zip) closed at about 100 MB or 4,999 documents
Allocation lines per invoice at most 50
Reason of a reset 1 to 500 characters

The API answers a selection above 2,000 invoices or 1 GB with 409 and the code export-too-large. Choose a shorter period. When the consultant or the client number of the DATEV connection is missing at creation, the answer is 409 with the code finance-settings-incomplete.

  • All or nothing. An export is created in one step. When a single invoice of the selection has changed or was exported in the meantime, no export is created (409, code export-conflict).
  • Each invoice in one export. On an exported invoice, the allocation, the vendor, the tax lines and the cash discount can no longer be changed, and it goes into no further package unless someone resets its export mark. The fields copied from the document (invoice number, vendor name, dates, gross amount) still follow the document. The package doesn’t change with that: Acriva stores its booking lines when it is created.
  • The same batch at every download. When an export is created, Acriva stores the booking lines as they are written, with the time and the details of the DATEV connection. The booking batch is built from these alone and is the same byte for byte at every download, also when master data or the DATEV connection change later.
  • The same documents. The export remembers the document version per invoice. Originals never change, so every download hands out the same files. When a document was deleted for good in the meantime, its file is missing from the document package; the booking batch stays as stored.
  • Access. Only someone who may read every document in an earlier package can download it. Otherwise the download answers 404. Every download is recorded in the audit log per document.
  • Reset. When the export mark of an invoice is reset with a reason, the invoice goes out with the next package. The earlier export stays as it was and still holds it. The document’s GUID stays the same, because it is the document’s ID.

The app uses these endpoints; all need the permission to use the export. The schemas are in the API reference, and the Upload API describes signing in.

Endpoint Purpose
GET /api/v1/t/<tenant>/finance/exports/candidates?from=…&to=… The candidates of a period, each with the reasons that keep it out
POST /api/v1/t/<tenant>/finance/exports/preview The booking lines of a selection; writes nothing
POST /api/v1/t/<tenant>/finance/exports Creates the export
GET /api/v1/t/<tenant>/finance/exports Earlier exports, newest first
GET /api/v1/t/<tenant>/finance/exports/<exportId>/download The package as a ZIP
POST /api/v1/t/<tenant>/finance/invoices/<invoiceId>/export-reset Resets the export mark of one invoice, with a reason
  • In Acriva’s tests, a checker of Acriva’s own reads reference batches: the 31 header fields and the 125 columns against the expressions of DATEV’s format description, the field count of every line, CR LF, the character set and the rules between fields, such as the length of the accounts.
  • document.xml is validated against Document_v060.xsd, the schema DATEV publishes.
  • Reference files pin the bytes of the batch and of document.xml.

These checks don’t replace an import into DATEV. The first real import, the booking batch into DATEV Rechnungswesen and a document package through Belegtransfer, is done with the pilot customer.