Java 17 · Apache-2.0 · release 0.2.0

Own your booking data. Reuse the format layer.

Turn already-mapped booking data into deterministic DATEV Buchungsstapel / EXTF files—with fixed v13/v12 schemas, typed metadata, technical validation and forward-only streaming.

v13 · 125 columns v12 · 124 columns Windows-1252 · CRLF plain runtime · JDK only

Why it exists

The hard part is not joining values with semicolons.

A complete Buchungsstapel file combines a differently shaped management record, an exact versioned heading and tightly formatted booking rows. Small drift in width, order, quoting, line endings or encoding can make an otherwise valid export unusable.

01

Keep the schema canonical

Use one ordered definition for all 125 v13 fields and the 124-field legacy v12 shape instead of maintaining a private spreadsheet or array.

02

Fail before bytes drift

Reject structural, Windows-1252 and optional semantic violations before a booking row is committed to the destination.

03

Choose the memory model

Retain rows when they must be inspected or replayed; stream them forward once when export volume makes retention unnecessary.

What ships

A narrow API around a precise output contract.

The common path stays dependency-light. Optional modules are explicit, so a Univocity dependency or semantic validator appears only when you choose it.

2fixed schema versions
99,999maximum booking rows per file
0third-party runtime dependencies in plain + advanced
3records: management, heading, bookings

Custom downstream CSV

Advanced exporter

Rename, reorder or replace headings and select validation mode per file. Custom headings cannot be combined with EXTF metadata because they are no longer the fixed DATEV schema.

Compare exporters →

Existing pipeline only

Univocity adapter

Route heading-and-row output through an existing Univocity CsvWriter. It cannot emit the differently shaped management record and quotes official text headings differently.

Understand the boundary →

A deliberate boundary

Your domain in. An import candidate out.

1

Map in your application

Resolve chart of accounts, tax treatment, master data and client-specific rules before calling the exporter.

2

Assemble and validate

Attach typed metadata, write named or typed columns, and select metadata-aware technical validation.

3

Verify in the target

Move the generated file through your controlled transfer process and verify acceptance in the licensed, configured DATEV environment.

No import guarantee

Passing library validation—or matching the checked v13 schema and sample contract—does not prove accounting correctness or acceptance by a specific DATEV product, tenant or configuration.

Evidence, not adjectives

Compatibility claims are graded.

For v13, an opt-in contract test pins DATEV’s official checker schema and official sample archive, compares the 125 field definitions and validates all 54 sample booking rows. It does not turn a Windows GUI launch into a pass/fail import result.

For v12, the library supports the 124-column prefix and matching management record, but currently has no independent official v12 fixture or recorded real-import acceptance evidence.

See the compatibility matrix