Skip to content
Sendozi

SMS

Transactional vs promotional SMS in Nigeria

Transactional SMS is a message the recipient expects because of something they did; promotional SMS is a message you want them to receive. In Nigeria the distinction is operational, not cosmetic: promotional traffic is blocked for DND-active subscribers, transactional traffic travels a corporate route that is not filtered as marketing.

By SendoziUpdated 4 min read

What is the difference?

A transactional SMS exists because the recipient did something - signed up, paid, ordered, booked - and is the direct consequence of that action. A promotional SMS exists because you have something to say to them. Everything else about the two, including the price on Sendozi, is the same; what differs is the route the message travels and therefore who receives it.

Side by side
Row labelTransactionalPromotional
TriggerAn action by the recipient, or an event in their accountA decision by you
TimingImmediate and expectedChosen by the sender
ExamplesOTP, payment receipt, delivery update, appointment reminder, security alert, outage noticeOffer, discount, launch announcement, newsletter, event invitation, re-engagement
Reaches DND-active numbersYes, on the corporate routeNo - the network blocks it
Consent basisThe relationship or transaction itselfExplicit opt-in to marketing
Opt-out required in the messageNot usually - the recipient cannot opt out of a receipt they asked forYes - give a route out
Sendozi price₦7.00 per page₦7.00 per page
Sendozi fieldsms_type: "transactional"sms_type: "promotional"
Sender IDRegistered, and reviewed more closelyRegistered
Side by side

Why the classification matters

  • Delivery. A large share of Nigerian subscribers have DND active. Marketing sent to them will not arrive, whatever the platform.
  • Compliance. Marketing without consent is the thing the DND register and Nigerian data protection law both address.
  • Reputation. A sender ID that carries misdeclared traffic can be suspended, taking your legitimate OTPs down with it.
  • Diagnosis. If you cannot say which route a message used, you cannot tell a DND block from a bad number when it fails.

The grey cases

A receipt with a discount code at the end
Promotional. Attaching marketing to a service message does not make the marketing transactional; it makes the whole message promotional. Send the receipt, then send the offer separately to people who opted in.
Abandoned cart reminder
Promotional. The recipient did take an action, but the message exists to change their mind, not to inform them of an outcome.
Subscription renewal notice
Transactional. It informs the customer of a charge about to be made under an existing agreement.
'We miss you, here is 10% off'
Promotional, without qualification.
Appointment reminder for a booking they made
Transactional. It follows directly from their booking.
School fee reminder to a parent
Transactional. It relates to an existing obligation, not to an offer.
Election, religious or campaign broadcasts
Promotional in every case, regardless of how important the sender considers the content.
Service outage or maintenance notice
Transactional. It affects a service the recipient already uses.

A workable test when you are unsure: would the recipient be annoyed to be charged for the SMS if they were paying for it? If the answer is no - if the message genuinely serves them - it is likely transactional. If the answer is yes, route it as promotional and treat DND blocking as the correct outcome rather than a problem to solve.

Selecting the route on Sendozi

The same endpoint, two routes
Transactional
curl -X POST https://api.sendozi.com/v1/sms/send \
  -H "Authorization: Bearer $SENDOZI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-48291-shipped" \
  -d '{
    "sender": "Acme",
    "recipient": "+2348012345678",
    "message": "Order 48291 has shipped and arrives tomorrow. Track it at acme.ng/t/48291",
    "sms_type": "transactional"
  }'
Promotional
curl -X POST https://api.sendozi.com/v1/sms/bulk \
  -H "Authorization: Bearer $SENDOZI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: campaign-august-sale" \
  -d '{
    "sender": "Acme",
    "recipients": ["+2348012345678", "+2349012345678"],
    "message": "Acme August sale: 20% off all orders this week. Shop acme.ng. Reply is not monitored; call 0808 880 8090 to opt out.",
    "sms_type": "promotional"
  }'

Frequently asked questions

Is transactional SMS cheaper than promotional SMS?
Not on Sendozi. Both are ₦7.00 per page. The route affects which recipients the network will accept the message for, not the price.
Can I send a promotional message on the transactional route to reach DND numbers?
No. It misuses a route reserved for service messages, networks audit for it, and the likely outcome is a suspended sender ID. Route marketing as promotional and accept that DND-active subscribers will not receive it.
What happens if I do not set sms_type?
The request is rejected with 400 invalid_request. Sendozi does not default the route, because the two behave differently enough that a wrong guess is worse than an error.
Is an OTP transactional?
Yes. A one-time password is the clearest case of transactional traffic: it exists only because the recipient just tried to do something.
Do transactional messages need consent?
They need a lawful basis, which the transaction or the ongoing relationship usually supplies. That is not the same as being exempt: a phone number is still personal data under the Nigeria Data Protection Act 2023.

See how the field behaves

The SMS reference documents sms_type, the validation it enforces and the errors it returns.