# Explicação sobre relatórios de entrega de SMS (DLR) e códigos de erro

> Um comprovativo de entrega (DLR) é o veredito final da operadora sobre o seu SMS. O que significam DELIVRD, UNDELIV, EXPIRED e REJECTD, e como interpretar os campos stat e err.

- URL canônico: https://www.broadnet.me/pt/blog/sms-delivery-receipts-dlr-error-codes
- Idioma: pt
- Última atualização: 2026-10-20
- Editor: BroadNet (https://www.broadnet.me)

- Publicado em: 2026-08-03
- Autor: BroadNet Engineering

Um relatório de entrega (DLR) é uma mensagem de status, devolvida após o envio de um SMS, que informa o estado final da mensagem — ENTREGUE, NÃO ENTREGUE, EXPIRADO, EXCLUÍDO, ACEITO, DESCONHECIDO ou REJEITADO — conforme definido pelo SMPP. Um DLR genuíno é originado pela operadora de destino, não pelo gateway, portanto, informa se o aparelho recebeu a mensagem e, por meio do campo de erro, o motivo da falha.

## O que é um comprovativo de entrega — e o que ele não é.

No momento em que você envia uma mensagem, recebe dois sinais diferentes, e confundi-los é a causa mais comum de interrupções fantasmas. O primeiro é o reconhecimento de envio: no SMPP, o SMSC devolve um submit_sm_resp com command_status ESME_ROK (0x00000000); numa API HTTP, você recebe um código 202 e um ID de mensagem. Isso significa apenas que a plataforma aceitou a mensagem para processamento. O segundo sinal, que chega depois, é o relatório de entrega — um relatório fora da banda sobre o que a rede fez com a mensagem. No SMPP, ele regressa como um PDU deliver_sm, cuja esm_class o marca como um recibo; numa API REST, ele é entregue ao seu webhook. Conecte o seu sistema ao DLR, não à resposta de envio — consulte o [guia do desenvolvedor SMPP](https://www.broadnet.me/developers/smpp) para obter informações sobre os sinalizadores bind e receipt-request.

## ACK de gateway versus um DLR de operador real

Nem todos os DLRs são criados no mesmo ponto da rede, e é aí que a qualidade da rota se esconde. Um DLR de nível de operadora real é gerado pela rede de destino após o aparelho confirmar a mensagem curta na camada SS7/MAP ou Diameter; o SMSC da operadora mapeia esse relatório da camada de rede para o recibo SMPP que você recebe. Um DLR intermediário ou de gateway, por outro lado, é sintetizado por um agregador quando ele entrega a mensagem para o próximo salto — antes que a operadora de destino tenha confirmado qualquer coisa. Numa rota direta e limpa, os dois coincidem; numa rota cinza, não.

É por isso que os "DLRs falsos" são perigosos. Um agregador de rotas não oficiais que não consegue obter um recibo genuíno da operadora frequentemente fabrica um DELIVRD na transferência para que os seus painéis pareçam normais — mesmo quando a mensagem foi silenciosamente descartada no destino, filtrada ou encerrada no SIM box. O sinal revelador é uma taxa de entrega suspeitamente perfeita combinada com utilizadores reais que nunca receberam a mensagem, ou uma rota que devolve UNKNOWN em massa (o SMSC não tem um estado válido porque um salto subsequente nunca devolveu um relatório real). Cole qualquer string de recibo no [decodificador de DLR](https://www.broadnet.me/tools/dlr-decoder) para ver exatamente o que uma rota está a alegar em comparação com a aparência de um recibo genuíno da operadora.

## Como os DLRs regressam para você

Existem dois transportes e uma fonte subjacente. Através do SMPP, o recibo devolve assincronamente como um PDU deliver_sm na sua sessão vinculada, com o estado final contido no corpo da mensagem curta (a string clássica id:… stat:… err:…) e, nas versões 5.0 e em muitas implementações da 3.4, nos TLVs message_state e network_error_code. Através de uma API HTTP, as mesmas informações são enviadas via POST para um webhook que você regista, geralmente em formato JSON. Ambos são derivados, em última análise, do próprio relatório de status da rede: a especificação 3GPP TS 23.040 define o SMS-STATUS-REPORT e o seu campo TP-Status, que o SMSC de destino traduz para o estado da mensagem SMPP que você lê. A camada SMPP é uma fiel portadora de um relatório que, na verdade, nasce na rede móvel.

Independentemente do meio de transporte, registe os mesmos campos para cada recibo para que você possa diagnosticar por predefinição em vez de por experiência própria:

- O ID da mensagem, para que você possa associar o DLR ao submit_sm original.
- O valor stat (o estado final da mensagem) e o valor err (o código de erro da rede/operadora).
- O operador de destino (MCC/MNC), o ID do remetente e a rota ou vinculação utilizada.
- Os registos de data e hora de envio e conclusão permitem medir a latência de ponta a ponta e identificar padrões de expiração.

```
id:1a2b3c4d5e sub:001 dlvrd:001 submit date:2608031200 done date:2608031201 stat:DELIVRD err:000 text:O seu código BroadNet
id:9f8e7d6c5b sub:001 dlvrd:000 submit date:2608031200 done date:2608031205 stat:UNDELIV err:062 text:O seu código BroadNet
```

Dois campos contêm o diagnóstico. O campo `stat` indica o estado final padronizado da mensagem (abaixo). O campo `err` é um código específico da rede/operadora — o mesmo erro UNDELIV pode chegar com valores de `err` diferentes em operadoras diferentes, portanto, `err` só faz sentido no contexto da rede de destino. Observe que esse código de erro é diferente do `command_status` do SMPP obtido em `submit_sm_resp` (ESME_RINVDSTADR, ESME_RTHROTTLED e similares); os dois são decodificados de forma diferente. Use a [consulta de código de erro SMPP](https://www.broadnet.me/tools/smpp-error-codes) para os valores de `command_status` e o decodificador DLR para a string de receção.

## Os estados da mensagem SMPP, decodificados

O SMPP define um pequeno conjunto fechado de estados finais, além do estado transitório ENROUTE que você pode observar antes da confirmação da entrega de uma mensagem. Os sete estados abaixo são aqueles que encerram o ciclo de vida de uma mensagem, com a causa típica e a ação que cada um deve desencadear. Interprete-os como uma distribuição entre operadora, ID do remetente e rota — um único UNDELIV é ruído; uma rota com 40% de UNDELIV numa operadora indica um problema de rota.

| Estado DLR (stat) | O que significa | Causa típica | O que fazer |
|---|---|---|---|
| ENTREGUE | O aparelho confirmou a receção. | A mensagem chegou ao dispositivo. | Nada — isso é sucesso; verifique pontualmente os relatos de utilizadores reais para detetar entregas DELIVRD falsas. |
| ACEITO | Aceito em nome do assinante (ex.: lido pelo atendimento ao cliente) | O operador marcou a solicitação como aceita sem um reconhecimento real do aparelho. | Considere como sucesso parcial; investigue qualquer rota que devolva ACEITO em lote — isso geralmente mascara a não entrega. |
| EXPIRADO | Prazo de validade expirado antes da entrega. | Aparelho desligado ou fora de área de cobertura durante toda a janela, ou tentativas de reconexão SMSC esgotadas. | Tente novamente mais tarde ou utilize outro canal; verifique se o seu período de validade não é muito curto. |
| APAGADO | Mensagem removida no SMSC antes da entrega. | Exclusão manual/administrativa ou remoção por filtro de spam | Verifique o filtro de conteúdo da operadora e a sua política de ID do remetente/conteúdo. |
| NÃO ENTREGUE | A mensagem não pôde ser entregue. | MSISDN inválido ou não alocado, sem rota, rejeição na camada de rede ou bloqueio de firewall. | Valide o número (consulta HLR) e, em seguida, verifique a qualidade da rota e o registo do ID do remetente. |
| REJEITADO | O operador recusou a mensagem. | ID de remetente não registado, filtro de conteúdo, classificação de spam ou lista de não perturbe/consentimento | Registe o ID do remetente, corrija o modelo e confirme a adesão do destinatário. |
| DESCONHECIDO | O SMSC não possui nenhum estado válido para a mensagem. | Um salto a jusante nunca devolveu um relatório real — frequentemente um buraco negro de rota cinzenta | Questionar o percurso; um percurso direto e saudável raramente regressa ao destino. |

## Leitura de DLRs como um sinal de qualidade de rota

Uma vez que você aceita que apenas um DLR (Direct-to-Receiver) em nível de operadora é confiável, o feed de recibos se torna seu melhor instrumento para avaliar a qualidade da rota — melhor do que qualquer mapa de cobertura ou apresentação de vendas. Rotas diretas devolvem códigos de erro específicos e consistentes, além de uma taxa de entrega estável; rotas cinzas devolvem falhas genéricas, uma dispersão de erros "UNKNOWN" (desconhecido) e uma taxa de entrega que oscila semanalmente, conforme os firewalls das operadoras bloqueiam o tráfego e o agregador redireciona silenciosamente. Analise a distribuição do DLR por operadora e ID do remetente ao longo do tempo: as operadoras onde você observa um aumento de erros "UNDELIV" (não entregue) ou "UNKNOWN" (desconhecido) ou o desaparecimento de detalhes de erro são aquelas que estão a utilizar rotas com desempenho inferior. Para mercados regulamentados do GCC (Conselho de Cooperação do Golfo) — Emirados Árabes Unidos sob o TDRA (Acordo de Desenvolvimento de Transações de Transação), Arábia Saudita sob o CST (Acordo de Transmissão de Transações de Transação) — erros "REJECTD" (rejeitados) concentrados num ID de remetente quase sempre indicam uma lacuna de registo ou aprovação de modelo, e não uma falha de rede.

> A BroadNet devolve DLRs reais de nível de operadora — não ACKs de gateway — em 1,000+ conexões de operadoras em 200+ países, com os campos stat e err expostos por mensagem para que a qualidade da rota seja visível em tempo real, respaldada por um SLA de plataforma de 99,99% e rotas A2P diretas mantidas desde 2003. Explore a [API de SMS](https://www.broadnet.me/products/sms-api) ou o [guia do desenvolvedor SMPP](https://www.broadnet.me/developers/smpp).

## Perguntas frequentes

### O que é um comprovativo de entrega por SMS?

Um relatório de entrega (DLR) é um relatório de status devolvido após o envio de um SMS, informando o resultado final da mensagem — entregue, não entregue, expirada, rejeitada etc. Ele chega após a confirmação de envio, seja como um PDU de recibo SMPP deliver_sm ou um webhook HTTP. Um recibo genuíno é originado pela operadora de destino, não pelo gateway, confirmando assim se o aparelho realmente recebeu a mensagem.

### O que significa DLR?

DLR significa relatório de entrega (às vezes "recibo de entrega"). Em SMPP, é o relatório de estado da mensagem que o SMSC regressa para uma mensagem enviada, contendo um campo de status (ENTREGUE, NÃO ENTREGUE, EXPIRADO, EXCLUÍDO, ACEITO, DESCONHECIDO, REJEITADO) e um código de erro específico da operadora. É a diferença entre saber se uma mensagem foi aceita para processamento e saber se ela foi efetivamente entregue a um dispositivo.

### Porque o meu SMS aparece como NÃO ENTREGUE / REJEITADO?

UNDELIV geralmente significa que a mensagem não pôde chegar ao aparelho — um MSISDN inválido ou não alocado, nenhuma rota, ou um bloqueio na camada de rede ou firewall. REJECTD significa que a operadora recusou a mensagem imediatamente, normalmente por um ID de remetente não registado, um filtro de conteúdo, classificação de spam ou uma lista de bloqueio/não perturbe. Leia o campo de erro e correlacione as falhas por ID de remetente, operadora e rota para isolar a causa real.

### Qual a diferença entre um ACK de gateway e um DLR de operador?

Um reconhecimento de gateway (submit_sm_resp com ESME_ROK ou um HTTP 202) apenas confirma que a plataforma aceitou a sua mensagem para processamento. Um DLR da operadora confirma o que a rede de destino realmente fez com ela. Agregadores em rotas cinzentas às vezes falsificam recibos DELIVRD na transferência, portanto, um DLR proveniente da operadora é o único sinal confiável de que o dispositivo recebeu a mensagem.

## Referências

- Especificações SMPP v3.4 e v5.0 — formato de relatório de entrega, message_state e network_error_code: [smpp.org](https://smpp.org/)
- 3GPP TS 23.040 — implementação técnica do Serviço de Mensagens Curtas (SMS-STATUS-REPORT, TP-Status): [3gpp.org](https://www.3gpp.org/)
- Ferramentas BroadNet — [decodificador DLR](https://www.broadnet.me/tools/dlr-decoder) e [consulta de código de erro SMPP](https://www.broadnet.me/tools/smpp-error-codes).
- BroadNet — [guia do desenvolvedor SMPP](https://www.broadnet.me/developers/smpp) e [API SMS](https://www.broadnet.me/products/sms-api).
