---
title: "What do SMS delivery report statuses mean?"
description: "What do SMS delivery report statuses mean? DELIVRD, UNDELIV, EXPIRED, REJECTD and other SMPP 3.4 states, plus how they map to webhook statuses you can act on."
canonical: "https://omnichannels.ai/answers/sms-delivery-report-statuses/"
language: "en"
updated: "2026-10-10"
publisher: "BroadNet Technologies"
brand: "OmniChannels.ai"
---

# What do SMS delivery report statuses mean?

Canonical: https://omnichannels.ai/answers/sms-delivery-report-statuses/
Language: en
Publisher: OmniChannels.ai by BroadNet Technologies

**Short answer:** SMS delivery report statuses tell the sender what happened to a message after the operator accepted it. In SMPP 3.4 receipts, DELIVRD means delivered to the handset, UNDELIV means undeliverable, EXPIRED means the validity period ran out, and REJECTD means the network refused it. HTTP APIs usually map these to statuses like DELIVERED or FAILED.

## What do the SMPP stat values mean?

The SMPP 3.4 specification gives a sample receipt format with a stat field holding the final message state. The exact receipt text is SMSC-specific, but these values are widely used.

| stat | Meaning | Typical cause |
|---|---|---|
| DELIVRD | Delivered to the handset | Normal success |
| UNDELIV | Undeliverable | Invalid, inactive or barred number |
| EXPIRED | Validity period expired before delivery | Phone off or out of coverage for too long |
| REJECTD | Rejected by the network | Unregistered sender ID, blocked content or route |
| DELETED | Deleted before delivery | Cancelled at the SMSC |
| ACCEPTD or UNKNOWN | Accepted state or invalid/unknown state | SMSC-specific; check with your provider |

## How do platform webhook statuses relate?

APIs normalise operator receipts into simpler statuses. On the OmniChannels.ai platform, every channel reports SUBMITTED, SENT, DELIVERED, READ, FAILED and REJECTED. SUBMITTED and SENT are interim; DELIVERED, FAILED and REJECTED are final for SMS. Statuses can arrive out of order, so never let a late SENT overwrite a DELIVERED.

## How do I read a raw delivery receipt?

1. Match the receipt id to the message_id returned by submit_sm_resp.
2. Read stat for the final state and err for the operator error code.
3. Compare submit date and done date to see how long delivery took.
4. For long messages, aggregate the receipts of every segment before marking the message delivered.

## What are the limits of delivery reports?

Some operators return no receipts or return them late, and some report delivery when the message reached the network rather than the phone. Fake DELIVRD receipts are a known sign of grey routes. Treat a receipt as strong evidence, not proof that the message was read.

## Official sources

- [SMPP Protocol Specification v3.4 (Issue 1.2) — SMPP.org](https://smpp.org/SMPP_v3_4_Issue1_2.pdf)

## Related questions

- https://omnichannels.ai/answers/why-sms-not-delivered/
- https://omnichannels.ai/answers/delivery-report-webhook/
- https://omnichannels.ai/answers/otp-sms-not-received/
- https://omnichannels.ai/answers/why-sms-split-into-parts/

Updated: 2026-10-10