Every provider quotes a per-SMS rate. None of them are charging per SMS. Here is how the number on the price list turns into the number on the invoice.
This is the whole trick, and it is not a trick anyone is hiding — it is just rarely explained. A price list says "RM0.20 per SMS". What is billed is RM0.20 per segment, and a single message can be one segment or five.
So the useful question is not "what is the rate", it is "how many segments will my actual messages use". Two businesses paying the identical rate can have costs differing by 3× purely from how their messages are written.
| Message | Length | Segments | × 1,000 | × 10,000 |
|---|---|---|---|---|
| OTP code | 40 chars | 1 | RM200 | RM2,000 |
| Delivery notification | 120 chars | 1 | RM200 | RM2,000 |
| Promo, tightly written | 158 chars | 1 | RM200 | RM2,000 |
| Promo, 12 characters longer | 170 chars | 2 | RM400 | RM4,000 |
| Promo with one emoji | 159 chars | 3 | RM600 | RM6,000 |
| Chinese announcement | 90 chars | 2 | RM400 | RM4,000 |
At 10,000 recipients, the gap between a tightly written promo and the same promo with an emoji is RM4,000. That is the single largest cost lever in bulk SMS, and it costs nothing to pull.
| Encoding | Triggered by | 1 segment | Each segment when split |
|---|---|---|---|
| GSM-7 | Plain English, digits, basic punctuation | 160 chars | 153 chars |
| Unicode | Any Chinese, Tamil, emoji, or curly quote | 70 chars | 67 chars |
Detail on why the allowance drops when a message is split, and which characters silently trigger Unicode, is in SMS character limits explained.
1. Undelivered messages are billable. Operators charge on submission, not on delivery. A message accepted by the network and then never delivered — phone off for days, number recycled, content filtered — is still charged. Only messages that were never submitted (invalid format, blocked content) are refundable. If a provider reports a single "failed" number rather than separating these, their invoice cannot be reconciled.
2. The operator prefix. Malaysian commercial routes prepend a short prefix to your message, and those characters come out of your allowance. A message measured at exactly 160 characters in a text editor can bill as 2 segments. Any calculator that ignores this understates your cost at exactly the boundary where it matters most.
3. Protected brand name penalties. Malaysian operators penalise messages containing protected international brand names at RM1.50 per segment — seven and a half times the message price. A 1,000-recipient promo naming one is a RM1,500 penalty on RM200 of traffic, and it typically appears weeks later on the provider's invoice.
4. Duplicates. The same number three times in your CSV is three charges. Whether you pay for that depends on whether the platform de-duplicates before quoting you or after billing you.
A provider at RM0.18 per segment with an RM200 monthly platform fee is more expensive than RM0.20 with no monthly fee until you are sending 10,000 segments a month. Below that, the headline rate is the wrong number to compare on.
| Monthly volume | RM0.20, no monthly fee | RM0.18 + RM200/month |
|---|---|---|
| 1,000 segments | RM200 | RM380 |
| 5,000 segments | RM1,000 | RM1,100 |
| 10,000 segments | RM2,000 | RM2,000 |
| 50,000 segments | RM10,000 | RM9,200 |
This is arithmetic, not a claim about any particular competitor — plug in whatever numbers you are actually quoted. The point is that for irregular or seasonal senders, a monthly fee dominates the per-segment rate, and for high steady volume it stops mattering.
Our full rate breakdown, including what is and is not billable, is on the pricing page.
Rates are quoted per segment. On HantarSMS it is RM0.20 per segment to every Malaysian network, with no monthly fee. Your actual cost depends on how many segments your messages use — 160 characters of English is one segment, but anything containing a non-English character drops that to 70.
Usually, above roughly 50,000 SMS a month, negotiated case by case. Below that the bigger lever is message length: trimming a 170-character promo to 158 characters halves its cost immediately, with no negotiation.
Messages the operator accepted but did not deliver are charged, because operators bill on submission. Messages never submitted — invalid number, blocked content — are refunded. A provider that reports one combined failure number is not giving you enough to reconcile the invoice.
The per-segment rate is identical, but a Unicode segment holds 70 characters instead of 160, so Chinese text costs roughly 2.3× more per character. This applies to any non-GSM character including Tamil, emoji and curly quotes pasted from a word processor.
There are cheaper headline rates, and they usually mean one of three things: a monthly fee that only pays back at high volume, international or grey routing with worse delivery, or delivery reports generated at submission rather than passed through from the network. Compare total monthly cost at your real volume, and test delivery on your own handset before committing.
Free trial credit, and the segment count shown before you confirm anything.