Nexto
Главная › Блог › Переводы и банки
Переводы и банки

Номер Sheba: структура и проверка

Что такое номер Sheba, из каких частей он состоит и как проверить его корректность? Практическое руководство по структуре иранского IBAN и отсеву неверных номеров.

8 мин чтения · Команда Nexto · Последнее обновление: 16 июля 2026 г.
🏦 Валидатор SHEBA (иранский IBAN) Бесплатный инструмент, связанный с этой статьей — попробуйте прямо здесь ←

Sheba (номер банковского счета Ирана) — иранская версия международного стандарта IBAN. Задача простая: единый уникальный идентификатор для каждого банковского счета в стране вместо номеров счетов, которые каждый банк выдавал по своим правилам и которые между банками ничего не значили.

Для обменного пункта Sheba — не просто поле в форме. Ошибка в нем означает, что перевод вернется (в лучшем случае) или уйдет на чужой счет (в худшем). Это руководство — то, что должна знать ваша команда.

Структура Sheba

Иранский Sheba состоит из 26 символов: двух букв IR и затем 24 цифр. Ни на один больше. Ни на один меньше.

IR 21 017 0000000012345678901 Код страны Фиксировано Контрольные цифры 2 цифры Код банка 3 цифры Идентификатор счета 19 цифр — дополняется слева нулями 26 символов: IR + 24 цифры Контрольные цифры рассчитываются по MOD-97 — проверяются офлайн, без интернета
Структура IBAN: четыре части фиксированной длины. Код банка определяет, является ли перевод внутрибанковским или межбанковским.
  • Код страны: всегда IR.
  • Контрольные цифры: две цифры, которые математически рассчитываются из остального номера. У них одна задача: ловить опечатки. Если вы ошибетесь в одной цифре, эти две цифры уже не сойдутся.
  • Код банка: три цифры, определяющие банк.
  • Идентификатор счета: 19 цифр, которые назначает сам банк. Если номер счета короче, он дополняется нулями слева — и эти нули являются частью Sheba, а не украшением.

Практическая деталь: код банка говорит вам, перевод внутрибанковский (тот же банк, мгновенно и без комиссии) или межбанковский (PAYA/SATNA, другое время и комиссия). Одно это определение создает разницу между «дошло сейчас» и «дошло завтра».

Коды всех иранских банков

Код Банк
011 Bank of Industry and Mine
012 Bank Mellat
013 Refah Bank
014 Bank Maskan
015 Bank Sepah
016 Bank Keshavarzi
017 Bank Melli Iran
018 Bank Tejarat
019 Bank Saderat Iran
020 Bank Saderat Iran
021 Post Bank of Iran
022 Tose'e Ta'avon Bank
053 Karafarin Bank
054 Parsian Bank
055 EN Bank (Eghtesad Novin)
056 Saman Bank
057 Bank Pasargad
058 Sarmayeh Bank
059 Sina Bank
060 Mehr Iran Qarz-al-Hasaneh Bank
061 Shahr Bank
062 Ayandeh Bank
064 Tourism Bank
066 Day Bank
069 Iran Zamin Bank
070 Resalat Qarz-al-Hasaneh Bank
075 Melal Credit Institution
078 Middle East Bank

Список полон по состоянию на сентябрь 2026 года, но не остаётся неизменным — слияния банков выводят коды из обращения. Источник — Центральный банк; если код зашит в вашей программе, обновляйте его раз в год.

Валидация: до любого запроса проверяйте сами

Контрольные цифры Sheba строятся по стандартному алгоритму MOD-97-10 (из ISO 7064). Суть хороша тем, что для проверки не нужен ни сервис, ни интернет — это можно сделать даже на бумаге:

  1. Возьмите первые четыре символа (IR + две контрольные цифры) и перенесите их в конец номера.
  2. Преобразуйте буквы в числа: A=10, B=11, … I=18, … R=27, … Z=35. Значит IR превращается в 1827.
  3. Теперь у вас очень большое число. Посчитайте остаток от деления на 97.
  4. Если остаток ровно 1, Sheba структурно корректен. Любое другое число означает ошибку.

Поскольку число больше обычного диапазона целых чисел, на практике идут цифра за цифрой:

function shebaValid(string $sheba): bool
{
    $s = strtoupper(preg_replace('/[\s-]/', '', $sheba));
    if (! preg_match('/^IR[0-9]{24}$/', $s)) {
        return false;                       // неверная длина или формат
    }

    $re  = substr($s, 4).substr($s, 0, 4);  // первые четыре символа в конец
    $num = '';
    foreach (str_split($re) as $ch) {
        $num .= ctype_alpha($ch) ? (string) (ord($ch) - 55) : $ch;
    }

    $rem = 0;                               // mod 97 по цифрам
    foreach (str_split($num) as $d) {
        $rem = ($rem * 10 + (int) $d) % 97;
    }

    return $rem === 1;
}

