Low SMS delivery rates? 15 reasons messages fail in Nigeria — and how to stop the waste

Why bulk SMS and OTPs fail to deliver in Nigeria — DND, ported numbers, sender IDs, routes, outages — and how the right system stops the waste.

DeliveryBy the Eudor team6 min readUpdated

You send 100,000 messages and pay for 100,000. If only 70,000 reach a phone, 30% of the budget is gone — and so is every customer who didn't get the OTP, the payment reminder or the launch announcement. Low delivery is rarely bad luck. It almost always has a cause you can find in your delivery reports and fix with better data, better routing and a better process.

This guide walks through the most common reasons SMS fails in Nigeria, what each looks like in your reports, and how a good platform and process prevent the waste.

First, read your delivery report honestly

Every message ends in one of three states. Make sure your provider shows them separately:

  • Delivered: the network confirmed the message reached the handset.
  • Failed or rejected: the network or the provider refused it, with an error code that tells you why.
  • No final report: the message was accepted by a network but no confirmation came back — still pending, or expired.

Some dashboards count “sent to the network” as “delivered”. That makes the rate look good while customers still complain. If your “delivered” figure is high but OTP complaints are rising, ask your provider how the number is calculated.

15 reasons SMS fails to deliver

The causes fall into four groups: your contact data, compliance rules, the message itself, and the networks and routes behind your provider.

Your contact data

# Reason What your report shows How to prevent it
1 Badly formatted numbers — missing 234, extra 0, spaces, 10 or 12 digits Invalid number, rejected before sending Clean and convert every number to 234XXXXXXXXXX on upload; flag wrong lengths
2 Old, inactive or recycled numbers Unknown or absent subscriber Remove numbers that fail repeatedly; refresh lists at least yearly
3 Duplicate numbers in one list Same person charged twice Remove duplicates automatically before sending
4 Ported numbers sent on the wrong network Failed or no report Detect the current network from ported-number data, not the prefix

Compliance and rules

# Reason What your report shows How to prevent it
5 Promotional message to a DND number Blocked: DND Send promotions only to opted-in customers; skip DND numbers before sending
6 Promotional wording on a transactional sender ID Blocked or filtered Keep offers on a promotional ID; keep OTPs and alerts on a transactional ID
7 Sender ID not approved on one network Fails on that network only Register sender IDs with all four networks; check status per network before a campaign
8 Sending outside permitted hours Rejected or delayed Schedule promotions for daytime; let the platform warn you
9 Recipient opted out Not sent Keep one opt-out list across all campaigns and honour STOP replies

The message itself

# Reason What your report shows How to prevent it
10 Spam-like content: lots of capitals, “win”, “free”, unknown short links Filtered by the network Write plainly; use a branded or trusted short link
11 Placeholder not filled — “Hello {name}” Delivered, but useless Check placeholders against your file's columns before sending
12 Unicode from emoji or ₦ Delivered, but costs up to 3× Write NGN; warn when a message switches to Unicode

Networks and routes

# Reason What your report shows How to prevent it
13 Phone off or out of coverage Absent subscriber, pending, then expired Retry later automatically; set a sensible validity period
14 Network outage or provider connection down Queued, no report, or failed in bulk on one network Monitor each network live and fail over to a backup route
15 Grey or low-quality routes — SIM farms, unlicensed resellers High “delivered” but customers say nothing arrived Use a licensed aggregator with direct, approved network connections

How a good system stops the waste

Most of the 15 causes can be caught by the platform before a single message is paid for, or handled automatically afterwards.

Before sending

  • Clean, convert and de-duplicate numbers on upload, and show you exactly how many were fixed, removed or invalid.
  • Look up each number's current network, including ported numbers.
  • Skip DND and opted-out numbers for promotional campaigns.
  • Offer only sender IDs approved on every network, and warn when one is still pending somewhere.
  • Check message content, placeholders and character count, and show the real cost before you confirm.

While sending

  • Route transactional and promotional traffic separately.
  • Watch every network live and switch to a backup route when one degrades.
  • Spread large campaigns over time so networks don't throttle them.

After sending

  • Retry only the failures worth retrying, such as phone off or network busy — never DND or invalid numbers.
  • Refund messages the networks rejected.
  • Report delivered, failed and no-report separately, by network and by reason, so you know what to fix next time.

What the waste costs: a worked example

A lender sends 100,000 payment reminders a month at ₦6.40 per page.

Before After clean-up and better routing
6,000 badly formatted or duplicate numbers sent and charged Fixed or removed before sending: ₦0
9,000 promotional messages to DND numbers, charged and blocked Skipped before sending: ₦0
12,000 failed during a network outage with no backup Re-routed on the backup route and delivered
Delivery rate around 73% Delivery rate above 90%

The saving is not only the cost of wasted pages: every reminder that arrives is a repayment more likely to be made on time.

Your delivery checklist

  • Numbers converted to 234 format and de-duplicated before every campaign
  • Lists refreshed and repeat failures removed at least once a year
  • Sender ID approved on MTN, Airtel, Glo and 9mobile
  • OTPs and alerts on a transactional ID; offers on a promotional ID
  • Promotions only to opted-in customers, in daytime, with “Reply STOP”
  • Delivery reports show delivered, failed and no-report separately
  • Provider monitors each network and has backup routes
  • Failed messages refunded, retryable ones retried automatically

Frequently asked questions

What is a good SMS delivery rate in Nigeria? For clean, opted-in lists on transactional routes, expect well above 90%. Promotional campaigns are usually lower because of DND and inactive numbers.

Why do my OTPs fail on one network only? Usually the sender ID isn't approved on that network, the route to it is down, or the numbers were ported away from it.

Why does my report say delivered but customers didn't receive the message? The provider may be counting “sent” as delivered, or using a grey route that returns fake confirmations. Ask for network-level delivery reports.

Should I pay for failed messages? You shouldn't pay for messages the network rejected. Check your provider's refund policy.

Eudor Innovations

Fix your delivery rate with Eudor

Eudor is an NCC-licensed aggregator with direct routes to MTN, Airtel, Glo and 9mobile. Our platform cleans your lists on upload, detects ported numbers, routes each message type correctly, fails over when a network degrades, and refunds rejected messages, with honest delivery reports by network and reason.

More guides

All guides →