Validation Rules
This chapter enumerates all validation rules supported by xbridge. Each rule has a unique identifier, a severity level, a human-readable description, and attributes controlling when the rule is executed.
Rules are organized into three categories based on the input format:
XML Instance Rules — apply when validating
.xbrl/.xmlfiles (or XML-in-ZIP).CSV Report Package Rules — apply when validating
.zipfiles containing xBRL-CSV.Submission Package Naming Rules — apply to file names for both XML and CSV.
Tip
Implementation status and message templates for each rule can be found in the
rule registry at src/xbridge/validation/registry.json.
Rule Attributes
Attribute |
Values |
Meaning |
|---|---|---|
EBA |
Yes / No |
When Yes, the rule only runs if the |
EBA ref |
Section |
Cross-reference to the EBA Filing Rules v5.8 section that this rule implements. |
Post-conv. |
Yes / No |
(CSV only) When No, the rule is skipped if |
Rules with EBA = No are standard XBRL 2.1 or xBRL-CSV 1.0 structural checks. Rules with EBA = Yes are requirements imposed by the EBA Filing Rules (v5.8) that go beyond the base XBRL/xBRL-CSV specifications.
Input Format Detection
The validation engine accepts .xbrl, .xml, and .zip files. For
.zip files, the engine inspects the archive contents to determine the rule
set:
If the ZIP contains
reports/report.json(at any nesting level), it is treated as an xBRL-CSV report package and CSV rules apply.If the ZIP contains exactly one
.xbrl/.xmlfile at the root level (and noreports/report.json), it is treated as an XML-in-ZIP and XML rules apply. The inner file is extracted for validation.If the ZIP contains multiple
.xbrl/.xmlfiles at root level, or no recognized content, validation raises an error.
1. XML Instance Rules
Structural and compliance checks on xBRL-XML instances.
1.1 XML Well-formedness and Encoding
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
XML-001 |
ERROR |
No |
– |
The file MUST be well-formed XML. |
XML-002 |
ERROR |
Yes |
1.4 |
The file MUST use UTF-8 encoding. (encodingNotUtf8) |
1.2 Root Element
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
XML-003 |
ERROR |
No |
– |
The root element MUST be |
1.3 Schema Reference (schemaRef)
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
XML-010 |
ERROR |
Yes |
1.5 |
Exactly one |
XML-012 |
ERROR |
Yes |
1.5 |
The |
1.4 Filing Indicators
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
XML-020 |
ERROR |
Yes |
1.6 |
At least one |
XML-021 |
ERROR |
Yes |
1.6 |
At least one filing indicator (positive or negative) MUST exist. (missingFilingIndicators) |
XML-024 |
ERROR |
Yes |
1.6 |
Filing indicator values MUST match the label resources in the taxonomy. (invalidFilingIndicatorValue) |
XML-025 |
ERROR |
Yes |
1.6 |
No duplicate filing indicators for the same reporting unit. (duplicateFilingIndicator) |
XML-026 |
ERROR |
Yes |
1.6 |
The context referenced by filing indicators MUST NOT contain |
1.5 Context Structure
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
XML-030 |
ERROR |
Yes |
2.10 |
All |
XML-031 |
ERROR |
Yes |
2.13 |
All periods MUST be instants (not durations). (nonInstantPeriodUsed) |
XML-032 |
ERROR |
Yes |
2.13 |
All periods MUST refer to the same reference date. (multiplePeriodsUsed) |
XML-033 |
ERROR |
Yes |
2.9 |
All |
XML-034 |
ERROR |
Yes |
2.14 |
|
XML-035 |
ERROR |
Yes |
2.15 |
|
1.6 Fact Structure
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
XML-040 |
ERROR |
Yes |
2.17 |
The |
XML-041 |
ERROR |
No |
– |
The |
XML-042 |
ERROR |
Yes |
2.19 |
|
XML-043 |
ERROR |
Yes |
2.19 |
String-type facts MUST NOT be empty. (emptyUsed) |
1.7 Unit Structure
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
XML-050 |
ERROR |
Yes |
2.23 |
|
1.8 Document-level Checks
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
XML-060 |
ERROR |
Yes |
2.1 |
|
XML-061 |
ERROR |
Yes |
2.4 |
|
XML-062 |
ERROR |
Yes |
2.11 |
|
XML-063 |
ERROR |
Yes |
1.14 |
|
XML-064 |
ERROR |
Yes |
1.15 |
|
XML-065 |
WARNING |
Yes |
1.13 |
The XML standalone declaration SHOULD NOT be used. (standaloneDocumentDeclarationUsed) |
XML-066 |
WARNING |
Yes |
2.7 |
Unused contexts SHOULD NOT be present. (unusedContext) |
XML-067 |
WARNING |
Yes |
2.7 |
Duplicate contexts SHOULD NOT be present. (duplicateContext) |
XML-068 |
WARNING |
Yes |
2.22 |
Unused units SHOULD NOT be present. (unusedUnit) |
XML-069 |
WARNING |
Yes |
2.21 |
Duplicate units SHOULD NOT be present. (duplicateUnit) |
1.9 Taxonomy Conformance
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
XML-070 |
ERROR |
No |
– |
All fact element names (concepts) MUST be defined in the taxonomy for the referenced entry point. |
XML-071 |
ERROR |
No |
– |
All explicit dimension QNames used in contexts MUST be defined as dimensions in the taxonomy. |
XML-072 |
ERROR |
No |
– |
All dimension member values MUST be valid members for their respective dimension as defined in the taxonomy. |
1.10 Entity Identification
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-ENTITY-001 |
ERROR |
Yes |
2.8 |
The entity identifier |
EBA-ENTITY-002 |
ERROR |
Yes |
2.8 |
The entity identifier value MUST follow the reporting subject conventions (LEI format, consolidation suffix, etc.). (unacceptableIdentifier) |
1.11 Decimals Accuracy
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-DEC-001 |
ERROR |
Yes |
2.18 |
Monetary facts: |
EBA-DEC-002 |
ERROR |
Yes |
2.18 |
Percentage facts: |
EBA-DEC-003 |
ERROR |
Yes |
2.18 |
Integer facts: |
EBA-DEC-004 |
WARNING |
Yes |
2.18 |
Decimals SHOULD be a realistic indication of accuracy (not excessively high). |
1.12 Currency Rules
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-CUR-001 |
ERROR |
Yes |
3.1 |
All monetary facts without CCA dimension |
EBA-CUR-002 |
ERROR |
Yes |
3.1 |
Facts with CCA |
EBA-CUR-003 |
ERROR |
Yes |
3.1 |
For facts with CUS or CUA dimension, the unit currency MUST be consistent with the dimension value. (inconsistentCurrencyUnitAndDimension) |
1.13 Non-monetary Numeric Values
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-UNIT-001 |
ERROR |
Yes |
3.2 |
Non-monetary numeric values MUST use the “pure” unit. (pureUnitNotUsedForMonetaryValue) |
EBA-UNIT-002 |
WARNING |
Yes |
3.2 |
Rates, percentages and ratios SHOULD use decimal notation (e.g. 0.0931 not 9.31). A warning is raised when the absolute value exceeds 50. (useDecimalFractions) |
1.14 Additional Checks
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-2.5 |
WARNING |
Yes |
2.5 |
XML comments are ignored; data SHOULD only appear in contexts, units, and facts. (xmlCommentPresent) |
EBA-2.16.1 |
ERROR |
Yes |
2.16 |
No multi-unit fact sets; facts MUST NOT differ only by unit. (factsDifferingOnlyByUnit) |
EBA-2.24 |
ERROR |
Yes |
2.24 |
Monetary units MUST be basic ISO 4217 without scaling. (nonBasicMonetaryUnit) |
EBA-2.25 |
WARNING |
Yes |
2.25 |
Footnotes are ignored. |
1.15 Guidance
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-GUIDE-001 |
WARNING |
Yes |
3.4 |
Unused namespace prefixes SHOULD NOT be declared. (unusedNamespacePrefix) |
EBA-GUIDE-002 |
WARNING |
Yes |
3.4 |
Namespace prefixes SHOULD mirror canonical prefixes. (notRecommendedNamespacePrefix) |
EBA-GUIDE-003 |
WARNING |
Yes |
3.4 |
Unused |
EBA-GUIDE-004 |
WARNING |
Yes |
3.4 |
String values SHOULD be as short as possible. (excessiveStringLength) |
EBA-GUIDE-005 |
WARNING |
Yes |
3.4 |
Namespace declarations SHOULD be on the document element only. (unexpectedNamespaceDeclarations) |
EBA-GUIDE-006 |
WARNING |
Yes |
3.4 |
Avoid multiple prefix declarations for the same namespace. (multiplePrefixForNamespace) |
EBA-GUIDE-007 |
WARNING |
Yes |
3.4 |
String facts and domain values SHOULD NOT start/end with whitespace. (leadingOrTrailingSpacesInText) |
2. CSV Report Package Rules
Structural and compliance checks on xBRL-CSV report packages per the xBRL-CSV 1.0 specification (REC 2021-10-13, errata 2023-04-19).
2.1 Report Package Structure
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
CSV-001 |
ERROR |
No |
– |
No |
The report package MUST be a valid ZIP archive. |
CSV-002 |
ERROR |
No |
– |
No |
The ZIP MUST contain |
CSV-003 |
ERROR |
No |
– |
No |
|
CSV-004 |
ERROR |
No |
– |
No |
The ZIP MUST contain exactly one |
CSV-005 |
ERROR |
No |
– |
No |
The ZIP archive MUST NOT contain extraneous files ( |
CSV-006 |
ERROR |
No |
– |
No |
The ZIP archive MUST contain a single top-level directory (STLD) as required by the XBRL Report Package 1.0 specification. |
2.2 Metadata File (report.json)
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
CSV-010 |
ERROR |
No |
– |
No |
|
CSV-011 |
ERROR |
No |
– |
No |
|
CSV-012 |
ERROR |
Yes |
1.5 |
No |
|
CSV-013 |
ERROR |
Yes |
1.5 |
No |
The |
CSV-014 |
ERROR |
No |
– |
No |
JSON representation constraints MUST be met (no duplicate keys, correct types). |
CSV-015 |
ERROR |
No |
– |
No |
All namespace prefixes used in dimension values MUST be declared in |
CSV-016 |
ERROR |
No |
– |
No |
All URI aliases MUST resolve to valid absolute URIs. |
2.3 Parameters File (parameters.csv)
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
CSV-020 |
ERROR |
Yes |
– |
No |
|
CSV-021 |
ERROR |
Yes |
– |
No |
The header row MUST be |
CSV-022 |
ERROR |
Yes |
– |
No |
|
CSV-023 |
ERROR |
Yes |
2.10 |
No |
|
CSV-024 |
ERROR |
Yes |
– |
No |
|
CSV-025 |
ERROR |
Yes |
– |
No |
Decimals parameters MUST be present for each type of metric in the package. |
CSV-026 |
ERROR |
Yes |
– |
No |
Decimals values MUST be valid integers or “INF”. |
2.4 Filing Indicators File (FilingIndicators.csv)
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
CSV-030 |
ERROR |
Yes |
– |
No |
|
CSV-031 |
ERROR |
Yes |
– |
No |
The header row MUST be |
CSV-032 |
ERROR |
Yes |
1.6 |
No |
Every |
CSV-033 |
ERROR |
Yes |
– |
No |
|
CSV-034 |
ERROR |
Yes |
1.6 |
No |
A filing indicator MUST be present for each template in the module. (missingFilingIndicators) |
CSV-035 |
ERROR |
Yes |
1.6 |
No |
No duplicate |
2.5 Data Table CSV Files
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
CSV-040 |
ERROR |
No |
– |
No |
CSV files MUST use UTF-8 encoding. |
CSV-041 |
ERROR |
No |
– |
No |
The first row MUST be the header row. No header cell may be empty. |
CSV-042 |
ERROR |
Yes |
– |
No |
All columns defined in the corresponding JSON metadata MUST be present in the CSV header. |
CSV-043 |
ERROR |
No |
– |
No |
Each row MUST contain the same number of fields as the header. |
CSV-044 |
ERROR |
Yes |
– |
No |
Key columns MUST contain a value for each reported fact. |
CSV-045 |
ERROR |
Yes |
– |
No |
Special values ( |
CSV-046 |
ERROR |
Yes |
– |
No |
The “Decimals Suffix” feature MUST NOT be used; decimals MUST come from |
CSV-047 |
ERROR |
No |
– |
No |
Strings containing commas, linefeeds, or double quotes MUST be enclosed in double quotes, with internal double quotes escaped by doubling. |
CSV-049 |
ERROR |
Yes |
– |
No |
Data tables for non-reported templates (filing indicator = false) MUST NOT exist. |
2.6 Fact-level Validation
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
CSV-050 |
ERROR |
Yes |
2.19 |
No |
A fact MUST NOT be reported as |
CSV-051 |
ERROR |
Yes |
2.19 |
No |
A fact MUST NOT be reported as |
CSV-052 |
ERROR |
Yes |
2.16 |
No |
Duplicate business facts (same concept, same dimensions) across tables are allowed only as complete duplicates. (duplicateFactXBRL-CSV) |
2.7 Taxonomy Conformance
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
CSV-060 |
ERROR |
No |
– |
No |
All metric references in data tables MUST be defined in the taxonomy for the referenced entry point. |
CSV-061 |
ERROR |
No |
– |
No |
All dimension columns MUST correspond to dimensions defined in the taxonomy. |
CSV-062 |
ERROR |
No |
– |
No |
All dimension member values MUST be valid members for their respective dimension as defined in the taxonomy. |
2.8 Entity Identification
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
EBA-ENTITY-001 |
ERROR |
Yes |
2.8 |
No |
The |
EBA-ENTITY-002 |
ERROR |
Yes |
2.8 |
No |
The |
2.9 Decimals Accuracy
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
EBA-DEC-001 |
ERROR |
Yes |
2.18 |
No |
Monetary facts: decimals MUST be >= -4 (from 01/04/2025; >= -6 for FP, ESG, Pillar3, REM_DBM modules). |
EBA-DEC-002 |
ERROR |
Yes |
2.18 |
No |
Percentage facts: decimals MUST be >= 4. |
EBA-DEC-003 |
ERROR |
Yes |
2.18 |
No |
Integer facts: decimals MUST be 0. |
EBA-DEC-004 |
WARNING |
Yes |
2.18 |
No |
Decimals SHOULD be a realistic indication of accuracy (not excessively high). |
2.10 Currency Rules
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
EBA-CUR-001 |
ERROR |
Yes |
3.1 |
No |
All monetary facts without CCA dimension MUST use a single “reporting currency”. (multipleReportingCurrencies) |
EBA-CUR-002 |
ERROR |
Yes |
3.1 |
No |
Facts with CCA dimension MUST be expressed in their currency of denomination. (currencyOfDenomination) |
EBA-CUR-003 |
ERROR |
Yes |
3.1 |
No |
For facts with CUS or CUA dimension, the currency MUST be consistent with the dimension value. (inconsistentCurrencyUnitAndDimension) |
2.11 Non-monetary Numeric Values
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
EBA-UNIT-001 |
ERROR |
Yes |
3.2 |
Yes |
Non-monetary numeric values MUST use the “pure” unit. (pureUnitNotUsedForMonetaryValue) |
EBA-UNIT-002 |
WARNING |
Yes |
3.2 |
Yes |
Rates, percentages and ratios SHOULD use decimal notation. (useDecimalFractions) |
2.12 Decimal Representation
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
EBA-REP-001 |
ERROR |
Yes |
3.3 |
Yes |
Numeric facts MUST be expressed in specified units without scaling. Values MUST NOT be truncated to fit the decimals setting. |
2.13 Additional Checks
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
EBA-2.16.1 |
ERROR |
Yes |
2.16 |
Yes |
No multi-unit fact sets. (factsDifferingOnlyByUnit) |
EBA-2.24 |
ERROR |
Yes |
2.24 |
Yes |
Monetary units MUST be basic ISO 4217, no scaling. |
2.14 Guidance
Rule ID |
Severity |
EBA |
EBA ref |
Post-conv. |
Description |
|---|---|---|---|---|---|
EBA-GUIDE-002 |
WARNING |
Yes |
3.4 |
Yes |
Namespace prefixes SHOULD mirror canonical prefixes. (notRecommendedNamespacePrefix) |
EBA-GUIDE-004 |
WARNING |
Yes |
3.4 |
Yes |
String values SHOULD be as short as possible. (excessiveStringLength) |
EBA-GUIDE-007 |
WARNING |
Yes |
3.4 |
Yes |
String facts and domain values SHOULD NOT start/end with whitespace. (leadingOrTrailingSpacesInText) |
3. Submission Package Naming Rules
File naming conventions for EBA report submissions. These rules validate the
file name structure for both bare .xbrl/.xml files and .zip
archives. They apply to both xBRL-XML and xBRL-CSV submissions when the eba
parameter is enabled.
The EBA requires submission files to follow a specific naming structure:
ReportSubject_Country_FrameworkCodeModuleVersion_Module_ReferenceDate_CreationTimestamp
See EBA Filing Rules v5.8, “File naming structure for remittance to the EBA” (pp. 57–61).
Naming rules EBA-NAME-001 through EBA-NAME-060 validate the file stem and apply
regardless of whether the input is a bare .xbrl file or a .zip archive.
EBA-NAME-070 and EBA-NAME-071 validate the relationship between the ZIP archive
name and its inner content, and are skipped for bare files.
3.1 Overall File Name Structure
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-NAME-001 |
ERROR |
Yes |
File naming |
The file name MUST follow the pattern |
3.2 Report Subject
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-NAME-010 |
ERROR |
Yes |
File naming |
For modules with |
EBA-NAME-011 |
ERROR |
Yes |
File naming |
For modules without |
EBA-NAME-012 |
ERROR |
Yes |
File naming |
For country-level aggregate reports: the ReportSubject MUST be the ISO country code (two capital letters) + |
EBA-NAME-013 |
ERROR |
Yes |
File naming |
For authority-level aggregate reports: the ReportSubject MUST be the authority code + |
EBA-NAME-014 |
ERROR |
Yes |
File naming |
For MICA reports: the ReportSubject MUST be IssuerID-TokenID + |
3.3 Country
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-NAME-020 |
ERROR |
Yes |
File naming |
The Country component MUST be a valid ISO 3166-1 alpha-2 country code in uppercase. |
3.4 Framework Code and Module Version
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-NAME-030 |
ERROR |
Yes |
File naming |
The FrameworkCodeModuleVersion MUST be the DPM/XBRL framework code in uppercase followed by the module version as a 6-digit number |
3.5 Module
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-NAME-040 |
ERROR |
Yes |
File naming |
The Module component MUST be the taxonomy module name in uppercase without underscores. |
3.6 Reference Date
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-NAME-050 |
ERROR |
Yes |
File naming |
The ReferenceDate component MUST be in |
3.7 Creation Timestamp
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-NAME-060 |
ERROR |
Yes |
File naming |
The CreationTimestamp component MUST be in |
3.8 Inner Content Naming
Rule ID |
Severity |
EBA |
EBA ref |
Description |
|---|---|---|---|---|
EBA-NAME-070 |
ERROR |
Yes |
File naming |
(XML) The ZIP MUST contain exactly one |
EBA-NAME-071 |
ERROR |
Yes |
File naming |
(CSV) The root folder inside the ZIP MUST be named identically to the ZIP file (without the |
Rule Coverage Summary
Category |
Count |
Rules |
|---|---|---|
XML-only format rules |
34 |
XML-001 – XML-072 |
XML-only EBA rules |
7 |
EBA-2.5, EBA-2.25, EBA-GUIDE-001, -003, -005, -006 |
CSV-only format rules |
40 |
CSV-001 – CSV-062 |
Shared EBA rules |
17 |
EBA-ENTITY, EBA-DEC, EBA-CUR, EBA-UNIT, EBA-REP, EBA-2.16.1, EBA-2.24, EBA-GUIDE-002/-004/-007 |
Submission naming rules |
14 |
EBA-NAME-001 – EBA-NAME-071 |
Total unique rules |
98 + 14 naming |
Effective rules per format:
Format |
Count |
Composition |
|---|---|---|
XML |
58 |
34 XML-only + 7 XML-only EBA + 17 shared EBA |
CSV |
57 |
40 CSV-only + 17 shared EBA |
Naming |
14 |
Applied to both formats when |