Ir para o conteúdo
OmniChannels.ai

Ferramenta gratuita

Decodificador de relatório de entrega SMS (DLR)

Cole uma confirmação de entrega SMPP ou um lote inteiro. Veja o que cada campo significa, quanto tempo a entrega levou, qual status de webhook corresponde e o que um erro command_status do SMPP está dizendo.

Grátis · sem cadastro · no seu navegador

Cole o texto short_message de uma ou mais confirmações deliver_sm, uma por linha. Um command_status isolado, como 0x00000058, também é decodificado.

Confirmações decodificadas

Confirmações: 4 · Taxa de entrega: 25%

Confirmações
4
Taxa de entrega
25%
DELIVRD ÷ confirmações com stat reconhecido
Latência mediana
1 h 7 min
Precisam de atenção
0

Por stat

  • DELIVRD1
  • ACCEPTD1
  • UNDELIV1
  • EXPIRED1

Por status de webhook mais próximo

  • SENT1
  • DELIVERED1
  • FAILED2
  1. Linha 1stat:DELIVRDStatus de webhook mais próximo: DELIVEREDFinal

    Entregue no aparelho.

    Correspondência indicativa com os status normalizados da nossa API.

    ID da mensagem
    2610101200457381
    Corresponde ao message_id retornado no submit_sm_resp.
    sub (enviadas)
    001
    Mensagens enviadas originalmente, normalmente 001.
    dlvrd (entregues)
    001
    Mensagens entregues, normalmente 001 ou 000. Muitos SMSCs preenchem sem rigor, então confie no stat.
    Data de envio
    10 de out. de 2026, 12:00:05261010120005
    Relógio do SMSC. A confirmação não traz fuso horário (normalmente UTC).
    Data de conclusão
    10 de out. de 2026, 12:00:09261010120009
    Relógio do SMSC. A confirmação não traz fuso horário (normalmente UTC).
    Latência de entrega
    4 s
    err
    000
    Sem erro.
    text
    Your code is 482913
    Primeiros 20 caracteres da mensagem original, muitas vezes cortados ou vazios.
  2. Linha 2stat:UNDELIVStatus de webhook mais próximo: FAILEDFinal

    Não entregável: número inválido ou inativo, assinante bloqueado ou falha de rede.

    Correspondência indicativa com os status normalizados da nossa API.

    ID da mensagem
    2610101200457382
    Corresponde ao message_id retornado no submit_sm_resp.
    sub (enviadas)
    001
    Mensagens enviadas originalmente, normalmente 001.
    dlvrd (entregues)
    000
    Mensagens entregues, normalmente 001 ou 000. Muitos SMSCs preenchem sem rigor, então confie no stat.
    Data de envio
    10 de out. de 2026, 12:002610101200
    Relógio do SMSC. A confirmação não traz fuso horário (normalmente UTC).
    Data de conclusão
    10 de out. de 2026, 14:152610101415
    Relógio do SMSC. A confirmação não traz fuso horário (normalmente UTC).
    Latência de entrega
    2 h 15 min
    err
    001
    Valores de err diferentes de zero são específicos do SMSC ou da rede (muitas vezes derivados de causas de rede GSM). Consulte a lista de erros do seu provedor.
    text
    Your order has shipp
    Primeiros 20 caracteres da mensagem original, muitas vezes cortados ou vazios.
  3. Linha 3stat:expiredStatus de webhook mais próximo: FAILEDFinal

    O período de validade terminou antes de alcançar o aparelho (muitas vezes desligado ou sem sinal).

    Correspondência indicativa com os status normalizados da nossa API.

    ID da mensagem
    2610101200457383
    Corresponde ao message_id retornado no submit_sm_resp.
    sub (enviadas)
    001
    Mensagens enviadas originalmente, normalmente 001.
    dlvrd (entregues)
    000
    Mensagens entregues, normalmente 001 ou 000. Muitos SMSCs preenchem sem rigor, então confie no stat.
    Data de envio
    10 de out. de 2026, 12:012610101201
    Relógio do SMSC. A confirmação não traz fuso horário (normalmente UTC).
    Data de conclusão
    11 de out. de 2026, 00:012610110001
    Relógio do SMSC. A confirmação não traz fuso horário (normalmente UTC).
    Latência de entrega
    12 h
    err
    000
    Sem erro.
    text
    Flash sale ends toni
    Primeiros 20 caracteres da mensagem original, muitas vezes cortados ou vazios.
  4. Linha 4stat:ACCEPTDStatus de webhook mais próximo: SENTIntermediário

    Aceita pela rede. Normalmente uma confirmação final vem em seguida.O SMPP v3.4 define formalmente ACCEPTD como lida manualmente pelo atendimento em nome do assinante, mas a maioria dos SMSCs e agregadores a envia como confirmação intermediária de “aceita pela rede”.

    Correspondência indicativa com os status normalizados da nossa API.

    ID da mensagem
    2610101200457384
    Corresponde ao message_id retornado no submit_sm_resp.
    sub (enviadas)
    001
    Mensagens enviadas originalmente, normalmente 001.
    dlvrd (entregues)
    000
    Mensagens entregues, normalmente 001 ou 000. Muitos SMSCs preenchem sem rigor, então confie no stat.
    Data de envio
    10 de out. de 2026, 12:022610101202
    Relógio do SMSC. A confirmação não traz fuso horário (normalmente UTC).
    Data de conclusão
    10 de out. de 2026, 12:022610101202
    Relógio do SMSC. A confirmação não traz fuso horário (normalmente UTC).
    Latência de entrega
    0 s
    err
    000
    Sem erro.
    text
    —
    Primeiros 20 caracteres da mensagem original, muitas vezes cortados ou vazios.
  5. Linha 5 · command_status0x00000058ESME_RTHROTTLEDTemporário

    Throttling error (ESME has exceeded allowed message limits)

    Tente novamente mais tarde com backoff exponencial, nunca em loop contínuo.

