Перейти к основному содержимому

validIbanMod97

@mineflow/shared-validation


@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 произвольной страны.

Алгоритм:

  1. проверка длины (20) и префикса (KZ);
  2. перестановка первых 4 символов в конец строки (ISO 13616);
  3. замена букв числами (A=10Z=35), цифры остаются как есть;
  4. накопление остатка по модулю 97 итеративно — без BigInt, чтобы пакет оставался zero-dependency и совместимым с любым target/средой;
  5. IBAN валиден, когда итоговый остаток равен 1.

Функция чистая и frontend-safe: не бросает исключений и не нормализует ввод — пробелы, дефисы и нижний регистр приводят к false. Перед проверкой UI-значения убери пробелы и приведи к верхнему регистру: iban.replace(/\s/g, '').toUpperCase().

Parameters

ParameterTypeDescription
ibanstringСтрока-кандидат 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()); // нормализуй заранее