Starter contract

mifid_transaction_report

36 rules · plain YAML · starts in observation mode

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.

These are starting points you own. Every rule below ships in the trial, starts in observation mode, and is yours to read, edit, or delete from day one. Rules that reference a lookup list (lookup_file) validate against reference data you control in your tenant.
Rules as at 29 August 2026 — starting points you own, not a maintained regulatory feed. We correct errors in these samples; tracking regulatory change in your active contracts is yours.
RuleFieldSeverityWhat it enforces (the message your team sees)
transaction_reference_requiredtransaction_referenceerrortransaction_reference is required — every transaction report must have a unique reference per RTS 22 Annex I Table 2 Field 2
transaction_reference_uniquetransaction_referenceerrortransaction_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_requiredexecution_timestamperrorexecution_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_formatexecution_timestamperrorexecution_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_datetrade_dateerrortrade_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_futuretrade_dateerrortrade_date cannot be later than today — under RTS 22 the trade_date is the date the transaction was executed
execution_timestamp_not_in_futureexecution_timestamperrorexecution_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_requiredreporting_firm_leierrorreporting_firm_lei is required — MiFIR Article 26(1) requires identification of the investment firm executing the transaction via LEI
reporting_firm_lei_validreporting_firm_leierrorreporting_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_requiredexecuting_entity_leierrorexecuting_entity_lei is required — RTS 22 Annex I Table 2 requires the LEI of the entity executing the transaction
executing_entity_lei_validexecuting_entity_leierrorexecuting_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_requiredvenue_micerrorvenue_mic is required — RTS 22 Annex I Table 2 requires the venue of execution identified by MIC code
venue_mic_validvenue_micerrorvenue_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_requiredinstrument_isinerrorinstrument_isin is required — RTS 22 Annex I Table 2 Field 41 requires identification of the financial instrument via ISIN
instrument_isin_validinstrument_isinerrorinstrument_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_requiredbuyer_id_typeerrorbuyer_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_validbuyer_id_typeerrorbuyer_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_requiredbuyer_iderrorbuyer_id is required — RTS 22 Annex I Table 2 requires identification of the buyer
buyer_id_lei_validbuyer_iderrorbuyer_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_requiredseller_id_typeerrorseller_id_type is required — RTS 22 (Commission Delegated Regulation (EU) 2017/590) Annex I requires the seller to be identified
seller_id_type_validseller_id_typeerrorseller_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_requiredseller_iderrorseller_id is required — RTS 22 Annex I Table 2 requires identification of the seller
seller_id_lei_validseller_iderrorseller_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_minpriceerrorprice 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_requiredprice_typeerrorprice_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_validprice_typeerrorprice_type must be one of: monetary, yield, spread, percentage, basis_points, no_price
quantity_minquantityerrorquantity 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_requiredcurrencyerrorcurrency is required — RTS 22 Annex I Table 2 requires the currency in which the price is expressed
currency_validcurrencyerrorcurrency must be a valid ISO 4217 currency code
transaction_type_requiredtransaction_typeerrortransaction_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_validtransaction_typeerrortransaction_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_requiredtrade_dateerrortrade_date is required — the trading date must be recorded for T+1 reporting obligations
trade_date_formattrade_dateerrortrade_date must be a valid date (YYYY-MM-DD)
reviewed_by_requiredreviewed_byerrorreviewed_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_requiredreview_dateerrorreview_date is required — TEMPLATE-LEVEL rule (paired with reviewed_by_required). Not MiFIR/RTS 22 mandated
review_date_formatreview_dateerrorreview_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 →