Rule · MAJOR
COMMON.LEI_CHECK_DIGITS
Legal Entity Identifier format and check digits (ISO 17442, ISO/IEC 7064 MOD 97-10)
- Citation
- Annex I, Part A, Annex II, Part A, Annex III, Part A MiCAR
- Canonical form
- Anhang I Teil A, Anhang II Teil A, Anhang III Teil A MiCAR
- Runs for
- Annex I · other crypto-assets; Annex II · asset-referenced tokens; Annex III · e-money tokens
- Severity if open
- MAJOR
- Section key
- all sections; anchored to
issuer - Minimum words
- 0
- Listed terms (English)
- none
- Listed terms (German)
- none
- Package version
- 1.2.1, built from source that may include unreleased changes
- Source
- rules/common.py
How the status is set
- Missing: no LEI-shaped code (18 letters or digits and two check digits) appears in any section. A 20-digit number counts only next to an LEI label.
- Review: an LEI-shaped code fails the ISO/IEC 7064 MOD 97-10 check digits.
- Pass: every LEI-shaped code has valid check digits. No registry is asked.
Legal basis
Annex I, Part A, Annex II, Part A, Annex III, Part A MiCAR
Not re-verified since these pages were introduced (2026-10-20): EUR-Lex was unreachable from the build environment. The citation is the rule's own, unchanged. The citation is the Part of each Annex that the party rules already cite. The point that names the LEI has not been verified against the Official Journal; treat the legal basis as pending owner review.
Synthetic examples
Each example is linted when this page is generated. The build fails if a result differs.
Without an LEI there are no check digits to verify, so the rule fails closed.
{
"title": "Synthetic rule example",
"type": "other",
"sections": {
"issuer": "Synthetic Issuer AG."
}
}The last two digits do not satisfy ISO/IEC 7064 MOD 97-10, which usually means a typo.
{
"title": "Synthetic rule example",
"type": "other",
"sections": {
"issuer": "Synthetic Issuer AG. LEI: 9999SYNTH0000ZZQ0167."
}
}The code is well formed. The check does not ask a registry whether the LEI exists or belongs to the named entity.
{
"title": "Synthetic rule example",
"type": "other",
"sections": {
"issuer": "Synthetic Issuer AG, a fictional company. LEI: 9999SYNTH0000ZZQ0166."
}
}Limitations
- Reads every section of the draft; findings are anchored to the
issuersection. - Works offline on the characters of each code. It does not confirm that an LEI is registered, current or held by the entity the draft names.
- Status and severity are fixed by the rule. A draft cannot waive or downgrade them.
- The citation is the Part of each Annex that the party rules already cite. The point that names the LEI has not been verified against the Official Journal; treat the legal basis as pending owner review.
Disagree with this rule, or missing one? Propose a rule change.