“Absent Subscriber” and 12 Other SMS Error Codes Explained

Table of Contents

“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_status values from the SMPP 3.4 specification, such as ESME_RINVDSTADR (0x0000000B, invalid destination address) or ESME_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 err field 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

ErrorWhat it meansPermanent or temporaryWhat to do
Absent subscriberNumber exists; handset off, out of coverage or detachedTemporaryLet the network retry; offer another channel for urgent codes
Unknown subscriberHome network has no such subscriptionPermanentSuppress the number; ask the user to correct it
Invalid destination addressNumber is malformed or fails validationPermanent until fixedNormalise to E.164 and resubmit
Call barredSubscriber, operator or originator rules bar the messageUsually persistentStop retrying; re-check later
Teleservice not provisionedSubscription does not include SMSPermanentAsk for a mobile number that takes SMS
Facility not supportedThe network does not support the requested facilityNot retryable on the same routeStop retrying; report if it persists on a route
Illegal subscriberAuthentication showed the access is not legitimateTreat as permanentStop sending; verify the number
System failureA network element failedTemporaryRetry with backoff
Data missing / unexpected data valueSignalling message lacked a parameter or held an unexpected valueNot retryable on the same routeReport patterns to your provider
Handset memory fullPhone cannot store more messagesTemporaryWait for the network to redeliver
Message expiredValidity period ended before deliveryFinal outcome of a temporary causeResend only if still relevant
Rejected or blocked by carrier / spam filterContent, link or sender was filteredPermanent for that messageFix content, sender or registration
Unregistered sender IDSender not registered where registration is requiredPermanent until registeredRegister 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?

  1. Classify by cause, not by final state. Map each error your provider returns to one of four buckets: permanent, temporary, route and policy.
  2. Suppress permanent failures. Flag the number so it is excluded from future sends until the user updates it.
  3. 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.
  4. 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.
  5. Escalate policy failures to a human. Content and sender problems need someone to change the template, the link or the registration.
  6. 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.
  7. 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.

author avatar
Marios Italos

More Articles

"Absent subscriber" means the network knows the number but cannot reach the handset right now.
A text message API lets your software send SMS with a single HTTP request. Here