DATEV EXTF
Validate and write DATEV-Format (EXTF) files locally: Buchungsstapel and Debitoren/Kreditoren. Explains why DATEV rejects an import, line by line, in German or English, and builds booking batches that pass the checks.
Documentation
datev-extf-mcp
MCP server that validates and writes DATEV-Format (EXTF) files: Buchungsstapel (booking batches) and Debitoren/Kreditoren (customer and supplier master data). Ask your AI assistant why DATEV rejected an import, or have it turn a list of bookings into a file DATEV accepts.
Deutsch: MCP-Server, der Dateien im DATEV-Format (EXTF) prüft und schreibt. Fragen Sie Ihren KI-Assistenten, warum DATEV einen Import ablehnt: Er bekommt jeden Fehler mit Zeile, Feld und einer verständlichen Erklärung, etwa Punkt statt Komma im Umsatz, fehlende führende Null im Belegdatum oder BU-Schlüssel auf Automatikkonten.
- Local only. The server runs on your machine and reads files from disk. Nothing is uploaded, and there's no account or API key.
- Built on
@seamless-engineering/datev-extf. Its rules come from DATEV's own material: the Formatbeschreibung on developer.datev.de, the DATEV-Format Prüfprogramm and the#REWimport messages. - Every file the writer produces passes the validator.
Prefer a browser? The same checks run in the DATEV EXTF validator (English), also without upload.
Install
Needs Node.js 20 or later.
Claude Code
claude mcp add datev-extf -- npx -y @seamless-engineering/datev-extf-mcp
Claude Desktop (claude_desktop_config.json), Cursor (.cursor/mcp.json) and most other clients:
{
"mcpServers": {
"datev-extf": {
"command": "npx",
"args": ["-y", "@seamless-engineering/datev-extf-mcp"]
}
}
}
Claude Desktop, one click: download datev-extf-mcp.mcpb from the latest release and open it. Build it yourself with ./scripts/bundle.sh.
Relative file paths resolve against the server's working directory, so absolute paths are the safer choice.
Tools
| Tool | What it does |
|---|---|
validate_datev_extf | Checks a file (path) or pasted text (content). Returns header data, error and warning counts, and each finding with line, field, value and an explanation in German (lang: "de", default) or English ("en"). The encoding is only checked for files. |
explain_datev_finding | Explains a finding code such as amount-dot or bu-automatic. |
write_buchungsstapel | Builds a Buchungsstapel (Formatversion 13) from a header and booking rows (amounts in cents), validates it, and writes it as Windows-1252 to outputPath or returns the CSV text. |
list_datev_columns | Lists the 125 Buchungsstapel or 254 Debitoren/Kreditoren columns by position. |
Resources: datev-extf://columns/buchungsstapel, datev-extf://columns/debkred, datev-extf://findings/de and datev-extf://findings/en.
Prompt: fix_datev_import validates a file and proposes fixes for the export that produced it.
Example
Why does DATEV reject
~/Downloads/EXTF_Buchungsstapel.csv?
2 errors, 1 warning in 214 data rows (category buchungsstapel, encoding utf-8).
- warning [utf8-without-bom]: The file is UTF-8 without a byte order mark. DATEV then reads it as Windows-1252 and umlauts turn into garbage …
- error line 4 [amount-dot]: Amount “49.90” uses a dot as the decimal separator. DATEV expects a comma: 12.50 becomes 12,50.
- error line 9 [date-leading-zero]: Document date “506” has only three digits: the leading zero is gone. …
Not tax advice
The server checks format, not bookkeeping. It can't tell whether an account or tax key is right for a transaction, and it doesn't pick them when writing. Agree that with your tax advisor.
DATEV and DATEV-Format are trademarks of DATEV eG. This project is not affiliated with or endorsed by DATEV.
Maintenance
Maintained by seamless.engineering for our own production use: we run managed DATEV integrations for shops, payment providers and ERPs, fully EU-hosted. Issues and PRs welcome, no SLA.
Releasing
Bump version in package.json, both versions in server.json and the one in manifest.json, commit, then tag and push: git tag v0.1.1 && git push origin v0.1.1. The release workflow publishes to npm with provenance via trusted publishing, then to the MCP Registry as engineering.seamless/datev-extf.
MIT licence.