Skip to main content
Nigeria’s Do Not Disturb registry is a list of numbers that have opted out of unsolicited messaging — activated by dialing 2442 on any MTN/Airtel/Glo/9mobile SIM. Sends to DND’d numbers from unwhitelisted senders are blocked at the carrier level and return dnd_blocked. Transactional SMS is allowed on DND’d numbers if the sender ID is whitelisted for that use case. This guide walks through compliance.

Am I affected?

Yes, if:
  • You’re sending to Nigerian numbers (+234…).
  • You’re sending marketing messages (promos, campaigns, offers).
  • You’re sending transactional messages with a sender ID that hasn’t been whitelisted.
If your DND block rate is above 5%, you need to act.

Categories

NCC differentiates by use case:
CategoryWhatDND implications
Full DNDUser blocks all non-urgent SMSOnly emergency + regulated transactional (banks) go through
Partial DNDUser blocks specific categoriesCategory-level filtering
Transactional whitelistYour sender ID registered for a specific use caseSends of that type bypass DND

Getting whitelisted

1

Register your sender ID

Via POST /v1/sender-ids with complete compliance metadata (see Sender IDs). The use_case field matters — be specific (“ride booking confirmations and status updates” beats “customer communications”).
2

Submit a sample message

The regulator checks your sample_message against the declared use case. Mismatch = rejection.
3

We submit to NCC

Our compliance team packages your registration and files it. Typical turnaround: 5–7 business days.
4

Test post-approval

Once status: "approved", send to a known DND’d test number and confirm sms.delivered fires.

While you wait for approval

Your sender ID works for non-DND numbers immediately (while pending). The block only applies to DND’d numbers. Handle the rejection gracefully:
try {
  await pm.sms.send({ to, from: 'MYAPP', body });
} catch (e) {
  if (e.type === 'dnd_blocked') {
    // Fallback to email + push.
    await notifyViaEmail(user.email, body);
    await sendPush(user.device_id, body);
  }
}

What gets you rejected

❌ “Customer communications” ✅ “Transactional: booking confirmations, ride arrival ETAs, and payment receipts”
If your use case says “booking confirmations” but you send “50% off this weekend!”, you’ll be suspended and face fines.
CBN, GTBANK, MTN — anything that looks like it’s from a bank, regulator, or mobile operator will be auto-rejected.
Sample shows "Promo: 50% off!" but use case says “transactional” — rejected.

Monitoring

In the dashboard, SMS → Analytics breaks down rejections by reason. Track dnd_blocked rate over time:
const carriers = await pm.sms.analytics(7);
// Filter logs for dnd_blocked:
const blocked = await pm.sms.list({ limit: 100 });
const dnd = blocked.data.filter(m => m.status === 'rejected');
A spike in DND blocks usually means one of:
  1. Your sender ID’s whitelist was revoked (compliance team will email you).
  2. A new batch landed on a list with a high DND density (audit how you sourced the list).
  3. NCC tightened criteria (we’ll notify affected customers).

Fines & enforcement

NCC can fine bulk senders up to ₦2,000,000 per violation for sending marketing messages to DND’d numbers. Keep a clear line between transactional and marketing; use separate sender IDs for each (e.g. MYAPP for transactional, MYAPP-MK for marketing) so one incident doesn’t contaminate the other.

Other countries

DND registries exist across the continent but enforcement varies:
CountryRegistryOur sender-ID handling
Nigeria2442Per-use-case whitelist
GhanaNCA DNDSender registration covers most cases
KenyaPremium Rate block listLess restrictive for transactional
Côte d’IvoireNo formal registry
For marketing sends, always include a STOP instruction at the end:
Shuttlers: Weekend 20% off! Book: shut.ng/promo. STOP to opt out.