Free tool

Does your CARF XML hold up?

From 31 July 2027, crypto-asset service providers report to Germany's Federal Central Tax Office exclusively as CARF XML. An XML that gets rejected is not a filing. Drop a file in and see what a checker finds in it.

No upload, no accountRuns in your browserOECD CARF v1.5

Drop your CARF XML here

or choose a file

Your file never leaves this browser. Validation runs entirely locally, nothing is uploaded.

Paste XML

Checks structure, enumerations, the OECD User Guide's cross-field rules and German filing conventions. It does not replace the BZSt's own acceptance check.

What gets checked

StructureWell-formedness, CARF_OECD root, schema version, a complete MessageSpec.
EnumerationsMessageTypeIndic, DocTypeIndic, Nexus, TransferType, country and currency codes.
Cross-field rulesThe rules real files fail on: a new-data message carrying corrections, a correction message carrying new data, duplicate DocRefIds, test and production data mixed, a nil report containing users.
PlausibilityAmounts without a currency, negative aggregates, non-integer transaction counts, empty TINs.
German conventionsReporting period as a year end, reportable year from 2026, DE as both sending and receiving country when filing to the BZSt.

Why the file never leaves your browser

A CARF file contains your customers' names, addresses, tax identification numbers and transaction totals. It is the most sensitive dataset a crypto-asset service provider holds. A validator that requires an upload is therefore unusable for most firms, however well it checks.

This check runs entirely as JavaScript in your browser. There is no endpoint the file could be sent to and no server that could store it. Keep your browser's network tab open while you validate: nothing happens.

What this tool is not

It is not a filing and not an acceptance confirmation. The BZSt runs its own check, and its details are not fully published yet: the German Datensatzbeschreibung still carries the marking "Entwurf" (draft). This page validates against the OECD schema as of July 2025 and against the rules the User Guide sets out in prose. If the German description changes, we change this page and say so.

The part before this that nobody talks about

A valid XML is the end of a chain that starts much earlier: collecting self-certifications, sanity-checking residencies and TINs, chasing gaps, consolidating transaction data per user, and carrying corrections and cancellations through after filing. That is the real workload, and it runs all year. That workflow is what we are building.

If the deadline is on a list at your firm: a few lines are enough, roughly how many reportable users and how you handle it today. We reply personally.

Or write directly: hello@stablewerk.com

Your details are relayed to us as an email only, and are not stored.

Basis: OECD, Crypto-Asset Reporting Framework XML Schema, User Guide for Tax Administrations, July 2025 edition (schema v1.5). German legal basis: the crypto tax transparency act (KStTG), filing to the BZSt by 31.07.2027 for reporting period 2026. This page is a technical aid, not legal or tax advice.