Why an SMS is not delivered: common causes and how to improve deliverability

An SMS that never arrives is a customer who cannot log in or an order left unconfirmed. Here are the real causes of non-delivery and the concrete actions that improve deliverability.

Short answer: an SMS is usually not delivered because the number is wrong or inactive, the handset is switched off or out of coverage, the operator filtered the content or the sender, or the platform rejected the request (blocked number, no balance, invalid credentials). The delivery report (DLR) for each message tells you which of these happened.

Where an SMS gets lost
Where an SMS gets lost

First: where a message can fail

An SMS travels through five stages and can be lost at any of them: the system that originates it, the provider platform, the mobile operator, the access network and the handset itself. Diagnosing properly starts with knowing which stage it stopped at, and that is what the message identifier (sid) and the delivery receipt (DLR) returned by the operator are for.

If the API rejected the request, the problem is in your system or in the connection settings. If the API accepted the message but the DLR says failed, the problem is at the operator or the recipient. If the DLR says delivered and the customer insists they never got it, the handset is where to look.

Causes on your own system

The most common and easiest cause to fix is a malformed number: duplicated prefixes, spaces, dashes, the extra 1 after 52 that is no longer used in Mexican national dialling but that some systems still add. The platform normalises to international E.164 format, but an impossible number stays impossible. Validate the format before sending and always store numbers in E.164.

Other causes: sending to landlines, duplicating messages through badly implemented retries, or exceeding one segment with concatenation disabled, which leaves the message truncated.

Telecommunications tower against a cloudy sky

Causes on the platform

The API can reject a message on business rules: a number on an exclusion list (INPUT_PHONE_BLACKLISTED), insufficient credit on prepaid accounts (INSUFFICIENT_BALANCE), or a mismatch between the configured encryption mode and what was sent (ENCRYPTION_REQUIRED or ENCRYPTION_NOT_ALLOWED). It can also reject requests from unauthorised IPs (403) or with an invalid token (401).

These causes are visible immediately in the API response and in the console. They are worth monitoring: a rise in exclusion-list rejections, for example, means opt-outs are not being applied to your list.

Causes at the operator

Operators apply content and behaviour filters to A2P traffic. Messages with suspicious links, wording associated with fraud, unregistered senders or anomalous volumes from a single origin can be blocked with no notice to the sender, or marked as failed with a generic reason.

Congestion is real too: on high-traffic dates (paydays, Buen Fin, year end) operators prioritise and can delay deliveries. A provider with redundant routing and continuous monitoring reduces the impact.

Finally, number portability: a number that moved to a different operator can fail temporarily if the route was not updated. The platform checks portability in real time.

Causes at the recipient

A handset that is switched off or out of coverage is the most frequent cause of delayed deliveries: the operator retries during the validity period of the message and, failing that, marks it as expired. An inactive or cancelled SIM, or a handset that does not support the message format, produces permanent failures.

On the device, sender blocks, operating-system spam filters and a full message memory (on feature phones) can mean an SMS marked as delivered is never seen by the user. Here the report will say delivered and diagnosis moves to customer support.

What each delivery status means

Every message returns a final status through the delivery receipt. Reading it correctly is the fastest way to know whether to fix the number, the content or the route. You can receive these statuses in real time with delivery report webhooks.

StatusWhat it meansWhat to do
DELIVRDThe handset confirmed reception to the operator.Nothing on the network side. If the customer did not see it, check device filters or blocked senders.
UNDELIVThe operator could not deliver it: inactive SIM, invalid number or permanent error.Validate the number and remove it from the list if it fails repeatedly.
REJECTDThe operator or the platform rejected the message before trying to deliver it.Review sender, content and links; check that the number is not on an exclusion list.
EXPIREDThe validity period ended while the handset was off or out of coverage.Normal for switched-off phones. For OTP, use a short validity and offer a resend.
UNKNOWNThe operator did not return a conclusive status.Monitor the pattern; if it grows on one operator, ask your provider to review it.

Why an SMS arrives late

A delayed SMS is not the same as a lost one. The most common causes of delayed delivery are:

  • Handset off or out of coverage: the operator stores the message and retries until it connects or the validity period ends.
  • Network congestion: on paydays, Buen Fin or year end, operators handle peaks and can delay non-priority traffic.
  • Queues on your side: sending a large campaign through the same connection as your OTP codes makes critical messages wait behind promotional ones.
  • Poorly designed retries: resending immediately while the first attempt is still in transit creates duplicates and more congestion.

To reduce delays, separate critical and promotional traffic, schedule campaigns outside peak hours and set a short validity period for time-sensitive messages. See how an SMS is delivered, step by step.

SMS delivery failures in financial services

Banks, fintechs and lenders depend on SMS for verification codes and alerts, so a failure means a blocked login or an unconfirmed payment. The causes specific to the sector are:

  • Suspended lines: lines that were not linked to a CURP can be suspended. See Mexico’s CURP phone registration and its effect on OTP.
  • Content that looks like fraud: operator filters are stricter with financial wording, links and requests for data. Review Mexico’s anti-spam rules for SMS.
  • Codes that expire before they arrive: if the OTP lasts less than the real delivery time at peak hours, the customer receives a code that no longer works.
  • Landlines in the database: numbers captured as mobile that are actually landlines never receive the SMS.

Grupo Tecnophone checks each number against Mexico’s National Numbering Plan (PNN) to know whether it is a landline or a mobile before sending, and reports the status of every message. More in how SMS OTP verification works and SMS for banking.

Troubleshooting checklist when an SMS is not delivered

  1. Check the API response: if the request was rejected, the cause is in your system, credentials or balance.
  2. Look up the message identifier and its DLR status in the console or your webhook logs.
  3. Confirm the number is in E.164 format (+52 followed by 10 digits) and that it is a mobile line.
  4. Send a test to a known active phone on the same operator to rule out a content or sender filter.
  5. Compare failures by operator and by hour to detect filtering or congestion.
  6. If the status is DELIVRD, ask the customer to check blocked senders and spam filters on the device.

How to improve deliverability: concrete actions

  • Store and validate numbers in E.164 format before sending.
  • Clean the list using the reports: numbers that fail three times in a row come off it.
  • Separate transactional from promotional traffic on different connections.
  • Use registered, consistent sender IDs; avoid switching sender between messages.
  • Mind the content: no generic URL shorteners, no excessive capitals, no artificial urgency.
  • Schedule large campaigns in windows and avoid operator peak hours.
  • Configure webhooks so you know the status in real time and can react.
  • Review by operator: if one operator concentrates the failures, talk to your provider.

Grupo Tecnophone operates with redundant routing and per-message, per-operator delivery reports, which shows exactly where each message is lost. If you are assessing your current deliverability, get in touch and we will review your case.

Sources

  • “3GPP TS 23.040: Technical realization of the Short Message Service (SMS)”, ETSI / 3GPP. Read source
  • “Todo lo que debes saber sobre la portabilidad numérica”, Comisión Reguladora de Telecomunicaciones. Read source
  • “E.164: The international public telecommunication numbering plan”, UIT-T. Read source
  • “SG.22 SMS Firewall Best Practices and Policies”, GSMA, October 14, 2019. Read source

Frequently asked questions

Need an enterprise SMS platform?

Grupo Tecnophone provides enterprise SMS messaging in Mexico, an API with sandbox and encryption, per-message delivery reports and a console for campaigns. Talk to an expert or read the developer documentation.

Scroll to Top