---
title: "ИИН. Алгоритм расчета и проверки"
description: "В моих проектах часто необходимо вносить данные по клиентам, которые обязательно сопровождаются внес..."
author: "goldenalfer"
published: "2011-02-03T01:23:43+00:00"
modified: "2014-05-12T20:13:37+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/iin-algoritm-rascheta-i-proverki-114938"
markdown_url: "https://yvision.kz/post/iin-algoritm-rascheta-i-proverki-114938/markdown"
site_name: "Yvision.kz"
---

# ИИН. Алгоритм расчета и проверки

> В моих проектах часто необходимо вносить данные по клиентам, которые обязательно сопровождаются внес...

![ИИН. Алгоритм расчета и проверки](http://storage.yvision.kz/images/user/goldenalfer/QovEhfP2zv56c9dq1EBYTQ894sr9Rv.png)

В моих проектах часто необходимо вносить данные по клиентам, которые обязательно сопровождаются внесением данных ИИН. Долгое время я собирал данные о том, что такое ИИН и как проверять правильность его ввода. На просторах интернета уже есть несколько постов с необходимой информацией, но, к сожалению, часто бывает, что информация неверная, или не подкреплена никакими официальными источниками.

Сегодня мы с вами попытаемся разобраться в этом вопросе с точки зрения Казахстанского законодательства, а также набросаем простой скрипт проверки ИИН на Javascript.

ИИН - индивидуальный идентификационный номер. Это понятие очень схоже с другой аббревиатурой: БИН - бизнес идентификационный номер. Мы будем рассматривать оба понятия.

Мы не будем вдаваться в подробности о том, когда началось зарождение идеи ИИН/БИН, а сразу перейдем к первому важному в этом вопросе постановлению.

#### [Постановление Правительства Республики Казахстан от 11 июня 2003 года №565 "Об утверждении Программы перехода на единый номер физического (юридического) лица (идентификационный номер (бизнес-идентификационный номер) в целях создания Национальных реестров Республики Казахстан"](http://adilet.zan.kz/rus/docs/P030000565_)

Здесь нас интересуют подразделы 2, 3, 4 раздела 5.

> 2. Структура ИИН (БИН) За основу структуры ИИН предлагается взять двенадцатизначный идентификационный код гражданина, используемый в настоящее время Министерством внутренних дел Республики Казахстан. По информации Министерства внутренних дел похожие структуры кода применяются в Дании, Финляндии, Японии, Германии, США, Франции, Кувейте, Малайзии, Мальте, Ботсване, Кипре, Египте, Латвии, Литве, Эстонии, Белоруссии и других странах. В Казахстане данный код используется с 1997 года. Преимущество этого кода заключается в его хорошей запоминаемости и информативности для физических лиц, поскольку в структуре действующего идентификационного кода гражданина присутствуют в определенной комбинации известные гражданину сведения, такие как дата, месяц и год рождения, а также пол и век физического лица. При разработке структуры БИН предлагается использовать двенадцатиразрядный код, контрольный разряд которого будет рассчитываться аналогично расчету контрольного разряда ИИН. В структуре ИИН (БИН) предлагается использовать только цифровые значения. Структура представляет собой характеристику последовательности цифр слева направо. Для удобства описания несколько разрядов, имеющих сходную и (или) одинаковую характеристику, могут быть объединены в один фасет. 3. Алгоритм генерирования ИИН Предлагается следующий алгоритм генерирования ИИН: 1) первый фасет - содержит 6 разрядов (с а1 по а6) и характеризует год (две последние цифры), месяц и дату рождения физического лица; 2) второй фасет - содержит 1 (а7) разряд и характеризует пол физического лица и век его рождения. Причем при определении значения разряда для мужчин используются нечетные цифры, а для женщин - четные цифры. Конкретные значения данного разряда выглядят следующим образом: 1 - для мужчин, родившихся в 19 веке; 2 - для женщин, родившихся в 19 веке; 3 - для мужчин, родившихся в 20 веке; 4 - для женщин, родившихся в 20 веке; 5 - для мужчин, родившихся в 21 веке; 6 - для женщин, родившихся в 21 веке. Следовательно, в данном разряде имеются резервные значения 7, 8, 9 и 0; 3) третий фасет - содержит 4 разряда (с а8 по а11) и характеризует порядковый номер регистрации в системе. По данным Агентства по статистике Республики Казахстан максимальное количество родившихся в один день (начиная с 1999 года) - 1229 человек, поэтому 4 знака для порядкового номера регистрации вполне достаточно. Порядковый номер регистрации проставляется сплошной нумерацией в рамках одной группы (года рождения); 4) четвертый фасет - содержит 1 разряд (а12) и является контрольным разрядом ИИН. Алгоритм расчета контрольного разряда ИИН приведен в параграфе 5 главы 5 Программы. Индивидуальные предприниматели, осуществляющие свою деятельность в форме личного предпринимательства (далее - ИП(Л)), будут использовать ИИН, который был присвоен физическому лицу при рождении. 4. Алгоритм генерирования БИН Предлагается следующий алгоритм генерирования БИН: 1) первый фасет - содержит 4 разряда (с а1 по а4) и характеризует год (две последние цифры) и месяц регистрации юридического лица или индивидуального предпринимателя, осуществляющего деятельность на основе совместного предпринимательства (далее - ЮЛ или ИП(С)); 2) второй фасет - содержит 1 разряд (а5) и характеризует тип ЮЛ или ИП(С). Кроме того, алгоритм задания значения данного разряда также используется для исключения возможности совпадения БИН с ИИН. Поскольку в структуре ИИН а5 (пятый разряд) означает первую цифру даты рождения, то, учитывая, что дата рождения может начинаться только с 0, 1, 2 или 3 (например, 01, 11, 21, 31), обязательным условием в генерировании в структуре БИН а5 (пятого разряда) будет исключение использования цифр 0, 1, 2 и 3. Предлагается использовать следующие конкретные значения данного разряда: 4 - для юридических лиц-резидентов; 5 - для юридических лиц-нерезидентов; 6 - для индивидуальных предпринимателей, осуществляющих деятельность на основе совместного предпринимательства. Следовательно, в данном разряде имеются резервные значения 7, 8 и 9; 3) третий фасет - содержит 1 разряд (а6) и характеризует специальный признак, являющийся дополнительной детализацией разряда а5: 0 - признак головного подразделения ЮЛ или ИП(С); 1 - признак филиала ЮЛ или ИП(С); 2 - признак представительства ЮЛ или ИП(С); 3 - признак иного обособленного структурного подразделения ЮЛ или ИП(С); 4 - признак крестьянского (фермерского) хозяйства, осуществляющего деятельность на основе совместного предпринимательства; 4) четвертый фасет - содержит 5 разрядов (с а7 по а11) и характеризует порядковый номер регистрации в системе ЮЛ или ИП(С), а также их структурных подразделений; 5) пятый фасет - содержит 1 разряд (а12) и является контрольным разрядом БИН. Алгоритм расчета контрольного разряда БИН приведен в параграфе 5 главы 5 Программы и аналогичен расчету контрольного разряда ИИН.

