← Назад к вопросам

Из чего состоит ИНН?

1.0 Junior🔥 31 комментариев
#Другое#Опыт и проекты#Требования и их анализ

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

ИНН (Идентификационный номер налогоплательщика)

ИНН — это уникальный идентификационный номер, выдаваемый Федеральной налоговой службой (ФНС) России каждому налогоплательщику. В своей практике я часто работал с системами, где ИНН используется как основной идентификатор организации или физического лица, поэтому важно понимать его структуру.

Общая информация об ИНН

Назначение:

  • Уникальная идентификация физических лиц в налоговой системе
  • Уникальная идентификация организаций
  • Обязателен при регистрации в ФНС
  • Требуется для открытия счетов, получения займов, участия в торгах

Формат:

  • Для физических лиц: 12 цифр
  • Для организаций: 10 цифр
  • Общий формат: строка из арабских цифр

Структура ИНН для физического лица (12 цифр)

Пример: 5 0 2 7 5 0 0 6 2 5 0 1

ИНН физического лица имеет следующую структуру:

5 0 | 2 7 5 0 | 0 0 6 2 5 | 0 | 1
│   │         │          │   │
│   │         │          │   └─ Контрольная цифра (1 цифра)
│   │         │          └────── Последовательный номер (3 цифры)
│   │         └─────────────────  Номер ЗАГСа выдачи (3 цифры)
│   └───────────────────────────  Дата рождения (4 цифры: день + месяц)
└───────────────────────────────  КОД подразделения ФНС (2 цифры)

Подробный разбор каждой части

Позиции 1-2: Код подразделения ФНС (2 цифры)

50 — примеры:
01 - ФНС по Москве
02 - ФНС по Московской области
66 - ФНС по Свердловской области
78 - ФНС по Санкт-Петербургу и Ленинградской области
99 - ФНС, выдавшие ИНН иностранцам

Код зависит от того, в каком регионе гражданин 
получил ИНН (обычно - по месту рождения)

Позиции 3-6: Дата рождения (4 цифры)

2 7 5 0 — разбор:
  27 — день рождения (01-31)
  50 — месяц рождения (01-12, где 50+ означают XIX век)
  
Для дат рождения:
  01-99 — люди, рожденные в XX веке (1900-1999)
  Пример: 5050 = 27 мая 1950 года
  
Для дат рождения в XIX веке добавляется 100:
  Пример: 2750 = 27 мая 1850 года (месяц 50 = 100+50-100 = май)

Позиции 7-9: Номер ЗАГСА (3 цифры)

006 — трехзначный номер ЗАГСа (Загса и Реестрации Актов Гражданского Состояния),
выдавшего свидетельство о рождении

0-999 — номер от 0 до 999
Пример: 001, 002, 999 и т.д.

Позиции 10-11: Порядковый номер (2 цифры)

25 — порядковый номер записи о рождении в реестре ЗАГСа

Это просто двузначный номер (01-99 или 00-99)
оВидимо, для рожденных с одинаковой датой в одном ЗАГСе

Позиция 12: Контрольная цифра (1 цифра)

1 — проверочная/контрольная цифра

Вычисляется по алгоритму на основе первых 11 цифр
Используется для проверки корректности ИНН

Алгоритм:
1. Каждая цифра (позиции 1-11) умножается на соответствующий коэффициент:
   Коэффициенты: 7, 2, 4, 10, 3, 5, 9, 4, 6, 8, 0
   
2. Суммируются все произведения
3. Сумма делится на 11
4. Остаток от деления = контрольная цифра (если остаток < 10)
5. Если остаток >= 10, то контрольная цифра = 0

Пример вычисления контрольной цифры:

ИНН без контрольной цифры: 5 0 2 7 5 0 0 0 6 2 5
Коэффициенты:              7 2 4 10 3 5 9 4 6 8 0

Произведения:
5×7 = 35
0×2 = 0
2×4 = 8
7×10 = 70
5×3 = 15
0×5 = 0
0×9 = 0
0×4 = 0
6×6 = 36
2×8 = 16
5×0 = 0

Сумма = 35+0+8+70+15+0+0+0+36+16+0 = 180
180 ÷ 11 = 16 (остаток 4)

Контрольная цифра = 4

Полный ИНН: 5 0 2 7 5 0 0 0 6 2 5 4

Структура ИНН для организации (10 цифр)

Пример: 7 7 0 1 0 0 5 0 9 9

7 7 | 0 1 | 0 0 5 0 9 9
│   │     │
│   │     └───────────── Серийный номер (6 цифр) + 2 контрольные
│   └─────────────────── Номер налоговой инспекции (2 цифры)
└───────────────────────  Код региона (2 цифры)

Подробный разбор

Позиции 1-2: Код региона России (2 цифры)

