Одна неверная цифра в расчётном счёте — и платёж возвращается через несколько дней. К счастью, почти все российские реквизиты содержат контрольные разряды: по ним опечатку видно сразу, без запросов в ФНС или банк.
Контрольная сумма не скажет, что компания существует. Но она поймает самые частые ошибки: пропущенную цифру, переставленные соседние цифры, опечатку при перепечатке с PDF.
ИНН организации — 10 цифр
Последняя цифра — контрольная. Первые девять умножают на веса 2, 4, 10, 3, 5, 9, 4, 6, 8, складывают, берут остаток от деления на 11, а затем — на 10.
function isValidInn10(inn: string) {
const w = [2, 4, 10, 3, 5, 9, 4, 6, 8];
const sum = w.reduce((s, x, i) => s + x * Number(inn[i]), 0);
return (sum % 11) % 10 === Number(inn[9]);
}
ИНН предпринимателя — 12 цифр
Контрольных цифр две. Одиннадцатую считают по первым десяти с весами 7, 2, 4, 10, 3, 5, 9, 4, 6, 8, двенадцатую — по первым одиннадцати с весами 3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8. Остаток в обоих случаях — сначала от 11, потом от 10.
ОГРН и ОГРНИП
- ОГРН (13 цифр): первые 12 цифр как число, остаток от деления на 11, затем на 10 — должен совпасть с 13-й цифрой.
- ОГРНИП (15 цифр): первые 14 цифр, остаток от деления на 13, затем на 10 — должен совпасть с 15-й.
В JavaScript удобно считать через BigInt — так не нужно думать о точности больших чисел:
const ok = Number(BigInt(ogrnip.slice(0, 14)) % 13n % 10n) === Number(ogrnip[14]);
Расчётный счёт и БИК
Расчётный счёт сам по себе не проверить — контрольная цифра в нём рассчитана вместе с БИК банка. Это называется ключеванием:
- Возьмите три последние цифры БИК и припишите к ним 20 цифр счёта — получится 23 цифры.
- Умножьте каждую цифру на вес по циклу
7, 1, 3, 7, 1, 3…. - Сложите младшие разряды произведений.
- Сумма должна делиться на 10.
function isValidAccount(account: string, bik: string) {
const w = [7, 1, 3];
const digits = (bik.slice(-3) + account).split('').map(Number);
const sum = digits.reduce((s, d, i) => s + ((d * w[i % 3]) % 10), 0);
return sum % 10 === 0;
}
Корреспондентский счёт проверяется так же, только вместо трёх последних цифр БИК берут «0» и пятую-шестую цифры БИК.
Что ещё видно по реквизитам
- Длина ИНН сразу говорит о типе контрагента: 10 цифр — организация, 12 — ИП или физлицо.
- Счета юрлиц обычно начинаются на
40702, счета ИП — на40802. Счёт407…у предпринимателя — повод перепроверить. - БИК российского банка начинается на
04.
В «Трёх Бумагах» это работает автоматически
Когда вы загружаете карточку заказчика, сервис проверяет ИНН, ОГРН или ОГРНИП, расчётный и корреспондентский счёт. Если что-то не сходится, он покажет это до сборки — вместе с тем, какое именно поле выглядит неверно. Загрузите карточку и посмотрите.