Мы не стали брать из этого постановления подраздел 5 раздела 5, где приводится алгоритм проверки контрольного разряда (a12), потому что он был изменен в другом постановлении.

#### [Постановление Правительства Республики Казахстан от 30 апреля 2007 года № 352 "О внесении изменений и дополнений в некоторые решения Правительства Республики Казахстан"](http://adilet.zan.kz/rus/docs/P070000352_)

Здесь нас интересует часть пункта 11 - алгоритм расчета значения контрольного разряда:

> подраздел 5 изложить в следующей редакции: «5. Алгоритм расчета значения контрольного разряда В целях осуществления контроля и снижения ошибок клавиатурного ввода в составе ИИН (БИН) предусматривается наличие контрольного 12-го разряда, при расчете которого будет использоваться следующий алгоритм в два цикла: а12=(а1*b1+а2*b2+а3*b3+а4*b4+а5*b5+а6*b6+а7*b7+а8*b8+а9*b9+a10*b10+a11*b11) mod 11, где: ai - значение i-гo разряда; bi - вес i-гo разряда. разряд ИИН: 1 2 3 4 5 6 7 8 9 10 11 вес разряда: 1 2 3 4 5 6 7 8 9 10 11. 1. Если полученное число равно 10, то расчет контрольного разряда производится с другой последовательностью весов: разряд ИИН: 1 2 3 4 5 6 7 8 9 10 11 вес разряда: 3 4 5 6 7 8 9 10 11 1 2. 2. Если полученное число также равно 10, то данный ИИН не используется. 3. Если полученное число имеет значение от 0 до 9, то данное число берется в качестве контрольного разряда.».

В итоге у нас вполне достойное понимание того, что такое ИИН, и как можно проверить правильность его ввода.

Привожу пример алгоритма на javascript, который позволит проверить правильность ввода ИИН:

 
 

Валидация ИИН/БИН

- function iinCheck(iin, clientType, birthDate, sex, isResident) {

- //clientType: 1 - Физ. лицо (ИИН), 2 - Юр. лицо (БИН)

- //birthDate: дата рождения (в формате Javascript Date)

- //sex: true - м, false - ж

- //isResident: true - резидент, false: нерезидент (true: по умолчанию)

- isResident = isResident || true;
- if(!iin) return false;
- if(iin.length!=12) return false;
- if(!(/[0-9]{12}/.test(iin))) return false;
- switch(clientType){

- case 1:

- //Физ. лицо

- //Проверяем первый фасет на совпадение с датой рождения ГГММДД

- if(iin.substring(0, 6)!=(

- "" +

- (birthDate.getYear()) +

- ((birthDate.getMonth()+1)(1900+parseInt(s/2)*100)) return false;
- break;
- case 2:

- //Юр. лицо

- //Проверяем корректность даты (насколько это возможно)

- var m = parseInt(iin.substring(2, 4));
- if(m>12) return false;

- //Проверяем признак резидентства

- var r = parseInt(iin.substring(4, 5));
- if(r6 || (r==4 && !isResident) || (r==5 && isResident)) return false;
- break;

- }

- //Проверяем контрольный разряд

- var b1 = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ];
- var b2 = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 1, 2 ];
- var a = [];
- var controll = 0;
- for(var i=0; i<12; i++){

- a[i] = parseInt(iin.substring(i, i+1));
- if(i<11) controll += a[i]*b1[i];

- }

- controll = controll % 11;
- if(controll==10) {

- alert("s");
- controll = 0;
- for(var i=0; i<11; i++)

- controll += a[i]*b2[i];
- controll = controll % 11;

- }

- if(controll!=a[11]) return false;
- return true;

- }

---

Source: [https://yvision.kz/post/iin-algoritm-rascheta-i-proverki-114938](https://yvision.kz/post/iin-algoritm-rascheta-i-proverki-114938)