“Absent subscriber” means the mobile network knows the number but cannot reach the handset right now, usually because the phone is switched off, out of coverage or detached from the network. It is a temporary error, so the network normally keeps retrying until the message’s validity period runs out, and a quick HLR number lookup can show the number as a real, currently unreachable subscription rather than a dead one.
Below we explain absent subscriber in depth, then twelve other common SMS delivery errors, what each one means and whether you should retry, fix something or stop sending.
Where do SMS error codes come from?
An SMS can fail at three points, and each has its own vocabulary.
- At submission. Your provider accepts or refuses the message. Over SMPP, refusals use
command_statusvalues from the SMPP 3.4 specification, such asESME_RINVDSTADR(0x0000000B, invalid destination address) orESME_RTHROTTLED(0x00000058, you exceeded the allowed sending rate). - On the mobile network. Before delivery, the SMS centre asks the recipient’s home location register (HLR) where to send the message, using the GSM MAP operation SendRoutingInfoForSM. It then forwards the message to the serving switch with MT-ForwardSM. Both steps can return standard MAP errors defined in 3GPP TS 29.002.
- In the delivery report. The final outcome comes back in the DLR as a state such as DELIVRD, EXPIRED, UNDELIV or REJECTD. The SMPP 3.4 specification says the
errfield in a delivery receipt may hold “a Network specific error code or an SMSC error code”, and that these errors “are Network or SMSC specific”.
That last point matters. The same number can mean different things on different platforms. In MAP, error 9 is illegalSubscriber; in Vonage’s DLR error list, 9 means “Illegal Number”. Always read the error description your provider gives you, not just the number.
Summary table: 13 common SMS errors
| Error | What it means | Permanent or temporary | What to do |
|---|---|---|---|
| Absent subscriber | Number exists; handset off, out of coverage or detached | Temporary | Let the network retry; offer another channel for urgent codes |
| Unknown subscriber | Home network has no such subscription | Permanent | Suppress the number; ask the user to correct it |
| Invalid destination address | Number is malformed or fails validation | Permanent until fixed | Normalise to E.164 and resubmit |
| Call barred | Subscriber, operator or originator rules bar the message | Usually persistent | Stop retrying; re-check later |
| Teleservice not provisioned | Subscription does not include SMS | Permanent | Ask for a mobile number that takes SMS |
| Facility not supported | The network does not support the requested facility | Not retryable on the same route | Stop retrying; report if it persists on a route |
| Illegal subscriber | Authentication showed the access is not legitimate | Treat as permanent | Stop sending; verify the number |
| System failure | A network element failed | Temporary | Retry with backoff |
| Data missing / unexpected data value | Signalling message lacked a parameter or held an unexpected value | Not retryable on the same route | Report patterns to your provider |
| Handset memory full | Phone cannot store more messages | Temporary | Wait for the network to redeliver |
| Message expired | Validity period ended before delivery | Final outcome of a temporary cause | Resend only if still relevant |
| Rejected or blocked by carrier / spam filter | Content, link or sender was filtered | Permanent for that message | Fix content, sender or registration |
| Unregistered sender ID | Sender not registered where registration is required | Permanent until registered | Register the sender, then resend |
What does “absent subscriber” mean in detail?
In MAP terms this is absentSubscriberSM, error code 6. The HLR knows the subscription, but the handset cannot be paged. 3GPP TS 23.040 lists the diagnostic reasons, including “no paging response via the MSC”, “IMSI detached”, “roaming restriction”, “deregistered in the HLR” and “MS purged”.
When delivery fails this way, the network sets a flag in the HLR (the Mobile-Station-Not-Reachable-Flag) and records that a message is waiting. When the phone reattaches, the HLR can alert the SMS centre, which then delivers the message, provided the validity period has not expired.
What to do:
- Do not resend straight away. You will pay again and may end up delivering duplicates when the phone comes back.
- For one-time passcodes, keep the validity period short and give the user a way to request the code on another channel.
- If a number stays absent for weeks, treat it as dormant. Vonage, for example, separates “Absent Subscriber – Temporary” (error 2) from “Absent Subscriber – Permanent” (error 3).
Permanent errors: fix the number or stop sending
Unknown subscriber
MAP error 1. TS 29.002 defines it simply as “no such subscription exists”. In practice the number was never allocated, has been disconnected, or has been ported and routed to the wrong network (MAP even defines an npdbMismatch diagnostic for the last case). We cover the causes in detail in what “invalid number” means in delivery reports.
Invalid destination address
SMPP status 0x0000000B. The number failed validation before it reached any network, usually because of a missing country code, a stray leading zero or the wrong length. Normalise numbers to E.164 when you collect them.
Teleservice not provisioned
MAP error 11. The subscription exists but does not include short message service. This is typical of landlines, some data-only SIMs and some machine-to-machine lines.
Illegal subscriber
MAP error 9. The standard defines it as “illegality of the access has been established by use of authentication procedure”, in other words the network’s authentication check rejected the SIM. From a sender’s perspective there is nothing to retry; verify the number with the user.
Call barred
MAP error 13. The standard says it can indicate a barring condition set by the subscriber, barring “for operator reasons” or, for terminating short messages, an “unauthorised Message Originator”. The first two may lift eventually, but repeated retries will not change them, and the third is a sender problem rather than a number problem. Suppress the number and re-check it before your next campaign, and ask your provider if you see call barred across many numbers on one network.
Temporary and route errors: retry or reroute
Handset memory full
In MAP this is an SM delivery failure with the cause memoryCapacityExceeded. The phone is reachable but has no room for the message. The HLR sets a memory-capacity-exceeded flag, and delivery resumes when the user frees space and the handset signals that it is ready.
Facility not supported
MAP error 21, defined as “the requested facility is not supported by the PLMN” (the mobile network). It can appear when a subscriber is roaming on a network with limited interworking. Retrying the same path straight away rarely helps; if it persists for a whole route, tell your provider.
System failure
MAP error 34: “a task cannot be performed because of a problem in another entity”, such as an outage or overload somewhere along the path. Retry with exponential backoff.
Data missing and unexpected data value
MAP errors 35 and 36. Data missing means “an optional parameter required by the context is missing”; unexpected data value means the data “is formally correct but its value or presence is unexpected”. Both describe the signalling between networks, not your number, so they point to an interconnect or route issue. Retrying the same route rarely helps, while a different route can succeed. Report clusters by country or operator.
Message expired
SMPP message state EXPIRED means the “message validity period has expired”. This is where temporary errors end up if the handset never becomes reachable in time. For marketing, a longer validity may be fine. For passcodes, a message that arrives after the code has expired is useless, so keep validity short.
Policy errors: content and sender problems
Rejected or blocked by carrier or spam filter
The network or an SMS firewall accepted the signalling but refused the message itself. In SMPP this ends as REJECTD. Vonage lists “Anti-Spam Rejection” and “Number Blocked by Carrier”; Twilio’s error 30007 says “your message was filtered (blocked)”. Typical triggers are URL shorteners with poor reputation, wording that resembles phishing, sending to people who did not opt in, and unusual volume spikes. Retrying the same content will not help.
Unregistered sender ID
Many countries require a sender ID to be registered or pre-approved for application-to-person traffic. If it is not, the message may be blocked, delivered with a substituted sender or throttled. In the US, for instance, Twilio’s error 30034 covers messages sent from a 10DLC number not associated with an approved A2P 10DLC campaign. The fix is administrative: register the sender, then resend.
How should your code handle each error?
- Classify by cause, not by final state. Map each error your provider returns to one of four buckets: permanent, temporary, route and policy.
- Suppress permanent failures. Flag the number so it is excluded from future sends until the user updates it.
- Let temporary failures run. The network already retries within the validity period. If you add your own retries, use backoff and stop after a small number of attempts.
- Reroute route errors. Errors such as data missing or facility not supported describe the path, so raise them with your provider rather than retrying the same route.
- Escalate policy failures to a human. Content and sender problems need someone to change the template, the link or the registration.
- Monitor rates by country and operator. A sudden rise in one error on one network usually points to a route or filter change, not to your list.
- Check numbers before important sends. A lookup separates unknown from absent numbers before you pay for the message. If you are new to how lookups work, see our guide to HLR and MNP checks.
How SMS.to handles delivery errors
SMS.to is run by Intergo Telecom, a licensed telecom operator, so our team reads these errors at network level every day. Add a callback_url to each request to https://api.sms.to/sms/send, and delivery reports, including failures, are pushed to your webhook in real time. Over SMPP, final and intermediate DLRs are supported, with clear state mapping so your system can classify delivered, failed and undeliverable messages correctly.
To stop paying for messages that cannot arrive, run numbers through SMS.to’s HLR and MNP lookup API first. It returns reachability, portability, MCC and MNC, number type and, where available, roaming status, and you can check single numbers or whole lists.
FAQs
Is absent subscriber a permanent error?
No. It means the handset is temporarily unreachable. The network retries until the validity period ends. It only becomes a concern if the same number stays absent for a long time.
Should I resend a message that failed with absent subscriber?
Not immediately. Wait for the final delivery report. If it expires and the content still matters, resend later or use another channel.
Why does the same error have different codes with different providers?
The SMPP standard leaves the delivery receipt error field to each network and SMS centre, so providers map network causes to their own numbering. Rely on the description, and ask your provider for its mapping.
What is the difference between “undelivered” and “rejected”?
Undelivered means delivery was attempted and failed, for example because the number is unknown. Rejected means the network or a filter refused the message, typically because of content or sender rules.
Want delivery reports you can act on and number checks before you send? Create a free account, no credit card needed, and test both in minutes.