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.
Java 17 · Apache-2.0 · release 0.2.0
Turn already-mapped booking data into deterministic DATEV Buchungsstapel / EXTF files—with fixed v13/v12 schemas, typed metadata, technical validation and forward-only streaming.
Why it exists
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.
Use one ordered definition for all 125 v13 fields and the 124-field legacy v12 shape instead of maintaining a private spreadsheet or array.
Reject structural, Windows-1252 and optional semantic violations before a booking row is committed to the destination.
Retain rows when they must be inspected or replayed; stream them forward once when export volume makes retention unnecessary.
What ships
The common path stays dependency-light. Optional modules are explicit, so a Univocity dependency or semantic validator appears only when you choose it.
Recommended default
Complete v13/v12 EXTF output, retained DatevFile and the forward-only DatevStreamWriter. Choose this unless the receiving contract intentionally differs from the official heading.
Custom downstream CSV
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.
Existing pipeline only
Route heading-and-row output through an existing Univocity CsvWriter. It cannot emit the differently shaped management record and quotes official text headings differently.
A deliberate boundary
Resolve chart of accounts, tax treatment, master data and client-specific rules before calling the exporter.
Attach typed metadata, write named or typed columns, and select metadata-aware technical validation.
Move the generated file through your controlled transfer process and verify acceptance in the licensed, configured DATEV environment.
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
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.