What Does “Invalid Number” Mean in SMS Delivery Reports?

Table of Contents

“Invalid number” in an SMS delivery report means the message could never reach the destination as addressed: the number is badly formatted, was never allocated, has been disconnected, or belongs to a line that cannot receive SMS. Unlike a temporary failure, sending again will not help, so the fix is to correct or remove the number, ideally by checking it with an HLR lookup API before you send.

This guide explains where the status comes from, how it differs from “unknown subscriber” and from temporary errors, and how to stop invalid numbers reaching your send queue in the first place.

What do “invalid number” and “unknown subscriber” actually mean?

Both labels say the same thing from the sender’s point of view: this address is not a working mobile subscription. They come from two different checkpoints, though, and knowing which one fired tells you what went wrong.

  • Rejected before sending. Your provider validates the number when you submit the message. If it has the wrong length, contains letters or lacks a country code, the submission is refused. Over SMPP this is the standard ESME_RINVDSTADR status (0x0000000B, “Invalid Dest Addr”) defined in the SMPP 3.4 specification. Over an HTTP API you normally get a validation error in the response.
  • Rejected by the network. The number looks valid, so the message goes out. Before delivery, the SMS centre asks the recipient’s home network where to send it. If the home network has no record of the number, it answers with the GSM MAP error unknownSubscriber (error code 1 in 3GPP TS 29.002), and the failure comes back in your delivery report (DLR).

Providers then translate these causes into their own labels. Vonage, for example, lists “Illegal Number” as DLR error 9 in its delivery receipt documentation, while Twilio describes error 30005 as meaning “the destination number is unknown and may no longer exist”. Different words, same underlying cause.

What causes an invalid number error?

The common causes fall into five groups.

1. Wrong format (not E.164)

International SMS routing expects numbers in E.164 format: a plus sign, the country code, then the national number, with no spaces or trunk prefix. The ITU’s E.164 recommendation limits an international number to 15 digits. Common mistakes are a missing country code, a national leading zero kept after the country code (+44 07… instead of +44 7…), the international dialling prefix “00” stored in the field, or extra digits pasted from a form.

2. Disconnected numbers

Prepaid SIMs that stop being topped up are eventually deactivated by the operator. Once the subscription is removed from the home network’s register, the number returns “unknown subscriber” until it is reissued. Older lists collect these steadily, which is why a list that delivered well a year ago can fail noticeably today.

3. Ported numbers routed to the old network

When a subscriber moves to another operator and keeps their number, the original network no longer holds the subscription. If a route still treats the number as belonging to the old operator, the lookup can fail. The MAP standard even has a specific diagnostic for this situation, npdbMismatch, alongside the unknown-subscriber error. A mobile number portability (MNP) check resolves the current operator before routing.

4. Landlines and lines without SMS

A fixed-line number is a perfectly valid phone number, but it has no mobile subscription to deliver a text to. Some data-only or machine-to-machine SIMs are also provisioned without SMS. Depending on the route, these come back as invalid, unknown subscriber or “teleservice not provisioned”.

5. Numbers that were never allocated

Some numbers are syntactically correct but sit in ranges no operator has assigned: typos, made-up numbers typed into sign-up forms, or reserved ranges. Ofcom, for instance, reserves 07700 900000 to 900999 for TV and radio drama, so those numbers never belong to a real subscriber.

CauseTypical signalFix
Wrong formatRejected at submission, or invalid destination addressNormalise to E.164 when the number is captured
DisconnectedUnknown subscriber in the DLRSuppress; re-verify only if the customer re-confirms it
Ported, wrong routeUnknown subscriber or routing failureRun an MNP or HLR lookup and route to the current network
Landline or no SMS serviceInvalid, unknown subscriber or teleservice not provisionedCheck number type; ask for a mobile number
Never allocatedInvalid or unknown subscriberValidate at sign-up and ask the user to correct it

How do you tell an invalid number from a temporary failure?

The key question is whether the network recognises the subscription. If it does, the problem is usually temporary. If it does not, it is permanent.

StatusWhat the network is sayingPermanent or temporaryWhat to do
Invalid number / unknown subscriberNo such subscription existsPermanentStop sending; fix or remove the number
Absent subscriberSubscription exists, but the handset is off or out of coverageTemporaryLet the network retry; do not resend immediately
Handset memory fullPhone is reachable but has no space for the messageTemporaryRetry later
System failureA network element failed while handling the messageTemporaryRetry with backoff
ExpiredRetries ran out before the validity period endedFinal, but the cause was temporaryResend only if the content is still relevant

