← Back to Blog

DATEV EXTF: The Format German Tax Advisors Actually Want

August 21, 2026 · 6 min read

If you run a company in Germany and your tax advisor has ever asked you for a "DATEV-Export," you know the pain. It is not a PDF. It is not a CSV. It is a 50-year-old fixed-width text format with German field names and cryptic numeric codes, and if you get one column wrong, your advisor's software rejects the entire file.

This is DATEV EXTF. And NeoDonkey generates it natively.

What Is DATEV EXTF?

DATEV is the dominant software vendor for German tax advisors. Their flagship product, DATEV Rechnungswesen, accepts external data through a format called EXTF ("externes Format"). It is essentially a text file where every field has a fixed width:

000;700;16;20270101;4;2027;1;Sarah Weber;12001;1;EUR;
100;1000;0000011200;1200;Bank;;;;;;;
...

Line 1 is a header with metadata (format version, creation date, advisor number, client number). Every subsequent line is a booking row with account numbers, amounts in minor units (cents, no decimal point), tax codes, cost centers, and more. The exact column widths and meanings are documented in DATEV's 200-page specification.

Why This Matters

In Germany, every company must hand over their accounting records to their tax advisor (Steuerberater) at least once a year. The advisor then prepares the tax return, financial statements, and VAT returns. If you use software that cannot produce DATEV-compatible output, your advisor must manually re-enter every booking — at €80–150 per hour.

Most modern cloud ERPs (Stripe, Shopify, even some German ones) do not export DATEV format natively. They offer CSV or API access, which means either:

NeoDonkey eliminates this. DATEV EXTF export is built into the kernel.

How NeoDonkey Does It

NeoDonkey's ledger is a git repository of immutable, signed commits. Every booking is stored as a document with exact BigInt amounts. The DATEV EXTF serializer (runtime/export/datev-extf.js) walks this git history and produces a compliant EXTF file in one pass:

const buffer = await buildDatevExtf({
  nd,              // the NeoDonkey kernel instance
  beraterNr: '12345',
  mandantenNr: '00001',
  wjBeginn: '20270101',
  fromDate: '2027-01-01',
  toDate: '2027-12-31',
});

The serializer handles all the DATEV-specific rules:

Validating the Output

NeoDonkey's test suite (test/datev-extf.test.js) validates every aspect of the format against real DATEV requirements:

All 9 tests pass. The output can be imported directly into DATEV Rechnungswesen without modification.

From Git to DATEV

The flow is elegant because of NeoDonkey's git-native architecture:

  1. Every booking is a signed git commit
  2. The serializer reads the git history (no database queries)
  3. Amounts are exact BigInt (no rounding)
  4. The output is a standard EXTF file
  5. The tax advisor imports it directly

There is no intermediate database. There is no ORM. There is no "export module" that queries SQL tables. The serializer reads the same git repository that powers the entire ERP.

Where the Code Lives

What This Means for Your Tax Advisor

When your advisor asks for the DATEV export at year-end, you send them a single text file. It imports cleanly. The account numbers match your chart of accounts. The amounts are exact. The dates are correct.

Your advisor does not need to know what NeoDonkey is. They do not need an API key. They do not need to log into a web portal. They need what they have always needed: a DATEV EXTF file. And NeoDonkey produces it, natively, from your git-based ledger.


NeoDonkey is an open-source ERP built for German companies. It stores your books as a git repository and exports to DATEV, XRechnung, and more. Try the demo.