Алгоритм проверки ИНН

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

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

Сперва рассмотрим алгоритм проверки ИНН для ЮЛ: последняя десятая цифра является контрольной. Вычисление проводится по формуле:

  • n10 = ((2n1 + 4n2 + 10n3 + 3n4 + 5n5 + 9n6 + 4n7 + 6n8 + 8n9) mod 11) mod 10,

где nx — номер в проверяемом номере, а mod 11 и mod 10 — остатки от деления.

Проще говоря, каждый разряд ИНН умножается на соответствующий коэффициент, полученные числа суммируются, потом поочерёдно вычисляется остаток от деления на 11 и на 10. Получившееся число должно быть равно десятому разряду в ИНН.

Забегая вперёд, на этом этапе можно выделить коэффициенты: (2, 4, 10, 3, 5, 9, 4, 6, 8), так как они нам понадобятся.

Теперь можно перейти к рассмотрению ИНН для физических лиц. Алгоритм проверки ИНН для ФЛ чуть длиннее, так как приходится вычислять два числа, потому что контрольными являются 11 и 12 число в номере.

Формулы для их вычисления:

  • n11 = (7n1 + 2n2 + 4n3 + 10n4 + 3n5 + 5n6 + 9n7 + 4n8 + 6n9 + 8n10) mod 11) mod 10);
  • n12 = (3n1 + 7n2 +2n3 + 4n4 + 10n5 + 3n6 + 5n7 + 9n8 + 4n9 + 6n10 + 8n11) mod 11) mod10).

Вероятно, вы заметили закономерность использования коэффициентов, которые были выписаны для проверки ИНН у ЮЛ. Проверка ИНН для физ. лиц аналогична — считается сумма произведений разрядов номера на коэффициенты, после чего берётся остаток от поочерёдного деления с остатком на 11 и 10.

В качестве примера приведу реализацию проверки инн на питоне:

Суть функции проста: проверяется, чтобы длина ИНН соответствовала 10 или 12 символам. В зависимости от длины inn функция вернёт True/False о соответствии контрольных значений в номере. В списке k определены все используемые коэффициенты, но в зависимости от длины ИНН определяется используемая часть внутри inn_csum. Если внимательно посмотреть, алгоритм проверки ИНН при уменьшении номера пропорционально сдвигает используемые коэффициенты.

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

комментария 2

  1. Los:

    Укажите явно, что это для РФ. Для других стран постСНГ алгоритмы могут отличаться

    • admin:

      Добавил в шапку информацию, что этот алгоритм для ИНН в РФ, спасибо за замечание.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *