A delivery receipt (DLR) is a status report that tells the sender of an SMS what happened to it: delivered to the handset, failed, expired or still pending. The recipient's network generates it, and the messaging provider passes it back to the sending application, usually as a webhook. DLRs are how A2P senders measure delivery rates and spot broken routes.
Where do delivery receipts come from?
In mobile networks, the receipt is the SMS-STATUS-REPORT defined in 3GPP TS 23.040, Technical realization of the Short Message Service. The sender sets a flag asking for a status report when it submits the message. When the message centre delivers the SMS, or gives up, it sends back a report with a status code.
Between businesses and messaging providers, receipts usually travel over the SMPP protocol or an HTTP API. The SMPP 3.4 specification suggests a text format with fields such as stat and err. Common stat values:
| Status | Meaning |
|---|---|
DELIVRD | Delivered to the handset |
UNDELIV | Could not be delivered (for example, invalid or barred number) |
EXPIRED | Validity period ended before delivery, often because the phone was off |
REJECTD | Rejected by the network or a filter |
ACCEPTD / ENROUTE | Accepted or in transit, no final status yet |
UNKNOWN | The final status can't be determined |
Providers usually map these, plus network-specific error codes, to their own simpler statuses.
Why are delivery receipts unreliable?
DLRs are useful but not exact:
- Coverage varies. Some networks, countries and routes don't return receipts, or return only intermediate ones.
- Timing varies. A receipt can arrive seconds or hours later, or never.
- Some routes misreport. Low-cost routes have been known to report messages as delivered when they weren't, or to strip receipts. A sudden jump to near-perfect delivery on a cheap route deserves a check.
- Delivered isn't read. A receipt says nothing about whether a person saw the message, or whether the right person owns the number.
Treat a missing receipt as unknown, not as failed. Use test messages to handsets you control to check a route.
What can you learn from failed receipts?
Patterns in failures point to list problems:
- Many
UNDELIVresults with "unknown subscriber" errors suggest disconnected or mistyped numbers. - Failures to landlines mean non-mobile numbers are in the list. See line type.
- Many
EXPIREDresults suggest phones that are off or out of coverage for a long time, or abandoned SIMs.
Cleaning those numbers before the next send lowers cost and protects sender reputation.
How does MobileValidate relate to delivery receipts?
MobileValidate doesn't send messages, so it doesn't produce DLRs. It answers questions you'd otherwise learn from failed receipts, before you pay for the send. The carrier lookup returns the line type and current carrier. The upcoming HLR lookup will report whether a mobile number is reachable right now, a direct measure of number reachability. Unknown answers are free. See SMS cost reduction for how teams combine pre-send checks with their own receipt data.
Frequently asked questions
Does a delivered DLR mean the person read the message?
No. It means the network reports that the message reached the handset. It says nothing about whether the recipient opened or read it.
Why do some messages never get a DLR?
Not every network or route returns receipts, some return them late, and some messages expire before a final status is known. A missing receipt is an unknown, not a failure.
Can I check whether a number can receive SMS before sending?
Partly. A carrier lookup shows whether the number is mobile, and an HLR lookup shows whether a mobile subscriber is currently reachable. Only an actual send produces a delivery receipt.
Related
Guides on this topic
All articlesDeliverability
SMS delivery receipts vs HLR lookup: before or after you send
A delivery receipt reports what happened after you sent an SMS. An HLR lookup asks the network before you send. What each can see, miss and cost.
7 min read
Deliverability
Why SMS messages aren't delivered: a cause tree with fixes
A cause tree for undelivered SMS: invalid numbers, unreachable phones, wrong line types, carrier filtering and handsets, with a fix for each.
7 min read

