Free forever · no account · nothing uploaded
DAC7 XML validator
Drop a DAC7 submission file in and get a line-by-line report against the OECD DPI XML Schema v1.0, the schema the EU adopted for platform operator reporting. The parser runs in this tab: the file is never transmitted and never stored.
If your exporter was adapted from a CRS one, start with the amounts. DPI reports consideration in whole units of currency — 1250, not 1250.00 — and that single difference accounts for a great many rejected first submissions.
Drop a DAC7 XML file here
It is parsed in this browser tab. No upload, no account, no size limit beyond what your machine can hold.
What it checks
Schema validity is the easy half. Most DAC7 rejections come from the quarterly breakdown contradicting itself, or from an assumed-reporting claim with nobody on the other end of it — rules an XSD cannot express, so they are checked here, each citing the section of the user guide it comes from.
Schema structure
Every element, its cardinality, its order and its datatype against DPI XML Schema v1.0, including the INType attribute that is required rather than optional.
Whole-unit amounts
DPI reports consideration in whole units of currency, not in cents. An amount with decimals is a schema failure, and one of the most common things an exporter written against CRS gets wrong.
Quarterly arithmetic
ConsQ1–Q4, NumbQ1–Q4, FeesQ1–Q4 and TaxQ1–Q4 against each other: fees and taxes on a quarter with no consideration, a quarter with consideration but no transaction count, and totals that do not add up.
Code lists
MessageTypeIndic, DocTypeIndic, the EU Nexus values RPONEX1–5, PropertyType DPI901–910 and INType, with each code's meaning quoted from the user guide.
Assumed reporting
The AssumedReporting handshake — a platform operator claiming another operator reports on its behalf must name that operator, and the reverse.
References and corrections
DocRefID uniqueness, the country-and-year prefix, CorrDocRefID pointing at something real, and the permitted DocTypeIndic combinations for corrections and deletions.
Source: OECD, Model Rules for Reporting by Digital Platform Operators XML Schema (2022), User Guide for Tax Administrations. Findings quote it; they are not tax advice.
DAC7 code lists
The full enumerations, for when a report names a code you have not seen before.
MessageTypeIndic
- DPI401
- The message contains new (including additional) information
- DPI402
- The message contains corrections/deletions for previously sent information
- DPI403
- The message advises that there is no data to report
Nexus (EU)
- RPONEX1
- Resident for tax purposes in the EU Member State
- RPONEX2
- Not tax resident, but incorporated under the laws of the Member State
- RPONEX3
- Not tax resident, but place of management is in the Member State
- RPONEX4
- Not tax resident, but has a permanent establishment there and is not a Qualified Non-Union Platform Operator
- RPONEX5
- None of the above, but facilitates a Relevant Activity there and is not a Qualified Non-Union Platform Operator
PropertyType
- DPI901
- Office
- DPI902
- Hotel room
- DPI903
- Bed & Breakfast room
- DPI904
- House
- DPI905
- Apartment
- DPI906
- Mobile home
- DPI907
- Campground
- DPI908
- Boat
- DPI909
- Parking space
- DPI910
- Other
INType
- IIN
- Individual identification number (EU-specific; not a natural person)
- LEI
- Legal Entity Identifier
- EIN
- Entity identification number
- BRN
- Business registration number
- Other
- Other
Validating is free. Producing the file is what we sell.
The validator will keep telling you what is wrong with a hand-built file. The paid product collects the seller self-certifications, chases the ones who ignore them, aggregates the quarterly consideration from your transaction data, generates the file with stable DocRefIDs and handles the corrections afterwards — from EUR 59 a month, priced on the page.