What it checks
| Codes | Level | What |
|---|---|---|
FIL-101 | File rejected | Name follows <FileType>_<DDMMYYYY>_<partN>_<partM>.json: a known FileType, a real date, 1 ≤ partN ≤ partM. |
FIL-102 | File rejected | Valid JSON, the right root element for the FileType, and conformance with ESMA's published schemas auth.117 V1.0 (record keeping) and auth.118 V1.0 (order book). |
MET-001–MET-016 | Record rejected | Mandatory fields, strictly positive quantities and prices, duplicates within the file, one timestamp format with milliseconds, validity-period rules, FILL/PARF dependencies, quantity bounds, fills inside the limit price. |
QUA-001–QUA-008 | Warning | Field lengths, MIC and DTI format, cancelled-order and buy/sell ratios, isolated price prints of 1,000% or more, Segment MIC and passive/aggressive population, midnight-defaulted timestamps. |
PRE-101, PRE-102 | Ours | Missing parts of a multi-part submission, files over 500 MB. These are not ESMA codes; ESMA describes both situations without numbering them. |
What it does not prove
- It is not ESMA's validator. It is our reading of the public MIDAS Reporting Instructions (ESMA65-955014868-17690) and the official schemas (ESMA65-955014868-15160). Where the text is ambiguous we say so in the finding. A clean result here does not guarantee acceptance.
- No registries. MIC codes are checked for format, not against ISO 10383; DTIs for format, not against the ISO 24165 registry; fiat codes are left to the schema.
- Duplicates within the files you load only. MIDAS also checks against everything you have submitted before.
- Thresholds ESMA does not publish are ours. Midnight timestamps are flagged above 5%; order ratios are only assessed with 20 or more orders. ESMA configures the timestamp mask per CASP; we take the most common mask in your file.
- Large files. Everything runs in browser memory. Files of a few hundred megabytes may be slow or fail on a laptop; split them, or use the command-line version.
- The rules will move. ESMA says the MIDAS data scope is phased in. This version follows the 21 October 2026 text.
What we found running ESMA's own samples
The record-keeping sample passes cleanly. Read literally, the order-book sample would lose 16 of its 40 records: one limit order carries no limit price on any of its fourteen fills, and three orders end at exactly their validity time when the rule says the validity time must come after. That is not a criticism of ESMA — a sample shows structure, not conformance — but it shows where the rules have edges. The full write-up is on the blog.
We build the pipeline from your matching engine and custody ledger to these schemas, with these checks running before every biweekly submission. Fixed-fee diagnostic first; your data stays on your infrastructure.