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. (RM0.20 is our standard rate; it drops automatically as your volume grows — see volume pricing tiers.)
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 | 152 chars | 1 | RM200 | RM2,000 |
| Promo, 12 characters longer | 164 chars | 2 | RM400 | RM4,000 |
| Promo with one emoji | 153 chars | 3 | RM600 | RM6,000 |
| Chinese announcement | 90 chars | 2 | RM400 | RM4,000 |
Lengths are what you type. Our upstream route adds a 4-character prefix to every message, and the segment counts above already include it.
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 (156 you can type on HantarSMS) | 153 chars |
| Unicode | Any Chinese, Tamil, emoji, or curly quote | 70 chars (66 you can type on HantarSMS) | 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. On HantarSMS there is one more case: if the upstream returns an error or the connection drops while submitting, the result is unknown and the message may already have gone out — it is charged, not refunded, and shows as not delivered in your report.
2. The route prefix. Our upstream route adds a 4-character prefix to every message, and those characters come out of your allowance: one segment holds 156 plain-English characters, or 66 if the message uses Unicode. A message measured at exactly 160 characters in a text editor bills 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, and the volume discounts are in volume pricing tiers.
Rates are quoted per segment. On HantarSMS the standard rate is RM0.20 per segment to every Malaysian network, with no monthly fee, and it drops automatically as your volume grows (down to RM0.14 from 300,000 messages). Your actual cost depends on how many segments your messages use — our upstream route adds a 4-character prefix to every message, so 156 characters of English is one segment, but anything containing a non-English character drops that to 66.
On HantarSMS, yes, automatically: the rate drops from RM0.20 to RM0.18 per segment once your account has 5,000 successfully submitted messages, then RM0.17 from 20,000, RM0.16 from 50,000, RM0.15 from 150,000 and RM0.14 from 300,000. Each order is priced at the tier you have reached when you place it, and refunded (rejected) messages do not count. The other big lever is message length: trimming a 170-character promo to 156 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. If the submission result is unknown (the upstream returned an error or the connection dropped mid-submission, so the message may have gone out), it is charged and shows as not delivered. A provider that reports one combined failure number is not giving you enough to reconcile the invoice.
The per-segment rate is identical, but on our route a Unicode segment holds 66 characters instead of 156 (after the 4-character prefix our upstream adds), so Chinese text costs roughly 2.4× 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.
RM1 trial credit (claim it on WhatsApp after signing up), and the segment count shown before you confirm anything.