Turning a bank statement into a DATEV Buchungsstapel
German bookkeeping runs on DATEV, and a converter that offers a German page but only QuickBooks is translated rather than localised. This page says what the exporter writes and what it refuses to write. Everything below is read out of src/export/datev.ts — the file that produces the download.
The four numbers it asks you for
They are not settings; without them the batch cannot be filed against anything.
| Field | What it is | Where to get it |
|---|---|---|
| Berater | Beraternummer — your tax advisor's own number in DATEV. | From your Steuerberater. It is the same on every batch you ever send them. |
| Mandant | Mandantennummer — your client number with that advisor. | From the same place, and also constant. |
| Konto | The bank account's own number in the chart of accounts. | 1200 in SKR03, 1800 in SKR04. If you run a different chart, ask. |
| Gegenkonto | The contra account every row is posted against. | A holding account you intend to reassign from — see the last section. |
Defaults: Konto 1200, Gegenkonto 1590, Sachkontenlänge 4.
A statement that crosses New Year is refused
The Belegdatum field is TTMM — four digits, day and month, and no year at all. The year comes from the header's Datum-von / Datum-bis window, which the importer applies to every row in the batch.
So a batch is one fiscal year by construction. A statement running from 20 December to 5 January cannot be expressed as one, and the honest options are to refuse or to post December into January. This exporter refuses, and says which years it found. Split the statement at the year boundary and convert each half.
This is the one case where you get no file. The refusal is deliberate: a Buchungsstapel that silently moved a fortnight of December into the following year would import cleanly and be wrong in the ledger, which is precisely the class of error this site exists to refuse.
Why the amounts have no minus sign
DATEV amounts are unsigned. The direction lives in the Soll/Haben-Kennzeichen, and — this is the part that catches people — it is relative to Konto, not to you. Konto here is the bank account, which is an asset, so money arriving increases it: money in is S, money out is H.
If you have seen a converter produce a batch where every sign is inverted, that is the mistake: reading Soll/Haben as though the contra account were the reference.
The file is Windows-1252, not UTF-8
DATEV accepts UTF-8 for debtor and creditor names and addresses. It does not accept it for a booking batch. A file written as UTF-8 imports with mangled umlauts at best, so this one is encoded Windows-1252 and characters outside it are transliterated rather than dropped.
Format details, for anyone checking: EXTF, format 700, Formatname Buchungsstapel, Formatversion 13, 125 columns, semicolon-separated. Festschreibung is left off, so the batch stays editable after import.
What this cannot do for you
It cannot choose the contra account. Deciding that a payment belongs to 4930 rather than 6815 needs knowledge no bank statement carries — what the payment was for, which project, whether it is deductible. A statement line says "SumUp Payments Ltd" and nothing more.
So every row is posted against the single Gegenkonto you set, and reassigning them in DATEV is bookkeeping work this tool does not pretend to do. What it does do is get the dates, the amounts, the directions and the text in — correctly, and with the balance check behind them.
Check it yourself
The download is a text file. Open it: the first line is the header with your Berater and Mandant numbers and the date window, the second is the 125 column names, and every line after that is one booking. Compare a row against the statement it came from — the amount, the TTMM, the S or H — before you send anything to your advisor.