Two practical rules help. First, look at the exact error text rather than a generic “failed” or “undelivered” status, because both permanent and temporary causes can end in the same final state. Second, look at the pattern: a number that fails once with a vague error may be a network issue, but a number that returns “unknown subscriber” on several attempts across different days should be treated as invalid.

Also be aware that some providers group causes together. Twilio’s documentation for error 30005, for example, lists a powered-off device as a possible cause alongside a number that no longer exists. When a label is ambiguous, a lookup settles it.

How do you prevent invalid numbers before sending?

Prevention works in two layers: clean formatting when you collect the number, and a live network check before you rely on it.

Normalise at the point of capture

Store every number in E.164. Use a country selector on forms, strip spaces, brackets and dashes, remove a national leading zero, and reject anything longer than 15 digits. Validate on the client for fast feedback and again on the server.

Check the number on the network

An HLR lookup queries the number’s home network in real time without sending anything to the handset. It tells you whether the number is active, which operator serves it and whether it has been ported. With SMS.to you can run it with a single request:

curl -X POST "https://hlr.sms.to/api/v2/lookup" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"number": "+447700900123"}'

If your stored numbers are in national format, add the optional default_prefix parameter with a two-letter country code, and numbers without a country dial code are validated as if they belong to that country. To check a whole list, send a numbers array to the same endpoint: it runs asynchronously and returns a report_id you can fetch later from https://hlr.sms.to/api/v2/reports/{id}. There is also an estimate endpoint, https://hlr.sms.to/api/v2/estimate, so you can see the cost before running a large batch.

The lookup response returns practical fields for validation and routing, including:

  • reachable: whether the line is active or inactive
  • ported: whether the number has moved to another network
  • operator_name, plus mcc and mnc: the current or original network and its codes
  • number_type: mobile, landline or virtual
  • country_iso: the two-letter country code
  • status_code and reason: whether the lookup succeeded or what issue it found

Fields may vary by country or operator, so if your logic depends on a specific field, confirm coverage for your markets first. For port-heavy markets, add an MNP lookup; we cover the trade-offs in our guide to HLR and MNP checks.

What should you do with numbers already marked invalid?

  • Suppress, do not delete. Keep the record but flag the number so it is excluded from future sends. Deleting it means it may be re-imported later.
  • Stop automatic retries. Retrying a permanent error only adds cost. Make sure your retry logic is driven by the error cause, not just by “not delivered”.
  • Ask the user. For sign-ups and one-time passcodes, show a clear “check your number” message and let the user correct it, rather than silently failing.
  • Re-check old lists. Numbers are disconnected and reissued all the time. Run a lookup on dormant segments before a campaign rather than trusting last year’s results.
  • Watch the rate by source. If one form, partner or import produces most of your invalid numbers, fix the source. If you integrate over SMPP, our SMPP guide explains how DLRs are returned so you can map these errors correctly.

How SMS.to handles invalid numbers

SMS.to is operated by Intergo Telecom, a licensed telecom and CPaaS operator. Every message you send through the SMS API can include a callback_url, so delivery reports, including failures, are pushed to your system as webhooks and you can suppress invalid numbers automatically. If you are wiring this up for the first time, our first-integration guide covers the basics.

For prevention, the SMS.to HLR and MNP lookup returns reachability, portability, MCC and MNC, number type and, where available, the last country of use. You can call it from the API, run lookups directly in the dashboard and export the results. Batch checks and CSV uploads are supported where enabled.

FAQs

Does “invalid number” mean the number is fake?

Not necessarily. It means the number cannot receive SMS as written. It may be mistyped, missing a country code, disconnected, a landline or never allocated.

Am I charged for messages to invalid numbers?

That depends on where it failed. A number rejected at submission is usually not sent at all, while a message that reaches the network and fails there may still be billed. Check your provider’s terms, and use a lookup to avoid the question entirely.

Is “unknown subscriber” the same as “absent subscriber”?

No. Unknown subscriber means the network has no such subscription, which is permanent. Absent subscriber means the subscription exists but the handset cannot be reached right now, which is temporary.

Can an invalid number become valid again?

Yes. Operators reissue disconnected numbers, often to a different person. That is why you should re-confirm consent and re-verify a number rather than resume sending to it later.

Want to see which numbers on your list will fail before you pay to send? Run your first lookups and test messages with a free trial. Create a free account, no credit card needed.

author avatar
Marios Italos

More Articles

"Invalid number" means an SMS could never reach the destination as addressed. Here are the
SMPP stands for Short Message Peer-to-Peer. This glossary defines 28 SMS terms, from delivery reports