Эти десять строк кода ловят большинство опечаток до того, как вы заплатите. Если вы используете платный сервис проверки, всегда сначала делайте эту проверку; отправлять в сервис криво набранный Sheba — это платить за ответ «ошибка».

Но обратите внимание: корректный означает «этот номер может быть Sheba», а не «этот счет существует». Можно составить полностью корректный Sheba, который не привязан ни к какому счету. Чтобы узнать наличие счета и его владельца, другого пути кроме запроса нет.

Что показывает запрос по Sheba?

Запрос обычно возвращает три вещи:

  • Имя владельца счета — самая важная часть.
  • Название банка — подтверждение кода банка.
  • Возможность приема средств — некоторые счета (заблокированные, неактивные или специальные типы) не принимают зачисления. Знать это до отправки — минус один возврат.

Для обменного пункта имя владельца счета — не просто удобство. Это реальный контроль:

  1. Сверка имени с клиентом. Если клиент — «Реза Ахмади», а Sheba оформлен на другого человека, нужен вопрос. Иногда ответ простой и правильный (счет супруги, счет компании). Иногда нет.
  2. Тихие ошибки. Sheba, у которого структура правильная, но который принадлежит другому человеку, не даст никакой ошибки. Деньги уйдут, и вернуть их — уже не техническая задача, а юридическая.
  3. След комплаенса. Запись о том, что «на момент оформления этого перевода Sheba был на имя такого-то», — часть вашего KYC-досье. Через три месяца, когда кто-то спросит, почему этот перевод был проведен, у вас есть ответ.

Пять ошибок, из-за которых чаще всего возвращаются переводы

  • Потерянные начальные нули. Если эти 19 цифр начинаются с нуля и Sheba был набран в Excel, Excel «почистит» нули, и Sheba сломается. Храните Sheba всегда как текст, а не как число. (Здесь Excel тоже тихо портит данные.)
  • Персидские и арабские цифры. Клиент копирует с телефона, и приходит ۱۲۳, а не 123. Для глаза одно и то же; для банковской системы это две совершенно разные вещи. Всегда нормализуйте ввод в латинские цифры.
  • IR пропущен или продублирован. Некоторые системы сами добавляют IR, и клиент тоже добавил: IRIR…. Нормализуйте ввод, не отклоняйте его сразу.
  • Пробелы, дефисы и невидимые символы. Копирование из WhatsApp часто приносит еще и управляющие символы направления (RTL/LTR), которые не видны, но ломают строку. Удаляйте все, кроме 0-9 и IR.
  • I вместо 1 и O вместо 0. Когда Sheba читают с бумаги или с фотографии. Валидация MOD-97 это поймает — при условии, что вы ее запускаете.

Общее правило: нормализуйте ввод, потом валидируйте, потом делайте запрос. Именно в таком порядке. Большинство «ошибок Sheba» на самом деле являются ошибками нормализации, а не ошибками клиента.

Можно ли преобразовать номер счета в Sheba?

Наполовину. У каждого банка свое правило построения 19 цифр из номера счета, и эти правила не являются официальными и стабильными. Онлайн-конвертеры обычно работают на основе обратной инженерии и для некоторых типов счетов дают ошибку.

Практическая рекомендация: берите Sheba у самого клиента (он доступен в банковском приложении и в карточных переводах), а затем делайте запрос. Строить Sheba по формуле и отправлять по нему деньги — риск, который того не стоит.

Здесь нет места ручной работе

Проверка Sheba должна выполняться тихо и в правильном месте, а не так, чтобы оператор открывал другую вкладку и копировал-вставлял.

В Nexto, когда в форме банковского перевода вы выходите из поля Sheba, в этот же момент выполняется локальная валидация, и если номер корректный, уходит запрос, а имя владельца счета и банк заполняются автоматически — с зеленой или красной подсказкой. Оператор ничего не делает, кроме как смотрит. А поскольку результат кэшируется, повторный запрос того же Sheba тем же обменным пунктом не стоит денег.

Практический итог: контроль, который выполняется автоматически, выполняется всегда. Контроль, который делается вручную, пропускается ровно в самый загруженный день — в день, когда он важнее всего.

Кратко

У Sheba три слоя, и нужны все три: нормализация (лишние символы и нелатинские цифры), валидация (MOD-97, бесплатно и офлайн) и запрос (существование и владелец счета, единственный способ понять, куда уйдут деньги).

Первые два вы можете добавить в свою систему уже сегодня и без каких-либо затрат. Третий стоит немного, а взамен снижает возвраты, дорогие ошибки и вопросы комплаенса без ответа.

Чтобы мгновенно проверить корректность Sheba и увидеть банк-эмитент, используйте бесплатный инструмент Sheba. Имя владельца счёта из самого номера не выводится — для этого нужен официальный банковский запрос, доступный внутри Nexto и через его API.

Посмотрите всё это в Nexto

Полноценный приватный экземпляр с демо-данными — без установки, без банковской карты.

Создать бесплатное демо Связанные функции ←
Написать в WhatsApp