Códigos command_status do SMPP v3.4

48 códigos

CódigoNomeSignificado (especificação)O que fazer
0x00000000ESME_ROKNo errorSucesso
0x00000001ESME_RINVMSGLENMessage length is invalidCorrigir a requisição
0x00000002ESME_RINVCMDLENCommand length is invalidCorrigir a requisição
0x00000003ESME_RINVCMDIDInvalid command IDCorrigir a requisição
0x00000004ESME_RINVBNDSTSIncorrect bind status for given commandBind ou sessão
0x00000005ESME_RALYBNDESME already in bound stateBind ou sessão
0x00000006ESME_RINVPRTFLGInvalid priority flagCorrigir a requisição
0x00000007ESME_RINVREGDLVFLGInvalid registered delivery flagCorrigir a requisição
0x00000008ESME_RSYSERRSystem errorTemporário
0x0000000AESME_RINVSRCADRInvalid source addressCorrigir a requisição
0x0000000BESME_RINVDSTADRInvalid destination addressCorrigir a requisição
0x0000000CESME_RINVMSGIDMessage ID is invalidCorrigir a requisição
0x0000000DESME_RBINDFAILBind failedBind ou sessão
0x0000000EESME_RINVPASWDInvalid passwordBind ou sessão
0x0000000FESME_RINVSYSIDInvalid system IDBind ou sessão
0x00000011ESME_RCANCELFAILcancel_sm failedCorrigir a requisição
0x00000013ESME_RREPLACEFAILreplace_sm failedCorrigir a requisição
0x00000014ESME_RMSGQFULMessage queue fullTemporário
0x00000015ESME_RINVSERTYPInvalid service typeCorrigir a requisição
0x00000033ESME_RINVNUMDESTSInvalid number of destinationsCorrigir a requisição
0x00000034ESME_RINVDLNAMEInvalid distribution list nameCorrigir a requisição
0x00000040ESME_RINVDESTFLAGDestination flag is invalid (submit_multi)Corrigir a requisição
0x00000042ESME_RINVSUBREPInvalid 'submit with replace' request (submit_sm with replace_if_present_flag set)Corrigir a requisição
0x00000043ESME_RINVESMCLASSInvalid esm_class field dataCorrigir a requisição
0x00000044ESME_RCNTSUBDLCannot submit to distribution listCorrigir a requisição
0x00000045ESME_RSUBMITFAILsubmit_sm or submit_multi failedTemporário
0x00000048ESME_RINVSRCTONInvalid source address TONCorrigir a requisição
0x00000049ESME_RINVSRCNPIInvalid source address NPICorrigir a requisição
0x00000050ESME_RINVDSTTONInvalid destination address TONCorrigir a requisição
0x00000051ESME_RINVDSTNPIInvalid destination address NPICorrigir a requisição
0x00000053ESME_RINVSYSTYPInvalid system_type fieldBind ou sessão
0x00000054ESME_RINVREPFLAGInvalid replace_if_present flagCorrigir a requisição
0x00000055ESME_RINVNUMMSGSInvalid number of messagesCorrigir a requisição
0x00000058ESME_RTHROTTLEDThrottling error (ESME has exceeded allowed message limits)Temporário
0x00000061ESME_RINVSCHEDInvalid scheduled delivery timeCorrigir a requisição
0x00000062ESME_RINVEXPIRYInvalid message validity period (expiry time)Corrigir a requisição
0x00000063ESME_RINVDFTMSGIDPredefined message invalid or not foundCorrigir a requisição
0x00000064ESME_RX_T_APPNESME receiver temporary app error codeTemporário
0x00000065ESME_RX_P_APPNESME receiver permanent app error codeCorrigir a requisição
0x00000066ESME_RX_R_APPNESME receiver reject message error codeCorrigir a requisição
0x00000067ESME_RQUERYFAILquery_sm request failedTemporário
0x000000C0ESME_RINVOPTPARSTREAMError in the optional part of the PDU bodyCorrigir a requisição
0x000000C1ESME_ROPTPARNOTALLWDOptional parameter not allowedCorrigir a requisição
0x000000C2ESME_RINVPARLENInvalid parameter lengthCorrigir a requisição
0x000000C3ESME_RMISSINGOPTPARAMExpected optional parameter missingCorrigir a requisição
0x000000C4ESME_RINVOPTPARAMVALInvalid optional parameter valueCorrigir a requisição
0x000000FEESME_RDELIVERYFAILUREDelivery failure (used for data_sm_resp)Temporário
0x000000FFESME_RUNKNOWNERRUnknown errorTemporário

