# validation.lei Checks a Legal Entity Identifier, the 20-character code every counterparty in a regulated trade reports under EMIR and MiFID II. ISO 17442 fixes the shape: - characters 1-4: the prefix of the Local Operating Unit (LOU) that issued it, returned as `louPrefix`; - characters 5-18: letters and digits chosen by the LOU; - characters 19-20: two check digits. THE CHECK is ISO 7064 MOD 97-10, the same arithmetic as an IBAN's: read each letter as a number (A = 10 ... Z = 35), keep digits as they are, and the whole 20-character number must leave a remainder of 1 when divided by 97. A remainder of 0 is wrong, which is the mistake a validator written from memory makes. The expanded number is up to 40 digits long, too long for a 64-bit integer, so all three implementations carry the remainder along one character at a time. This is the same arithmetic `validation.iban` uses, but that capability keeps its mod-97 routine private (nothing to import), and a level-0 capability cannot require another, so the dozen lines are written out here. A PASSING LEI IS WELL FORMED, NOT NECESSARILY ISSUED OR CURRENT. LEIs lapse if not renewed each year; only the GLEIF database (https://search.gleif.org) says whether one is issued, lapsed or retired, and whose it is. ACCEPTED INPUT: letters in either case (folded to upper case) and digits, with ASCII spaces ignored anywhere ("5493 001K ..."). Anything else is refused. | reason | meaning | |-------------------|----------------------------------------------------------| | `empty` | nothing but spaces, or not a string at all | | `bad-character` | anything other than A-Z, a-z, 0-9 and spaces | | `bad-length` | not exactly 20 characters | | `bad-format` | the last two characters are not both digits | | `bad-check-digit` | the MOD 97-10 remainder is not 1 | The checks run in that order; the first failure is the reason. Validators answer rather than throw. Sources: ISO 17442-1:2020 "Financial services - Legal entity identifier (LEI)"; ISO/IEC 7064:2003 MOD 97-10; GLEIF, "LEI in detail" (https://www.gleif.org/en/about-lei/iso-17442-the-lei-code-structure).