OpenDQV Cloud starter template (v0.1) — your tenant inherits this baseline. First customer edit creates v1.0 in your audit trail; pin by yaml_hash for replay. MiFID II / MiFIR Article 26 — Regulation (EU) 600/2014, transaction report compliance contract. Investment firms must report complete and accurate details of transactions in financial instruments to competent authorities via Approved Reporting Mechanisms (ARMs). Also retained in UK law as UK MiFIR. This contract enforces completeness at the point of write: LEI identifiers, ISIN, venue MIC code, execution timestamp, buyer/seller identification, price, quantity, and currency. The omission failure mode: a transaction report is submitted to an ARM without required LEI identifiers, ISIN, venue MIC code, or execution timestamp. ARM rejects the report. Regulatory reporting breach. FCA fined UBS GBP 27.6M in 2019 for MiFID-era reporting failures spanning 2007–2017. National competent authorities can impose sanctions for reporting infringements under Article 70 MiFID II.
| Rule | Field | Severity | What it enforces (the message your team sees) |
|---|---|---|---|
| transaction_reference_required | transaction_reference | error | transaction_reference is required — every transaction report must have a unique reference per RTS 22 Annex I Table 2 Field 2 |
| transaction_reference_unique | transaction_reference | error | transaction_reference must be unique within this batch — duplicate transaction references compromise reporting integrity (MiFID II/MiFIR Article 26). Note: OpenDQV validates uniqueness within the input payload only; cross-batch uniqueness against the firm's transaction reporting system is the responsibility of the upstream pipeline. |
| execution_timestamp_required | execution_timestamp | error | execution_timestamp is required — MiFIR Article 26(3) requires the date and time of execution; granularity per RTS 22 Field 28 — at least to the second off-venue, and per RTS 25 levels for on-venue business clocks |
| execution_timestamp_format | execution_timestamp | error | execution_timestamp must be UTC with microsecond precision (this template enforces the strictest RTS 25 granularity level): YYYY-MM-DDTHH:MM:SS.ffffffZ (e.g. 2026-04-27T14:30:15.123456Z) |
| trade_date_matches_execution_date | trade_date | error | trade_date must equal the date portion of execution_timestamp — per RTS 22 Annex I Table 2 — T+0 with no tolerance band |
| trade_date_not_in_future | trade_date | error | trade_date cannot be later than today — under RTS 22 the trade_date is the date the transaction was executed |
| execution_timestamp_not_in_future | execution_timestamp | error | execution_timestamp cannot be later than now — under RTS 22 the timestamp reflects when the transaction was actually executed (or economically agreed for OTC), not a future booking time |
| reporting_firm_lei_required | reporting_firm_lei | error | reporting_firm_lei is required — MiFIR Article 26(1) requires identification of the investment firm executing the transaction via LEI |
| reporting_firm_lei_valid | reporting_firm_lei | error | reporting_firm_lei must be a valid 20-character LEI per ISO 17442 — shape (18 alphanumeric + 2 digits) AND mod-97-10 check digit. Shape-only validation upgraded to full check-digit verification; sentinel/typo LEIs that previously passed will now fail. Records that fail this rule do not represent valid GLEIF-issuable identifiers and would be rejected at ARM submission. |
| executing_entity_lei_required | executing_entity_lei | error | executing_entity_lei is required — RTS 22 Annex I Table 2 requires the LEI of the entity executing the transaction |
| executing_entity_lei_valid | executing_entity_lei | error | executing_entity_lei must be a valid 20-character LEI per ISO 17442 — shape AND mod-97-10 check digit. Full check-digit verification (was: shape-only). |
| venue_mic_required | venue_mic | error | venue_mic is required — RTS 22 Annex I Table 2 requires the venue of execution identified by MIC code |
| venue_mic_valid | venue_mic | error | venue_mic must be a valid ISO 10383 MIC. Shape-only regex upgraded to lookup against ref/iso_10383_mic_codes.txt — bundled list is a starter subset of major operating MICs. For full RTS 22 Field 36 coverage, operators should drop a complete ISO 10383 extract at $OPENDQV_CONTRACTS_DIR/ref/iso_10383_mic_codes.txt and refresh periodically (MICs are added/retired as venues launch and consolidate). |
| instrument_isin_required | instrument_isin | error | instrument_isin is required — RTS 22 Annex I Table 2 Field 41 requires identification of the financial instrument via ISIN |
| instrument_isin_valid | instrument_isin | error | instrument_isin must be a valid 12-character ISIN per ISO 6166 — 2-letter country code + 9 alphanumeric + 1 check digit (Luhn-style mod-10 over expanded numeric encoding). Full check-digit verification (was: shape-only regex). |
| buyer_id_type_required | buyer_id_type | error | buyer_id_type is required — RTS 22 (Commission Delegated Regulation (EU) 2017/590) Annex I requires the buyer to be identified (Field 7) |
| buyer_id_type_valid | buyer_id_type | error | buyer_id_type must be a recognised identifier type consistent with RTS 22 Annex I Table 2 buyer/seller identification: LEI for legal entities, national identifier or CONCAT for natural persons (Article 6 + Annex II), MIC for venues/CCPs; template list: LEI, NIDN, CCPT, CONCAT, MIC (ISO 20022-aligned). Customers may extend `$OPENDQV_CONTRACTS_DIR/ref/mifid_id_type.txt` to add ARM-specific dialect codes. |
| buyer_id_required | buyer_id | error | buyer_id is required — RTS 22 Annex I Table 2 requires identification of the buyer |
| buyer_id_lei_valid | buyer_id | error | buyer_id must be a valid 20-character LEI per ISO 17442 when buyer_id_type is LEI — shape AND mod-97-10 check digit. |
| seller_id_type_required | seller_id_type | error | seller_id_type is required — RTS 22 (Commission Delegated Regulation (EU) 2017/590) Annex I requires the seller to be identified |
| seller_id_type_valid | seller_id_type | error | seller_id_type must be a recognised identifier type consistent with RTS 22 Annex I Table 2 buyer/seller identification: LEI for legal entities, national identifier or CONCAT for natural persons (Article 6 + Annex II), MIC for venues/CCPs; template list: LEI, NIDN, CCPT, CONCAT, MIC (ISO 20022-aligned). Customers may extend `$OPENDQV_CONTRACTS_DIR/ref/mifid_id_type.txt` to add ARM-specific dialect codes. |
| seller_id_required | seller_id | error | seller_id is required — RTS 22 Annex I Table 2 requires identification of the seller |
| seller_id_lei_valid | seller_id | error | seller_id must be a valid 20-character LEI per ISO 17442 when seller_id_type is LEI — shape AND mod-97-10 check digit. |
| price_min | price | error | price must be > 0 — MiFIR Article 26(3) requires the price of the transaction; a zero-priced trade is a transfer or reporting error, not a market transaction |
| price_type_required | price_type | error | price_type is required — RTS 22 Annex I Table 2 Field 33 expresses price as monetary value, percentage, yield or basis points ('PNDG'/'NOAP' where pending/not applicable) |
| price_type_valid | price_type | error | price_type must be one of: monetary, yield, spread, percentage, basis_points, no_price |
| quantity_min | quantity | error | quantity must be > 0 — MiFIR Article 26(3) requires the quantity of the transaction; a zero-quantity transaction report is defective and is the kind of item a regulator would query |
| currency_required | currency | error | currency is required — RTS 22 Annex I Table 2 requires the currency in which the price is expressed |
| currency_valid | currency | error | currency must be a valid ISO 4217 currency code |
| transaction_type_required | transaction_type | error | transaction_type is required — template-level direction field (RTS 22 has no buy/sell field; direction is conveyed by the buyer/seller identification fields) |
| transaction_type_valid | transaction_type | error | transaction_type must be a valid direction code from ref/mifid_transaction_type.txt (template-level enum — RTS 22 has no buy/sell field; direction is conveyed by the buyer/seller identification fields). Customers may extend `$OPENDQV_CONTRACTS_DIR/ref/mifid_transaction_type.txt` to add ARM-specific dialect codes. |
| trade_date_required | trade_date | error | trade_date is required — the trading date must be recorded for T+1 reporting obligations |
| trade_date_format | trade_date | error | trade_date must be a valid date (YYYY-MM-DD) |
| reviewed_by_required | reviewed_by | error | reviewed_by is required — TEMPLATE-LEVEL rule (not MiFIR/RTS 22 field). Records who reviewed this transaction report internally for governance attestation. Customers without an internal-review workflow may remove this rule |
| review_date_required | review_date | error | review_date is required — TEMPLATE-LEVEL rule (paired with reviewed_by_required). Not MiFIR/RTS 22 mandated |
| review_date_format | review_date | error | review_date must be a valid date (YYYY-MM-DD) |
Run your own data against this contract in the free trial — drop a CSV in the dashboard, no code, no credit card. Start free trial →