As descrições seguem a especificação SMPP v3.4, seção 5.1.3 (em inglês).

Prefere não interpretar confirmações por conta própria? Nossa API de SMS envia status de entrega normalizados para o seu webhook, e há binds SMPP para grandes volumes. Docs de webhooksGuia SMPPAPI de SMS para empresas

Nada do que você digita é enviado aos nossos servidores.

Resposta curta

Um relatório de entrega SMPP (DLR) é a confirmação que um SMSC devolve em uma PDU deliver_sm depois que você envia um SMS. O texto segue o padrão id, sub, dlvrd, submit date, done date, stat, err e text. O campo stat traz o resultado: DELIVRD significa entregue no aparelho; UNDELIV, EXPIRED, DELETED e REJECTD são falhas definitivas; ENROUTE e ACCEPTD são intermediários. As datas usam AAMMDDhhmm, às vezes com segundos.

Como decodificar um relatório de entrega SMS

  1. 1

    Copie o texto da confirmação

    Pegue o short_message da PDU deliver_sm no seu cliente SMPP ou nos logs do SMSC, por exemplo id:… sub:001 dlvrd:001 … stat:DELIVRD err:000. Prefixos de log são ignorados.

  2. 2

    Cole uma por linha

    Cole uma única confirmação ou centenas. Você também pode colar um valor command_status, como 0x00000058 ou ESME_RTHROTTLED, em uma linha própria.

  3. 3

    Leia os campos decodificados

    Cada confirmação mostra o significado do status, se ele é final, o status de webhook mais próximo, datas legíveis, a latência de entrega e alertas sobre campos ausentes ou inconsistentes.

  4. 4

    Confira o resumo do lote

    Veja as contagens por stat e por status de webhook, a taxa de entrega e a latência mediana, e copie tudo em JSON para um chamado ou um caso de teste.

Anatomia de uma confirmação de entrega SMPP

Quando você envia um SMS com registered_delivery igual a 1, o SMSC devolve depois uma PDU deliver_sm por um bind receptor ou transceptor. O bit 0x04 do esm_class indica que é uma confirmação de entrega, e não uma mensagem recebida, e o short_message traz a confirmação em texto. O anexo B da especificação SMPP v3.4 apresenta esse formato como exemplo, e quase todos os SMSCs o seguem: id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm stat:DDDDDDD err:E text:….