77 — Москва
78 — Санкт-Петербург и Ленинградская область
66 — Свердловская область
01 — Московская область
 и так далее по кодам субъектов РФ

Полный список кодов:
https://www.nalog.ru/rn77/

Позиции 3-4: Номер налоговой инспекции (2 цифры)

01 — номер ИФНС в данном регионе
02, 03, и т.д.

Позиции 5-9: Серийный номер (5 цифр)

00509 — уникальный номер организации в этой налоговой инспекции

Позиция 10: Контрольная цифра (1 цифра)

9 — проверочная цифра

Вычисляется аналогично, но с другим алгоритмом:
1. Каждая цифра позиций 1-9 умножается на коэффициент:
   Коэффициенты: 2, 4, 10, 3, 5, 9, 4, 6, 8
   
2. Суммируются произведения
3. Сумма делится на 11
4. Остаток от деления = контрольная цифра (если остаток < 10)
5. Если остаток >= 10, то контрольная цифра = 0

Практические применения в IT-системах

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

def validate_inn(inn_str: str) -> bool:
    """Проверка корректности ИНН"""
    
    # Проверка длины
    if len(inn_str) not in [10, 12]:
        return False
    
    # Проверка, что только цифры
    if not inn_str.isdigit():
        return False
    
    # Проверка контрольной цифры
    if len(inn_str) == 12:
        return validate_inn_physical(inn_str)
    else:
        return validate_inn_organization(inn_str)

def validate_inn_physical(inn: str) -> bool:
    """Валидация ИНН физического лица (12 цифр)"""
    weights = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8, 0]
    
    # Вычисляем контрольную цифру для позиции 12
    total = sum(int(inn[i]) * weights[i] for i in range(11))
    control_digit = total % 11
    control_digit = control_digit if control_digit < 10 else 0
    
    return int(inn[11]) == control_digit

def validate_inn_organization(inn: str) -> bool:
    """Валидация ИНН организации (10 цифр)"""
    weights = [2, 4, 10, 3, 5, 9, 4, 6, 8]
    
    # Вычисляем контрольную цифру
    total = sum(int(inn[i]) * weights[i] for i in range(9))
    control_digit = total % 11
    control_digit = control_digit if control_digit < 10 else 0
    
    return int(inn[9]) == control_digit

Регулярные выражения

# Физическое лицо (12 цифр)
^\d{12}$

# Организация (10 цифр)
^\d{10}$

# Любое (10 или 12 цифр)
^\d{10}(?:\d{2})?$

Хранение в БД

-- Таблица организаций
CREATE TABLE organizations (
    id UUID PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    inn VARCHAR(10) NOT NULL UNIQUE,
    kpp VARCHAR(9),  -- Код причины постановки на учет
    ogrn VARCHAR(15),  -- Основной государственный регистрационный номер
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Таблица физических лиц
CREATE TABLE persons (
    id UUID PRIMARY KEY,
    full_name VARCHAR(255) NOT NULL,
    inn VARCHAR(12) NOT NULL UNIQUE,
    birth_date DATE,
    snils VARCHAR(11),  -- Страховой номер индивидуального лицевого счета
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Дополнительные идентификаторы

СНИЛС (для физических лиц):

  • Страховой номер индивидуального лицевого счета
  • 11 цифр
  • Выдается Пенсионным фондом России

КПП (для организаций):

  • Код причины постановки на учет
  • 9 цифр
  • Используется при наличии обособленных подразделений

ОГРН (для организаций):

  • Основной государственный регистрационный номер
  • 15 цифр
  • Выдается Минюстом при регистрации

Типичные ошибки при работе с ИНН

  1. Не валидируется контрольная цифра — приводит к неправильному приему данных
  2. Неправильное форматирование — ИНН должен быть строкой из цифр
  3. Неучет различных форматов — 10 или 12 цифр требуют разных алгоритмов
  4. Сохранение в неправильном формате — использование INT вместо VARCHAR
  5. Неправильная интеграция с системами — несоответствие форматов при обмене данными

Проверочный список для аналитика

  • Требуется ли в системе ИНН?
  • Какой тип (физическое лицо или организация)?
  • Какой уровень валидации нужен?
  • Как хранить и передавать ИНН?
  • Какова роль ИНН в системе (основной ID или доп. реквизит)?
  • Нужна ли интеграция с внешними системами ФНС?
  • Какие еще идентификаторы нужны (СНИЛС, КПП, ОГРН)?

Выводы

ИНН имеет четкую структуру:

  • Для физических лиц (12 цифр): код ФНС + дата рождения + номер ЗАГСА + порядковый номер + контрольная цифра
  • Для организаций (10 цифр): код региона + номер ИФНС + серийный номер + контрольная цифра

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

Из чего состоит ИНН? | PrepBro