The Sailup team · · 12 min read
Promotional vs Transactional SMS in Ghana: The Difference, and the Rules for Each
A transactional SMS is triggered by something the customer did; a promotional SMS is one you decided to send. In Ghana that decides the consent you need, the hours you can send and whether you need an opt-out line.
The difference is who triggered the message. If the customer's own action caused it (they logged in, paid, ordered, booked), it is transactional. If you decided to send it (a sale, a new branch, a greeting), it is promotional. In Ghana that one distinction decides the consent you need, the hours you may send, whether the message needs an opt-out line, and which sender ID it should come from. The price is the same either way, so the whole decision is about rules.
The one-line test
Ask: would this message exist if the customer had done nothing today?
If the answer is no, because they just paid, ordered, booked or asked for a code, it is transactional. The message is part of a transaction they started, and they are usually waiting for it.
If the answer is yes, because you chose the day, the audience and the offer, it is promotional. The NCA's Code calls these unsolicited electronic communications, and everything in it about consent, timing and opting out is aimed at them.
The test is about the trigger, not the tone. A polite promotion is still a promotion. A blunt receipt is still transactional.
Examples from Ghanaian businesses
Transactional. Each of these exists because of something the customer did, and each fits one 160-character GSM-7 segment.
A fintech app sends a login code (86 characters):
Your Sankofa Pay code is 482913. It expires in 5 minutes. Do not share it with anyone.
A receipt after a transfer (101 characters):
You sent GHS 150.00 to Adwoa Mensah (024 XXX XXXX). Fee GHS 1.50. New balance GHS 420.00. Ref TX8841.
A delivery update (94 characters):
Efua, your rider Yaw is 10 minutes away with order #2210. Have GHS 85 ready or pay in the app.
A school fee reminder (131 characters):
Reminder from Osu Prep: Term 1 fees of GHS 900 for Kwame Asante are due by 20 Sept. Pay at the bursar's office or by bank transfer.
Promotional. Each of these was your idea, so each carries an opt-out line and has to go out between 8am and 7pm, Monday to Saturday.
A flash sale (124 characters):
Adwoa Hair, Osu: 20% off all braids till 6pm today. Walk in or call 030 XXX XXXX. To opt out, WhatsApp STOP to 024 XXX XXXX.
A new branch (128 characters):
Kofi Stores has opened in Tamale, Aboabo Road. Show this SMS this week for GHS 5 off. To opt out, WhatsApp STOP to 024 XXX XXXX.
A festive greeting (119 characters):
Merry Christmas from Yaw Pharmacy. We are open 8am-8pm every day till 2 Jan. To opt out, WhatsApp STOP to 024 XXX XXXX.
The greeting is the one people argue about. Nobody asked for it, you picked the day, and it carries your brand, so it is promotional and follows the promotional rules, which among other things means not on a Sunday.
Side by side
| Rule | Promotional | Transactional |
|---|---|---|
| Trigger | You decided to send it | The customer's own action |
| Consent basis | Explicit opt-in to marketing, recorded per contact | The number was given for this transaction |
| Sending hours | 8am to 7pm, Monday to Saturday | Any time the event happens |
| Opt-out line | Required, free, in every message | Not required |
| Sender ID | Your promotional sender ID | Your transactional sender ID |
| Frequency | A few sends a month per recipient | One per event, however many events |
| Typical volume | Thousands at once | A steady trickle all day |
What the NCA rules actually say
The governing document is the NCA's Unsolicited Electronic Communications Code of Conduct, 2016. These are the clauses that matter for a business sending promotions.
- Consent. Marketing messages "shall be permission/subscription/consent based" (s11.4), and "the process by which consent is obtained will always follow an Opt-in Procedure" (s11.2). Buying or borrowing a list is ruled out twice over: "Service Providers shall not use an existing list of phone numbers, unless they have explicit consent of the subscribers to join the messaging service" (s11.6), and "lists gathered for any reason other than to specifically join specific messaging services, should not be sent UECs" (s11.7).
- Sender information. Commercial messages must carry "accurate sender information in the message ... including date and time" (s14.1) and display "the registered network operators or service providers' name or a dedicated Short Code" (s14.2). In practice your registered sender ID is that name.
- Opting out. "A means by which a Recipient may unsubscribe shall be provided for in all Commercial Electronic Communications" (s15.4), "Unsubscriptions from UECs shall be without charge" (s15.1), and the facility must be "capable of receiving unsubscribe requests at all times during a period of at least 30 days after the message is sent" (s16.1.1).
- Frequency. "Only three (3) Network Commercial Communications ... should be sent in a month (30 calendar days) ... each of them can be sent only two (2) times within the specified period" (s19.2.1). Read plainly, that is three distinct promotions a month, each repeated at most once.
- Hours. "NCCs should be sent out only from 8.00 a.m. to 7.00 p.m. daily" (s19.2.3).
- Do-not-text registers. The Code provides for them (s17), and senders are expected to purge registered numbers.
One caveat, stated once. The Code is addressed to licensees: network operators, value-added service and content providers, and their partners. The frequency and hours clauses are written about network commercial communications. In practice every bulk SMS provider in Ghana applies the window to promotional traffic, and the NCA's own consumer FAQ says the same thing to the public: "You should receive promotional messages on your phone from 8.00 a.m. to 7.00 p.m. only", "promotional messages should not be sent to you on Sundays", and opting out "is at no cost to you". The FAQ tells consumers to "send 'STOP' to the same Short Code" and to complain to [email protected] or 0307-011-419 if that fails. So the working rule for any promotion is 8am to 7pm, Monday to Saturday, opted-in recipients only, a free opt-out in every message, and no more than a few sends a month per recipient.
The STOP instruction deserves a word, because it assumes a short code that can receive replies. Sailup sends SMS and does not receive it, and it does not offer short codes, so a "Reply STOP" line on a Sailup campaign leads nowhere. Point the line at a channel you monitor (a WhatsApp number, a phone line, a keyword on a platform that can receive replies) and, when a request arrives, switch the contact's opted_in flag off. List campaigns skip opted-out contacts and count them under Opted out in the report; a number typed directly into a campaign is not checked, so keep opted-out numbers out of typed lists.
Penalties come from the Electronic Transactions Act, 2008 (Act 772) and the Electronic Communications Regulations, 2011 (L.I. 1991), and the NCA can serve enforcement notices.
None of the promotional rules apply to a transactional message. An OTP is not unsolicited, a receipt is not marketing, and a customer waiting for a delivery update at 9pm wants it at 9pm.
What Act 843 adds
The Data Protection Act, 2012 (Act 843) sits underneath the NCA Code and applies to both kinds of message. A phone number is personal data. It has to be processed with the person's consent and for the purpose it was collected, and an organisation that processes personal data is expected to register with the Data Protection Commission. Non-compliance carries fines and criminal penalties.
For transactional SMS this is straightforward: the customer gave you the number to complete a transaction, and the receipt or the code is that purpose. For promotional SMS it is a second purpose, and it needs its own consent. A number collected at checkout for delivery updates does not become a marketing list because the customer once bought something.
The practical habit is to record consent on the contact, not in your head. Every Sailup contact has an opted_in flag and an opt_in_source (API, CSV or MANUAL), so you can say, for any number, when and how the person agreed. If you cannot say that, the number belongs on your transactional side only.
The grey areas
Order ready, plus 10% off. The order notice is transactional; the discount is not. A message like this one (98 characters) is promotional as a whole:
Hi Ama, your order #1042 is ready at Kofi Stores, Adum. Show this SMS for 10% off your next visit.
That means it has to go to an opted-in contact, inside the window, with an opt-out line, from the promotional sender ID. Since the order notice has to go out the moment the order is ready, which may be 7.30pm, the honest fix is to split them. Send the notice plain (88 characters), and put the offer in a promotional campaign to people who opted in.
Hi Ama, your order #1042 is ready for pickup at Kofi Stores, Adum. Open 8am-6pm Mon-Sat.
A reminder for an appointment the customer booked is transactional. They asked for the slot, and you are helping them keep it (100 characters):
Hi Kofi, your appointment at Yaw Clinic, Tamale is tomorrow at 10am. Call 037 XXX XXXX to change it.
A payment reminder for an overdue invoice is transactional. The invoice exists, the money is owed, and the reminder is about that arrangement. The same goes for school fees, a gym membership that lapses on Friday, or a microfinance repayment due tomorrow. It turns promotional the moment you add an offer the customer did not sign up for.
A win-back to a customer who has not bought in 60 days is promotional. Nothing they did triggered it; their silence did. It needs opt-in, the window and an opt-out line like any other campaign.
Why Sailup gives you two sender IDs
Every Sailup account gets two sender IDs, one transactional and one promotional, and a third needs a reason we can accept. The limit maps onto the two rule sets. A customer who opts out of your promotions should still recognise the name on their OTP. A recipient complaint triggers a review of your traffic, and a complaint about a promotion is easier to deal with when it does not sit on the name your receipts depend on. Sailup can also withdraw an approved sender ID if the messages do not match what was registered, so registering each name with the use case and sample message you will actually send protects both.
Naming them is where people get stuck. Both names must be your brand or business name: 3 to 11 characters, letters, numbers and single spaces, at least one letter. Both have to say who you are, not what the message is about, so Results and Invoice are refused, and so are the generic authority words (ALERT, INFO, NOTICE, VERIFY, UPDATE and the rest). If you want the two to look different, the difference has to come from a name you actually trade under, such as a registered trading name or a product brand you own, and the sample message on each registration should be the kind of message that name will send. The sender ID guide has the full list of what gets rejected and why.
One thing Sailup does not do is classify the message for you. The API takes from, to and body, and there is no field for message type. The classification is yours to make, and the sender ID is where it shows.
Same price, different rules
Sailup charges ₵0.02 per 160-character GSM-7 segment to MTN, Telecel and AirtelTigo, and the rate does not change with the purpose of the message. There is no transactional tier and no promotional tier. 5,000 OTPs cost ₵100 and 5,000 flash-sale messages cost ₵100, provided both fit one segment.
Where cost does creep in is length. A promotional message carries an opt-out line, and the one in the examples above takes 42 characters, which leaves 118 for the offer. An OTP or a receipt has no such overhead. Any character outside the GSM-7 alphabet (a curly quote, an emoji, the cedi sign) drops the limit to 70 characters and can turn a one-segment promotion into two or three, which is why every example in this post writes GHS and uses straight quotes. The pricing page has the flat rate in full.
The checklist
Before a promotional send:
- Every recipient opted in to marketing, and the contact record says when and how.
- It is between 8am and 7pm, and it is not Sunday.
- The message has a free opt-out line that points at a channel you monitor, and someone is monitoring it.
- It goes from your promotional sender ID.
- This recipient has had no more than a few promotions from you this month.
- It fits one GSM-7 segment.
Before a transactional send:
- The customer's own action triggered it, and the message says only what that action needs.
- There is no offer in the body.
- It goes from your transactional sender ID.
- It is sent at the moment of the event; a login code that arrives ten minutes late is useless.
- The number was collected for this purpose.
If you are about to send your first campaign, the bulk SMS workflow walks through the steps on Sailup, and the OTP guide covers the transactional side for developers. Decide which kind each message is before you write it, and register a sender ID for each. Create an account and both registrations can go in today.
Frequently asked questions
Is an OTP a promotional or a transactional SMS?
Transactional. The customer asked to log in or pay, and the code exists only because of that action. It can be sent at any hour, needs no opt-out line, and should come from your transactional sender ID. Keep the body to the code, its expiry and a warning not to share it. The moment you add an offer, the message becomes promotional.
Can I send transactional SMS after 7pm or on a Sunday in Ghana?
Yes. The 8am to 7pm, Monday to Saturday window in the NCA's guidance applies to promotional messages. A receipt, a delivery update or a login code is triggered by the customer's own action and is expected whenever that action happens, including at night. What you cannot do is use that freedom to slip a promotion into a late message.
Does a transactional SMS need an opt-out line?
No. The NCA UEC Code requires an unsubscribe facility in commercial electronic communications, and a receipt or an OTP is not one. Leaving the line out also saves about 40 characters, which matters when you are fitting a message into one 160-character segment. Every promotional message still needs a free opt-out that points at a channel you monitor.
Is a school fee reminder promotional or transactional?
Transactional. The parent enrolled the child, the fees are owed, and the reminder is about that existing arrangement rather than an offer. The same logic covers an overdue invoice, an appointment the customer booked and a subscription about to lapse. It becomes promotional if you add anything the parent did not sign up for, such as a discount on a new after-school club.
Can I use one sender ID for both promotional and transactional SMS?
You can, but Sailup gives every account two sender IDs for a reason: one transactional and one promotional. Both must be your business name. Keeping the streams apart means a customer who opts out of promotions still trusts the name on their OTP, and a complaint about a promotion, which triggers a review of your traffic, does not land on the name your receipts depend on.
Is transactional SMS cheaper than promotional SMS in Ghana?
Not on Sailup. Every message costs ₵0.02 per 160-character GSM-7 segment on MTN, Telecel and AirtelTigo, whatever its purpose. The only thing that changes the price is the number of segments, and a promotional message with an opt-out line tends to run longer than a receipt. There is no separate transactional rate.
Send your first SMS in five minutes.
No setup fees, no contracts — pay only for what you send, and volume discounts when you scale.