Como o anexo B é um exemplo, e não uma regra rígida, as confirmações reais variam: chaves em minúsculas, espaços extras, submit_date com sublinhado, datas de 12 dígitos com segundos ou ausência do campo text. Este decodificador aceita todas essas variações e informa quais campos estão faltando.

  • id: o identificador que o SMSC retornou no submit_sm_resp. É ele que liga a confirmação à sua mensagem. O exemplo da especificação mostra 10 caracteres, mas muitos SMSCs usam IDs mais longos, às vezes em hexadecimal.
  • sub e dlvrd: o número de mensagens enviadas e entregues, com 3 dígitos. Importam principalmente em listas de distribuição; para um SMS individual, costumam ser 001 e 001 (ou 000).
  • submit date e done date: quando a mensagem foi enviada e quando chegou ao estado final, pelo relógio do SMSC.
  • stat: o estado final ou intermediário, como um código de 7 letras, por exemplo DELIVRD.
  • err: um código de erro de 3 caracteres, específico da rede ou do SMSC; 000 significa sem erro.
  • text: os primeiros 20 caracteres da mensagem original, muitas vezes cortados ou vazios.
  • TLVs opcionais podem repetir esses dados de forma mais limpa: receipted_message_id (0x001E), message_state (0x0427) e network_error_code (0x0423).

Códigos stat do DLR e o que significam

O SMPP v3.4 define oito estados de mensagem. ENROUTE e ACCEPTD são intermediários; os demais são finais. Nossa API normaliza todos os canais em seis status de webhook (SUBMITTED, SENT, DELIVERED, READ, FAILED, REJECTED), e o decodificador mostra a correspondência mais próxima para cada valor de stat. Considere esse mapeamento indicativo: a regra exata da sua conta é confirmada no onboarding.

  • DELIVRD (message_state 2): entregue no aparelho. Status de webhook mais próximo: DELIVERED.
  • ACCEPTD (6): formalmente “lida manualmente pelo atendimento em nome do assinante”, mas a maioria dos SMSCs a envia como confirmação intermediária de “aceita pela rede”. Mais próximo: SENT.
  • ENROUTE (1): ainda em trânsito, por exemplo na fila para nova tentativa. Mais próximo: SENT.
  • UNDELIV (5): não entregável, por exemplo um número inválido ou inativo. Mais próximo: FAILED.
  • EXPIRED (3): o período de validade terminou antes de alcançar o aparelho, muitas vezes desligado ou sem sinal. Mais próximo: FAILED.
  • DELETED (4): excluída antes da entrega, por exemplo via cancel_sm. Mais próximo: FAILED.
  • REJECTD (8): recusada pela rede ou por um firewall de SMS, por exemplo por ID de remetente (Sender ID) não registrado ou conteúdo bloqueado. Mais próximo: REJECTED.
  • UNKNOWN (7): o SMSC não tem estado final. Trate como não confirmado, e não como falha comprovada.

Códigos err: por que não existe uma lista universal

O campo err tem três caracteres, e a especificação SMPP não define seus valores. 000 sempre significa sem erro, mas os demais valores vêm do fabricante do SMSC, da operadora ou de um agregador no caminho. Alguns SMSCs repassam causas de erro GSM MAP (por exemplo, o erro MAP 1 é assinante desconhecido e o 27 é assinante ausente), enquanto outros usam tabelas próprias.

Se a confirmação trouxer o TLV network_error_code (0x0423), ele é mais confiável: o primeiro octeto indica o tipo de rede (3 significa GSM) e os dois seguintes, o código de erro. Uma confirmação DELIVRD com err diferente de zero é inconsistente e vale a pena levar ao seu provedor; o decodificador destaca esse caso.

Erros command_status versus confirmações de entrega

O SMPP informa problemas em dois momentos. O command_status do submit_sm_resp chega em milissegundos e diz se o SMSC aceitou sua requisição; 0x00000000 (ESME_ROK) significa aceita, não entregue. A confirmação de entrega chega de segundos a dias depois e traz o resultado final.

Os valores de command_status estão definidos na seção 5.1.3 do SMPP v3.4. Os mais comuns em produção são 0x00000058 ESME_RTHROTTLED (você excedeu as mensagens por segundo combinadas: reduza o ritmo e tente de novo com backoff exponencial), 0x00000014 ESME_RMSGQFUL (fila cheia: aguarde), 0x0000000A e 0x0000000B (endereço de origem ou de destino inválido) e 0x0000000D ou 0x0000000E (falha no bind ou senha incorreta). Os valores 0x00000400 a 0x000004FF são reservados a erros específicos do fabricante do SMSC; consulte seu provedor.

