FinDatEx Validator TPT · EET · EMT · EPT Validate a file

FinDatEx TPT Validation Reference (V8.0)

Spec: /spec/tpt/TPT_V8_20260526.xlsx
Manifest: /spec/tpt/tpt-v8-info.json
Released: 2026-05-26 · Sheet: TPT V8.0
Profiles: Solvency II (SOLVENCY_II), IORP / EIOPA / ECB (IORP_EIOPA_ECB), NW 675 (NW_675), SST (FINMA) (SST)

Generated file — do not edit by hand. Regenerate via mvn -pl core -Pdocs exec:java -Dexec.args="docs/rules".


1. How this validator scores your file

The overall quality score is a weighted blend of five sub-scores. Only Severity.ERROR findings lower the score; WARNING and INFO are reported but ignored by the scorer.

Dimension Weight Computation
MANDATORY_COMPLETENESS 40 % 1 − (missing M-cells / total M-cells) across active profiles
FORMAT_CONFORMANCE 20 % 1 − (format errors / non-empty cells)
CLOSED_LIST_CONFORMANCE 15 % 1 − (closed-list errors / non-empty closed-list cells)
CROSS_FIELD_CONSISTENCY 15 % 1 − (XF errors / max(distinct XF rules × rows, 1))
PROFILE_COMPLETENESS 10 % mean over profiles of (0.7 × M-completeness + 0.3 × C-completeness)

Findings are routed to dimensions by their rule-id prefix:

Rule prefix Dimension
PRESENCE/ MANDATORY_COMPLETENESS + PROFILE (M leg)
COND_PRESENCE/ PROFILE_COMPLETENESS (C leg)
FORMAT/ (closed-list message) CLOSED_LIST_CONFORMANCE
FORMAT/ (other) FORMAT_CONFORMANCE
ISIN/, LEI/ FORMAT_CONFORMANCE
XF-…, template *-XF-* CROSS_FIELD_CONSISTENCY
*-ONLINE (GLEIF / OpenFIGI) not scored (advisory)

2. Profiles

Selecting a profile in the UI tells the validator to enforce the M (mandatory) and C (conditional) flags from that profile's column in the spec. Multiple profiles can be selected simultaneously — a field is mandatory if any selected profile says so.

Code Display name Mandatory fields Conditional fields
SOLVENCY_II Solvency II 36 60
IORP_EIOPA_ECB IORP / EIOPA / ECB 31 0
NW_675 NW 675 7 7
SST SST (FINMA) 24 45

3. General rules

The engines below run on every applicable field/row independently of the template-specific cross-field block in §4.

Version rule

Presence engine (PRESENCE/{numKey}/{profile})

Conditional-presence engine (COND_PRESENCE/{numKey}/{profile})

Format engine (FORMAT/{numKey})

ISIN engine (ISIN/{code}/{type})

LEI engine (LEI/{code}/{type})

External validation (opt-in)

4. Cross-field rules

Each rule below fires per row when its trigger condition holds and the expected target field state is violated. The score impact column applies to every individual finding the rule emits.

XF-01/COMPLETE_SCR_DELIVERY — When field 11 (CompleteSCRDelivery) is "Y", every SCR contribution field 97..105b must be populated.

XF-04/POSITION_WEIGHT_SUM — Σ field 26 (Position weight) across all positions must be ≈ 1.0 within ±0.02.

XF-05/CASH_PERCENTAGE — Declared cash ratio (field 9) must match Σ MarketValuePC of CIC xx7x positions divided by TotalNetAssets, within ±0.05.

XF-06/NAV_PRICE_SHARES — TotalNetAssets (field 5) must match SharePrice (field 8) × Shares (field 8b) within ±0.01 relative tolerance.

XF-08/COUPON_FREQUENCY — Field 38 (Coupon payment frequency) must be one of {0, 1, 2, 4, 12, 52}.

XF-09/CUSTODIAN_PAIR — Custodian identification code (field 140) and its type indicator (field 141) must be paired: filling one without the other is a finding.

XF-10/INTEREST_RATE_TYPE — When field 32 (interest-rate type) is Floating/Variable, fields 34..37 are mandatory; when Fixed, field 33 (Coupon rate) is mandatory.

XF-12/DATE_ORDER — Field 7 (Reporting date) must not precede field 6 (Valuation date).

XF-11/MATURITY_AFTER_REPORTING — Field 39 (Maturity date) must not precede field 7 (Reporting date) on any row whose CIC matches the spec's field-39 applicability scope (CIC 1, 2, 5, 6, 7 sub-codes 3/4/5, 8, A, B, C, D, E, F).

XF-13/PIK — Field 146 (PIK) must be one of {0, 1, 2, 3, 4} and is meaningful only for bonds (CIC xx2x) and loans (CIC xx8x). Each PIK case mandates a specific subset of fields 32, 33, 38, 39, 40, 41 per the PIK guidelines.

XF-14/UNDERLYING_CIC — Field 67 (Underlying CIC) is mandatory whenever the spec's CIC applicability scope for field 67 covers the row's CIC — i.e. CIC 22, A, B, C, D4, D5, F. Other sub-codes within CIC 2 and CIC D are exempt.

XF-16/THIRD_CURRENCY_WEIGHT — Conditional presence of field 31

XF-17/INDEX_TYPE — Conditional presence of field 35

XF-17/INDEX_NAME — Conditional presence of field 36

XF-17/INDEX_MARGIN — Conditional presence of field 37

XF-18/CALL_PUT_DATE — Conditional presence of field 43

XF-18/OPTION_DIRECTION — Conditional presence of field 44

XF-19/STRIKE_PRICE — Conditional presence of field 45

XF-20/ISSUER_LEI_PRESENT — Conditional presence of field 47

XF-21/GROUP_LEI_PRESENT — Conditional presence of field 50

XF-22/UNDERLYING_GROUP_LEI — Conditional presence of field 84

XF-23/FUND_ISSUER_LEI — Conditional presence of field 115

XF-24/FUND_GROUP_LEI — Conditional presence of field 119

XF-25/COLLATERAL_VALUE — Conditional presence of field 139

Field reference

One page per field, with its flag in every profile, the codification it must match and every rule that can fire on it.

Check your own file against these rules

Upload a TPT, EET, EMT or EPT file and get a quality score, every finding grouped by rule, and an Excel report. No login; the file is never stored.

Open the validator