Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Проверка ИНН, КПП, ОГРН, ОГРНИП, БИК, к/с, р/с на PHP и JavaScript
Проверка ИНН
ИНН юридических лиц состоит из 10 цифр. ИНН физических лиц и индивидуальных предпринимателей(ИП) состоит из 12 цифр.
Алгоритм проверки ИНН 10 знаков:
- Вычисляется контрольная сумма со следующими весовыми коэффициентами: (2,4,10,3,5,9,4,6,8,0)
- Вычисляется контрольное число как остаток от деления контрольной суммы на 11
- Если контрольное число больше 9, то контрольное число вычисляется как остаток от деления контрольного числа на 10
- Контрольное число проверяется с десятым знаком ИНН. В случае их равенства ИНН считается правильным.
Алгоритм проверки ИНН 12 знаков:
- Вычисляется контрольная сумма по 11-ти знакам со следующими весовыми коэффициентами: (7,2,4,10,3,5,9,4,6,8,0)
- Вычисляется контрольное число(1) как остаток от деления контрольной суммы на 11
- Если контрольное число(1) больше 9, то контрольное число(1) вычисляется как остаток от деления контрольного числа(1) на 10
- Вычисляется контрольная сумма по 12-ти знакам со следующими весовыми коэффициентами: (3,7,2,4,10,3,5,9,4,6,8,0).
- Вычисляется контрольное число(2) как остаток от деления контрольной суммы на 11
- Если контрольное число(2) больше 9, то контрольное число(2) вычисляется как остаток от деления контрольного числа(2) на 10
- Контрольное число(1) проверяется с одиннадцатым знаком ИНН и контрольное число(2) проверяется с двенадцатым знаком ИНН. В случае их равенства ИНН считается правильным.
Функция для проверки правильности ИНН на PHP
<?php
/**
* Функция проверяет правильность инн
*
* @param string $inn
* @return bool
*/
function is_valid_inn( $inn )
{
if ( preg_match('/\D/', $inn) ) return false;
$inn = (string) $inn;
$len = strlen($inn);
if ( $len === 10 )
{
return $inn[9] === (string) (((
2*$inn[0] + 4*$inn[1] + 10*$inn[2] +
3*$inn[3] + 5*$inn[4] + 9*$inn[5] +
4*$inn[6] + 6*$inn[7] + 8*$inn[8]
) % 11) % 10);
}
elseif ( $len === 12 )
{
$num10 = (string) (((
7*$inn[0] + 2*$inn[1] + 4*$inn[2] +
10*$inn[3] + 3*$inn[4] + 5*$inn[5] +
9*$inn[6] + 4*$inn[7] + 6*$inn[8] +
8*$inn[9]
) % 11) % 10);
$num11 = (string) (((
3*$inn[0] + 7*$inn[1] + 2*$inn[2] +
4*$inn[3] + 10*$inn[4] + 3*$inn[5] +
5*$inn[6] + 9*$inn[7] + 4*$inn[8] +
6*$inn[9] + 8*$inn[10]
) % 11) % 10);
return $inn[11] === $num11 && $inn[10] === $num10;
}
return false;
}
?>
Функция для проверки правильности ИНН на JavaScript
<input type="text" onkeyup="this.style.backgroundColor = is_valid_inn(this.value) ? '#dfd' : '#fdd'" />
<script>
// Функция для проверки правильности ИНН
function is_valid_inn(i)
{
if ( i.match(/\D/) ) return false;
var inn = i.match(/(\d)/g);
if ( inn.length == 10 )
{
return inn[9] == String(((
2*inn[0] + 4*inn[1] + 10*inn[2] +
3*inn[3] + 5*inn[4] + 9*inn[5] +
4*inn[6] + 6*inn[7] + 8*inn[8]
) % 11) % 10);
}
else if ( inn.length == 12 )
{
return inn[10] == String(((
7*inn[0] + 2*inn[1] + 4*inn[2] +
10*inn[3] + 3*inn[4] + 5*inn[5] +
9*inn[6] + 4*inn[7] + 6*inn[8] +
8*inn[9]
) % 11) % 10) && inn[11] == String(((
3*inn[0] + 7*inn[1] + 2*inn[2] +
4*inn[3] + 10*inn[4] + 3*inn[5] +
5*inn[6] + 9*inn[7] + 4*inn[8] +
6*inn[9] + 8*inn[10]
) % 11) % 10);
}
return false;
}
</script>
API проверки ИНН
Для проверки ИНН на валидность, включая контрольный разряд, вызовите следующее API:
https://htmlweb.ru/json/validator/inn/1231231230
Если ИНН корректный, вы получите:
{"status":200}
Если неверное, то различные варианты:
{"status":400,"error":"Неверный контрольный разряд, ожидается 0"}
{"status":400,"error":"ИНН должен состоять из 10 или 12 цифр"}
Этот API проверяет только валидность номера, но не проверяет фактическое наличие организации. Для проверки организации используйте API получения данных об организации по ИНН, ОГРН
Проверка КПП
Код постановки на учет налогоплательщика (КПП) состоит из 9 цифр. Чаще всего первые четыре цифры КПП совпадают с первыми 4 цифрами ИНН и указывают на номер налоговой. Остальные пять цифр = 01001. Например,
ИНН 6167109768 КПП 616701001
Для крупных налогоплательщиков это не так, поэтому тупая подстановка недопустима. У индивидуальных предприниателей (ИП) КПП нет, если программа требует, ставьте 0.
<?php
/**
* Функция проверяет правильность КПП
*
* @param string $kpp
* @return bool
*/
function is_valid_kpp($kpp) {
return preg_match('#^\d{9}$#', $kpp);
}
?>
API проверки КПП
Для проверки ИНН на валидность, включая контрольный разряд, вызовите следующее API:
https://htmlweb.ru/json/validator/kpp/123123123
Если КПП корректный, вы получите:
{"status":200}
Если неверное, то различные варианты:
{"status":400,"error":"КПП должен состоять из 9 цифр"}
Проверка ОГРН и ОГРНИП на PHP
ОГРН (основной государственный регистрационный номер) состоит из 13 или 15 цифр. Алгоритм для 13-ти цифр:
- 1-я цифра — признак отнесения государственного регистрационного номера записи:
- к основному государственному регистрационному номеру (ОГРН) — 1, 5;
- к основному государственному регистрационному номеру индивидуального предпринимателя (ОГРНИП) — 3;
- к государственному регистрационному номеру — 2, 6, 7, 8, 9 (для ЕГРЮЛ), 4 (для ЕГРИП);
- 2-3-я цифры — две последние цифры года внесения записи;
- 4-5-я цифры — код субъекта Российской Федерации;
- 6-12-я цифры — номер записи, внесенной в государственный реестр в течение года;
- 13-я цифра — контрольное число:
- Выбрать 12-значное число ОГРН (с 1-й по 12-ю цифру).
- Вычислить остаток от деления выбранного числа на 11.
- Сравнить младший разряд полученного остатка от деления с 13-й цифрой ОГРН. Если они равны, то ОГРН верный.
<?php
/**
* Проверка ОГРН и ОГРНИП
* входные параметры:
* ogrn
* Проверяет только валидность. Для проверки действительности используйте /service/org
* @param array $args
* @return array
*/
function is_valid_ogrn($ogrn)
{
if (!preg_match('#^\d{13,15}$#', $ogrn)){
return false; // ОГРН должен состоять из 13 или 15 цифр
} elseif ($ogrn > PHP_INT_MAX) {
return false; // Проверка невозможна, т.к. скрипт запущен на 32х-разрядной версии PHP
}
//делаем строкой
$ogrn = $ogrn . '';
if (strlen($ogrn) == 13 and $ogrn[12] != substr((substr($ogrn, 0, -1) % 11), -1)){
return false; // 'Контрольное число равно ' . substr((substr($ogrn, 0, -1) % 11), -1) . '. Ожидалось ' . $ogrn[12]);
} elseif (strlen($ogrn) == 15 and $ogrn[14] != substr(substr($ogrn, 0, -1) % 13, -1)) {
return false; // 'Контрольное число равно ' . substr(substr($ogrn, 0, -1) % 13, -1) . '. Ожидалось ' . $ogrn[14]);
} elseif (strlen($ogrn) != 13 and strlen($ogrn) != 15) {
return false; // 'ОГРН должен состоять из 13 или 15 цифр');
}
return true;
}
?>
Функция для проверки правильности ОГРН и ОГРНИП на JavaScript
function is_valid_ogrn(ogrn) {
//дальше работаем со строкой
ogrn += '';
//для ОГРН в 13 знаков
if(ogrn.length == 13 && (ogrn.slice(12,13) == ((ogrn.slice(0,-1))%11 + '').slice(-1))){
return true;
//для ОГРН в 15 знаков
}else if(ogrn.length == 15 && (ogrn.slice(14,15) == ((ogrn.slice(0,-1))%13 + '').slice(-1))){
return true;
}else{
return false;
}
}
API проверки ОГРН
Для проверки ОГРН на валидность, включая контрольный разряд, вызовите следующее API:
https://htmlweb.ru/json/validator/ogrn/123123123
Если ОГРН корректный, вы получите:
{"status":200}
Если неверное, то различные варианты:
{"status":400,"error":"ОГРН должен состоять из 13 или 15 цифр"}
Проверка корреспондентского счета (к/с) и БИК банка на корректность и взаимное соответствие на PHP
function is_valid_ks($bic, $ks) {
if (!is_valid_biс($bic)) return false; // неверный БИК
if(empty($ks) || !preg_match('#^\d{20}$#', $ks)) return false; // к/с должен состоять из 20 цифр
$bik_ks = '0' . substr((string) $bic, -5, 2) . $ks;
$checksum = 0;
foreach ([7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1] as $i => $k) {
$checksum += $k * ((int) $bik_ks{$i} % 10);
}
if ($checksum % 10 === 0) {
return true;
} else {
return false; // Неверный контрольный разряд
}
}
function is_valid_biс($bic) {
if(empty($bic))return false; // Не передан обязательный параметр bic
if(!preg_match('#^\d{9}$#', $bik)) return false; // БИК должен состоять из 9 цифр
return true;
}
<script>
function validateKs(ks, bik, error) {
var result = false;
if (validateBik(bik, error)) {
if (typeof ks === 'number') {
ks = ks.toString();
} else if (typeof ks !== 'string') {
ks = '';
}
if (!ks.length) {
error.code = 1;
error.message = 'К/С пуст';
} else if (/[^0-9]/.test(ks)) {
error.code = 2;
error.message = 'К/С может состоять только из цифр';
} else if (ks.length !== 20) {
error.code = 3;
error.message = 'К/С может состоять только из 20 цифр';
} else {
var bikKs = '0' + bik.toString().slice(4, 6) + ks;
var checksum = 0;
var coefficients = [7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1];
for (var i in coefficients) {
checksum += coefficients[i] * (bikKs[i] % 10);
}
if (checksum % 10 === 0) {
result = true;
} else {
error.code = 4;
error.message = 'Неправильное контрольное число';
}
}
}
return result;
}
</script>
API проверки БИК банка на корректность
Для проверки к/с и БИК банка на валидность, включая контрольный разряд, вызовите следующее API:
https://htmlweb.ru/json/validator/biс/123123123
API проверки корреспондентского счета (к/с) и БИК банка на корректность и взаимное соответствие
Для проверки к/с и БИК банка на валидность, включая контрольный разряд, вызовите следующее API:
https://htmlweb.ru/json/validator/ks?ks=123123123&biс=123123123
Если к/с корректный вы получите:
{"status":200}
Если неверный, то различные варианты:
{"status":400,"error":"к/с должен состоять из 20 цифр"}
{"status":400,"error":"Неверный контрольный разряд"}
Проверка расчетного счета (р/с) и БИК банка на корректность и взаимное соответствие на PHP
function is_valid_rs($bic, $rs) {
if (!is_valid_biс($bic)) return false; // неверный БИК
if(empty($rs) || !preg_match('#^\d{20}$#', $rs)) return false; // р/с должен состоять из 20 цифр
$bik_rs = substr((string) $bic, -3) . $rs;
$checksum = 0;
foreach ([7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1] as $i => $k) {
$checksum += $k * ((int) $bik_rs{$i} % 10);
}
if ($checksum % 10 === 0) {
return true;
} else {
return false; // Неверный контрольный разряд
}
}
function is_valid_biс($bic) {
if(empty($bic))return false; // Не передан обязательный параметр bic
if(!preg_match('#^\d{9}$#', $bik)) return false; // БИК должен состоять из 9 цифр
return true;
}
Проверка расчетного счета (р/с) и БИК банка на корректность и взаимное соответствие на JavaScript
<script>
function validateRs(rs, bik, error) {
var result = false;
if (validateBik(bik, error)) {
if (typeof rs === 'number') {
rs = rs.toString();
} else if (typeof rs !== 'string') {
rs = '';
}
if (!rs.length) {
error.code = 1;
error.message = 'Р/С пуст';
} else if (/[^0-9]/.test(rs)) {
error.code = 2;
error.message = 'Р/С может состоять только из цифр';
} else if (rs.length !== 20) {
error.code = 3;
error.message = 'Р/С может состоять только из 20 цифр';
} else {
var bikRs = bik.toString().slice(-3) + rs;
var checksum = 0;
var coefficients = [7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1];
for (var i in coefficients) {
checksum += coefficients[i] * (bikRs[i] % 10);
}
if (checksum % 10 === 0) {
result = true;
} else {
error.code = 4;
error.message = 'Неправильное контрольное число';
}
}
}
return result;
}
function validateBik(bik, error) {
var result = false;
if (typeof bik === 'number') {
bik = bik.toString();
} else if (typeof bik !== 'string') {
bik = '';
}
if (!bik.length) {
error.code = 1;
error.message = 'БИК пуст';
} else if (/[^0-9]/.test(bik)) {
error.code = 2;
error.message = 'БИК может состоять только из цифр';
} else if (bik.length !== 9) {
error.code = 3;
error.message = 'БИК может состоять только из 9 цифр';
} else {
result = true;
}
return result;
}
</script>
API проверки расчетного счета (р/с) и БИК банка на корректность и взаимное соответствие
Для проверки р/с и БИК банка на валидность, включая контрольный разряд, вызовите следующее API:
https://htmlweb.ru/json/validator/rs?rs=123123123&bic=123123123
Если р/с корректный вы получите:
{"status":200}
Если неверный, то различные варианты:
{"status":400,"error":"р/с должен состоять из 20 цифр"}
{"status":400,"error":"Неверный контрольный разряд"}
Полезные ссылки по теме:
- API для получения данных о компании по ИНН/ОГРН
- Выписка из ЕГРЮЛ/ЕГРИП
- Справочник банков по API
- Справочник банков на сайте ЦБ РФ
- API проверки ИНН, КПП, ОГРН, р/с, к/с, БИК, EAN-13
.
Прокомментировать/Отблагодарить