Datas, fusos horários e latência de entrega

As datas das confirmações usam AAMMDDhhmm, e muitos SMSCs acrescentam os segundos (AAMMDDhhmmss). Não há fuso horário: vale o relógio do SMSC, normalmente UTC. O decodificador mostra as datas como estão e calcula a latência como done date menos submit date, o que independe do fuso enquanto ambas vierem do mesmo relógio.

A latência é um bom indicador de qualidade. Um OTP para um aparelho disponível costuma ser entregue em segundos. Latências longas seguidas de EXPIRED indicam aparelhos desligados ou em roaming, e uma done date anterior à submit date mostra relógios dessincronizados. Datas com precisão de minuto não medem latências abaixo de um minuto, então prefira SMSCs que enviam os segundos.

Processando confirmações com confiabilidade em produção

Responda a cada deliver_sm com deliver_sm_resp, mesmo que seu processamento falhe; caso contrário, o SMSC reenvia e pode limitar o bind. Armazene a confirmação bruta e processe de forma assíncrona e idempotente pelo ID da mensagem, porque confirmações podem chegar duplicadas ou fora de ordem: um ENROUTE atrasado nunca deve sobrescrever um DELIVRD.

Se preferir não interpretar confirmações, nossa API REST de SMS entrega as mesmas informações como status de webhook normalizados, e confirmações perdidas podem ser reenviadas com POST /sms/resendDlr. Binds SMPP sobre TLS estão disponíveis para grandes volumes e revendedores.

Perguntas sobre relatórios de entrega

O que significa stat:DELIVRD em um relatório de entrega SMS?

DELIVRD é o estado SMPP “entregue”: o SMSC tem confirmação de que a mensagem chegou ao aparelho do destinatário. Isso não significa que ela foi aberta ou lida; o SMS comum não tem confirmação de leitura. Nos nossos webhooks, corresponde a DELIVERED.

Qual é a diferença entre UNDELIV, EXPIRED e REJECTD?

UNDELIV significa que a rede não conseguiu entregar a mensagem, por exemplo porque o número é inválido ou está inativo. EXPIRED significa que as tentativas continuaram até o fim do período de validade, normalmente porque o aparelho estava desligado ou sem sinal. REJECTD significa que a rede ou um firewall recusou a mensagem, por exemplo por ID de remetente não registrado ou conteúdo bloqueado.

O que significa ACCEPTD em um DLR SMPP?

Na especificação SMPP v3.4, ACCEPTD significa que o atendimento leu a mensagem manualmente em nome do assinante. Na prática, a maioria dos SMSCs e agregadores usa esse estado como confirmação intermediária de que a rede aceitou a mensagem, e depois vem uma confirmação final DELIVRD ou de falha.

O que é o erro SMPP 0x00000058?

0x00000058 é ESME_RTHROTTLED: você enviou mais mensagens por segundo do que seu bind permite. É temporário. Reduza a taxa de envio, mantenha uma janela razoável de submit_sm pendentes e reenvie as mensagens recusadas com backoff exponencial, e não imediatamente.

O que significa err:000 e onde encontro os outros códigos err?

err:000 significa sem erro. Valores de err diferentes de zero não são definidos pela especificação SMPP; vêm do fabricante do SMSC, da operadora ou de um agregador, e alguns repassam causas de erro GSM MAP. Peça a tabela de erros ao seu provedor e verifique o TLV network_error_code, se existir.

Qual formato de data uma confirmação de entrega SMPP usa?

submit date e done date usam AAMMDDhhmm, por exemplo 2610101201 para 10 de outubro de 2026 às 12h01. Muitos SMSCs acrescentam segundos (AAMMDDhhmmss). Não há fuso horário: é o relógio do SMSC, normalmente UTC.

Por que não recebi o relatório de entrega?

Causas comuns: registered_delivery diferente de 1 no submit_sm, uso de bind apenas transmissor sem bind receptor, rede de destino que não devolve confirmações ou cliente que não responde aos deliver_sm. Algumas rotas só devolvem confirmações intermediárias. No tráfego REST, verifique seu webhook e reenvie as confirmações com /sms/resendDlr.

O texto das minhas confirmações é enviado para algum lugar?

Não. O decodificador funciona inteiramente no seu navegador. Nada do que você cola, incluindo IDs ou textos de mensagens, é enviado aos nossos servidores.

Mais ferramentas gratuitas