# Коды ошибок SMPP.

- Канонический URL: https://www.broadnet.me/ru/tools/smpp-error-codes
- Язык: ru
- Последнее обновление: 2026-10-21
- Издатель: BroadNet (https://www.broadnet.me)
- Markdown-версия страницы, созданная из опубликованной страницы.

Справочник SMPP v3.4 · command_status

Каждое значение `command_status` определённое в спецификации SMPP v3.4, — шестнадцатеричный код, символьное имя, понятное описание, вероятная причина и решение. Ищите по коду или имени, чтобы быстро отладить сбой bind или submit_sm.

48 из 48 кодов

| Hex | Символьное имя | Значение и вероятная причина / решение |
|---|---|---|
| 0x00000000 | ESME_ROK | Ошибок нет. PDU принят. Для submit_sm это означает лишь то, что SMSC принял сообщение к обработке, а не то, что оно доставлено — отслеживайте доставку через отчёт о доставке (DLR) в deliver_sm. |
| 0x00000001 | ESME_RINVMSGLEN | Недопустимая длина сообщения. short_message или message_payload слишком длинное или пустое для используемой кодировки. Разбейте длинный контент на части или используйте TLV message_payload; проверьте соответствие data_coding длине в байтах. |
| 0x00000002 | ESME_RINVCMDLEN | Недопустимая длина команды. command_length в заголовке PDU не совпадает с фактически отправленными байтами. Почти всегда это ошибка кодировщика PDU на стороне клиента либо ошибка границы буфера/фрейма. |
| 0x00000003 | ESME_RINVCMDID | Недопустимый ID команды. command_id неизвестен или не поддерживается SMSC. Проверьте, что отправляется корректная операция и правильная версия SMPP. |
| 0x00000004 | ESME_RINVBNDSTS | Некорректный статус BIND для данной команды. Операция не разрешена в текущем режиме bind — например, submit_sm на receiver-bind, либо запрос до завершения bind. Сначала выполните bind как transmitter или transceiver. |
| 0x00000005 | ESME_RALYBND | ESME уже находится в состоянии bind. Повторный bind выполнен на уже привязанной сессии. Используйте существующую сессию или выполните unbind перед повторной привязкой. |
| 0x00000006 | ESME_RINVPRTFLG | Недопустимый флаг приоритета. priority_flag выходит за пределы диапазона 0–3, принимаемого SMSC. Используйте поддерживаемое значение (обычно 0). |
| 0x00000007 | ESME_RINVREGDLVFLG | Недопустимый флаг регистрируемой доставки. registered_delivery содержит неподдерживаемое значение. Используйте битовую маску, поддерживаемую SMSC (например, 0x01 для запроса финального DLR). |
| 0x00000008 | ESME_RSYSERR | Системная ошибка. Общая ошибка на стороне SMSC, препятствующая обработке. Временная — повторите попытку с задержкой (backoff); при повторении обратитесь к провайдеру. |
| 0x0000000A | ESME_RINVSRCADR | Недопустимый адрес источника. source_addr (идентификатор отправителя) сформирован некорректно или не разрешён — неверная длина, недопустимые символы или незарегистрированный буквенно-цифровой отправитель. Зарегистрируйте или внесите отправителя в белый список. |
| 0x0000000B | ESME_RINVDSTADR | Недопустимый адрес назначения. destination_addr сформирован некорректно или не маршрутизируется — неверный формат MSISDN, отсутствует код страны, либо диапазон заблокирован. Приведите к формату E.164. |
| 0x0000000C | ESME_RINVMSGID | Недопустимый ID сообщения. message_id в query_sm, cancel_sm или replace_sm не соответствует ни одному известному сообщению. Используйте точный ID, возвращённый в submit_sm_resp. |
| 0x0000000D | ESME_RBINDFAIL | Ошибка bind. Запрос bind отклонён по причине, отличной от учётных данных — например, IP не в белом списке, требуется TLS, либо тип bind не разрешён для данного аккаунта. |
| 0x0000000E | ESME_RINVPASWD | Недопустимый пароль. Пароль в PDU bind неверен или истёк. Проверьте учётные данные; в SMPP 3.4 поле ограничено 8 октетами. |
| 0x0000000F | ESME_RINVSYSID | Недопустимый ID системы. system_id (имя пользователя) неизвестен SMSC. Проверьте идентификатор аккаунта и его активность. |
| 0x00000011 | ESME_RCANCELFAIL | Ошибка Cancel SM. cancel_sm не смог удалить сообщение — возможно, оно уже доставлено или истекло. Повторять нечего. |
| 0x00000013 | ESME_RREPLACEFAIL | Ошибка Replace SM. replace_sm не смог обновить сообщение, обычно потому что оно уже покинуло очередь. Отправьте новое сообщение вместо этого. |
| 0x00000014 | ESME_RMSGQFUL | Очередь сообщений заполнена. Очередь хранения и пересылки SMSC заполнена до предела. Снизьте скорость отправки и повторите попытку с задержкой. |
| 0x00000015 | ESME_RINVSERTYP | Недопустимый тип сервиса. Значение service_type не распознано или не разрешено. Оставьте поле пустым либо используйте значение, согласованное с провайдером. |
| 0x00000033 | ESME_RINVNUMDESTS | Недопустимое количество адресатов. number_of_dests в PDU submit_multi выходит за допустимый диапазон. Соблюдайте лимит адресатов на один PDU, установленный SMSC. |
| 0x00000034 | ESME_RINVDLNAME | Недопустимое имя списка рассылки. Список рассылки, указанный в submit_multi, не существует на SMSC. Создайте список либо отправляйте на явные адреса. |
| 0x00000040 | ESME_RINVDESTFLAG | Недопустимый флаг адресата. В submit_multi поле dest_flag записи не является ни адресом SME (1), ни списком рассылки (2). Исправьте флаг для каждого адресата. |
| 0x00000042 | ESME_RINVSUBREP | Недопустимый запрос 'отправка с заменой'. replace_if_present_flag установлен для операции, которая это не поддерживает, либо скомбинирован со списками рассылки. Уберите флаг. |
| 0x00000043 | ESME_RINVESMCLASS | Недопустимые данные поля esm_class. esm_class содержит неподдерживаемую комбинацию — например, бит UDHI или отчёта о доставке, отклоняемый SMSC. Перепроверьте биты режима/типа сообщения. |
| 0x00000044 | ESME_RCNTSUBDL | Невозможно отправить в список рассылки. Аккаунту не разрешена отправка в указанный список рассылки. Используйте прямую адресацию либо запросите разрешение. |
| 0x00000045 | ESME_RSUBMITFAIL | Ошибка submit_sm или submit_multi. Общая ошибка отправки на стороне SMSC. Часто временная (маршрутизация/ёмкость) — повторите с задержкой; проверьте TLV на предмет более точной причины. |
| 0x00000048 | ESME_RINVSRCTON | Недопустимый TON адреса источника. source_addr_ton не соответствует формату отправителя — например, для буквенного отправителя требуется TON 5 (буквенно-цифровой), но отправлен числовой TON. |
| 0x00000049 | ESME_RINVSRCNPI | Недопустимый NPI адреса источника. source_addr_npi недопустим или не соответствует TON. Используйте NPI 0 для буквенно-цифровых отправителей и NPI 1 (E.164) для MSISDN. |
| 0x00000050 | ESME_RINVDSTTON | Недопустимый TON адреса назначения. dest_addr_ton недопустим для адресата. Используйте TON 1 (международный) с MSISDN в формате E.164. |
| 0x00000051 | ESME_RINVDSTNPI | Недопустимый NPI адреса назначения. dest_addr_npi недопустим или не соответствует TON. NPI 1 (ISDN/E.164) — обычное значение для мобильных номеров. |
| 0x00000053 | ESME_RINVSYSTYP | Недопустимое поле system_type. system_type в PDU bind не принимается. Оставьте поле пустым либо используйте точное значение, назначенное провайдером. |
| 0x00000054 | ESME_RINVREPFLAG | Недопустимый флаг replace_if_present. replace_if_present_flag установлен в значение, отличное от 0 или 1. Отправьте корректный булев флаг. |
| 0x00000055 | ESME_RINVNUMMSGS | Недопустимое количество сообщений. Поле sm_count / количество сообщений выходит за допустимый диапазон. Исправьте значение в PDU. |
| 0x00000058 | ESME_RTHROTTLED | Ошибка ограничения скорости — превышен лимит сообщений. Отправка происходит быстрее разрешённой для аккаунта скорости (сообщений в секунду). Замедлите цикл отправки и повторите с задержкой. Временное, повторяемое состояние. |
| 0x00000061 | ESME_RINVSCHED | Недопустимое запланированное время доставки. schedule_delivery_time имеет неверный формат либо указывает на прошлое. Используйте абсолютный/относительный формат времени SMPP (YYMMDDhhmmsstnnp) или оставьте поле пустым. |
| 0x00000062 | ESME_RINVEXPIRY | Недопустимый срок действия сообщения. validity_period имеет неверный формат либо выходит за допустимые пределы. Используйте формат времени SMPP или оставьте поле пустым для значения по умолчанию SMSC. |
| 0x00000063 | ESME_RINVDFTMSGID | Предопределённое сообщение недопустимо или не найдено. sm_default_msg_id ссылается на заготовленное сообщение, отсутствующее у SMSC. Отправьте полный текст либо корректный предопределённый ID. |
| 0x00000064 | ESME_RX_T_APPN | Временный код ошибки приложения получателя ESME. Возвращается вашим ESME (или вышестоящей системой) для сигнализации о временном сбое приложения при обработке deliver_sm/data_sm. SMSC может повторить доставку позже. |
| 0x00000065 | ESME_RX_P_APPN | Постоянный код ошибки приложения получателя ESME. Принимающее приложение окончательно отклоняет сообщение. SMSC не будет повторять попытку — исправьте обработчик или причину отклонения. |
| 0x00000066 | ESME_RX_R_APPN | Код ошибки отклонения сообщения получателем ESME. Принимающее приложение просит SMSC отклонить сообщение. Используется для отказа от конкретного входящего контента. |
| 0x00000067 | ESME_RQUERYFAIL | Ошибка запроса query_sm. Не удалось выполнить запрос статуса — message_id может быть неизвестен либо истёк в хранилище SMSC. Проверьте ID. |
| 0x000000C0 | ESME_RINVOPTPARSTREAM | Ошибка в необязательной части тела PDU. Поток TLV (необязательный параметр) сформирован некорректно — неверная длина или обрезан. Исправьте кодировщик TLV на стороне клиента. |
| 0x000000C1 | ESME_ROPTPARNOTALLWD | Необязательный параметр не разрешён. Отправлен TLV, не разрешённый для данной операции или SMSC. Уберите неподдерживаемый необязательный параметр. |
| 0x000000C2 | ESME_RINVPARLEN | Недопустимая длина параметра. Заявленная длина TLV не соответствует его значению. Исправьте поле длины необязательного параметра. |
| 0x000000C3 | ESME_RMISSINGOPTPARAM | Отсутствует ожидаемый необязательный параметр. Не предоставлен TLV, обязательный для данной операции (например, message_payload при пустом short_message). Добавьте обязательный необязательный параметр. |
| 0x000000C4 | ESME_RINVOPTPARAMVAL | Недопустимое значение необязательного параметра. TLV содержит значение вне допустимого набора. См. спецификацию SMPP для допустимых значений этого параметра. |
| 0x000000FE | ESME_RDELIVERYFAILURE | Ошибка доставки (data_sm_resp). Используется с data_sm для указания на невозможность доставки сообщения на телефон. Обрабатывайте как неудавшийся DLR и проверяйте сеть/маршрут. |
| 0x000000FF | ESME_RUNKNOWNERR | Неизвестная ошибка. Обобщённый код, когда у SMSC нет более конкретного кода. Повторите один раз с задержкой; при повторении сообщите провайдеру, приложив пример PDU. |

Значения, не указанные в списке, зарезервированы. Согласно спецификации SMPP v3.4: диапазон 0x00000100–0x000003FF зарезервирован для расширений протокола SMPP, 0x00000400–0x000004FF — для ошибок, специфичных для поставщика SMSC, а 0x00000500–0xFFFFFFFF зарезервирован. Отдельные пропуски ниже 0xFF (например, 0x09, 0x10) зарезервированы стандартом.

Короткий ответ

## Что такое код ошибки SMPP?

Код ошибки SMPP — это значение поля command_status в каждом ответном PDU SMPP. Оно сообщает клиенту (ESME), принял ли SMSC операцию — 0x00000000 (ESME_ROK) означает успех, а любое ненулевое значение указывает, почему завершился неудачей bind, submit_sm, query_sm или другой запрос. Коды определены спецификацией SMPP v3.4 и одинаковы для всех совместимых SMSC.

Успешный submit_sm_resp с ESME_ROK подтверждает лишь то, что SMSC принял сообщение к обработке — окончательная доставка на телефон сообщается отдельно в отчёте о доставке (deliver_sm). Рассматривайте ошибки на этапе отправки и на этапе доставки как два разных уровня.

## Часто задаваемые вопросы

**Что такое command_status в SMPP?**

command_status — это 4-байтовое поле в заголовке каждого ответного PDU SMPP. В запросе оно равно нулю; в ответе оно несёт результат — 0x00000000 (ESME_ROK) для успеха или ненулевой код ошибки, указывающий на сбой. Это основной сигнал, по которому ваш клиент решает, повторить попытку, исправить PDU или завершить с ошибкой.

**Что означает ESME_RTHROTTLED (0x00000058)?**

Это означает, что вы отправляете сообщения быстрее, чем разрешено для вашего аккаунта (сообщений в секунду). Замедлите цикл отправки, примените экспоненциальную задержку и не превышайте пропускную способность, согласованную с провайдером. Это временное, повторяемое состояние.

**В чём разница между ESME_RINVSRCADR и ESME_RINVDSTADR?**

ESME_RINVSRCADR (0x0000000A) означает, что адрес источника — ваш идентификатор отправителя — сформирован некорректно или не разрешён, часто это незарегистрированный буквенно-цифровой отправитель. ESME_RINVDSTADR (0x0000000B) означает, что MSISDN получателя сформирован некорректно или не маршрутизируется. Приводите адреса к формату E.164 и регистрируйте идентификаторы отправителя там, где требуется.

**Означает ли ESME_ROK, что сообщение доставлено?**

Нет. ESME_ROK в submit_sm_resp подтверждает лишь то, что SMSC принял сообщение к обработке. Окончательная доставка на телефон сообщается позже в отчёте о доставке (deliver_sm), который несёт собственный статус, например DELIVRD, UNDELIV или EXPIRED. Всегда сверяйте принятие отправки с DLR.

**Какие ошибки SMPP безопасно повторять?**

Временные системные коды можно повторять с задержкой: ESME_RSYSERR (0x08), ESME_RMSGQFUL (0x14), ESME_RTHROTTLED (0x58), ESME_RSUBMITFAIL (0x45) и ESME_RUNKNOWNERR (0xFF). Ошибки валидации, такие как неверные адреса, TON/NPI, длина сообщения или неверные учётные данные, являются постоянными — исправьте запрос или конфигурацию вместо повтора.

**Одинаковы ли эти коды для всех SMSC?**

Коды 0x00000000–0x000000FF определены спецификацией SMPP v3.4 и одинаковы для всех совместимых SMSC. Диапазоны 0x00000400–0x000004FF зарезервированы для ошибок, специфичных для поставщика, поэтому конкретный SMSC может возвращать там дополнительные коды с собственными значениями — всегда сверяйтесь с документацией вашего провайдера для таких случаев.

[Справочник по протоколу Спецификация, лежащая в основе этого инструмента, в библиотеке справочника.](https://www.broadnet.me/ru/reference/smpp-command-status-errors) [Шлюз SMSC SMSC операторского класса поверх SMPP + SS7.](https://www.broadnet.me/ru/operators/smsc-gateway) [SMS API REST + SMPP 3.4, аутентификация по токену Bearer, вебхуки доставки.](https://www.broadnet.me/ru/products/sms-api) [Раздел для разработчиков Быстрый старт, TypeScript SDK, справочники и инструменты.](https://www.broadnet.me/ru/developers)

## Устанавливаете сессию SMPP?

BroadNet предлагает прямые подключения SMPP 3.4 с предсказуемой пропускной способностью и понятной обработкой command_status. Обсудите подключение с нашей командой.

[Раздел для разработчиков](https://www.broadnet.me/ru/developers) [Шлюз SMSC](https://www.broadnet.me/ru/operators/smsc-gateway)
