validIbanMod97
@mineflow/shared-validation / validIbanMod97
Function: validIbanMod97()
function validIbanMod97(iban: string): boolean;
Defined in: iban-mod97.ts:63
Проверяет KZ IBAN по контрольной сумме ISO 13616 (mod-97).
Заточен строго под Казахстан: длина зашита в 20 символов, префикс — KZ
(KZ + 2 контрольные цифры + 16 знаков BBAN). Любой не-KZ IBAN или иная длина
дают false — это by design (контрагенты MineFlow резиденты РК), а не общий
валидатор IBAN произвольной страны.
Алгоритм:
- проверка длины (20) и префикса (
KZ); - перестановка первых 4 символов в конец строки (ISO 13616);
- замена букв числами (
A=10…Z=35), цифры остаются как есть; - накопление остатка по модулю 97 итеративно — без
BigInt, чтобы пакет оставался zero-dependency и совместимым с любым target/средой; - IBAN валиден, когда итоговый остаток равен 1.
Функция чистая и frontend-safe: не бросает исключений и не нормализует ввод —
пробелы, дефисы и нижний регистр приводят к false. Перед проверкой UI-значения
убери пробелы и приведи к верх нему регистру: iban.replace(/\s/g, '').toUpperCase().
Parameters
| Parameter | Type | Description |
|---|---|---|
iban | string | Строка-кандидат KZ IBAN (ожидается ровно 20 символов в верхнем регистре без пробелов). |
Returns
boolean
true, если остаток mod-97 равен 1; иначе false.
Example
validIbanMod97('KZ75125KZT2069100100'); // true | false (20 символов, начинается с 'KZ')
validIbanMod97('KZ75 125K ZT20 6910 0100'.replace(/\s/g, '').toUpperCase()); // нормализуй заранее