Segments & pricing
You are billed per segment, not per message. A single curly apostrophe can turn one segment into three.
The limits
| Encoding | Single message | Each part when concatenated |
|---|---|---|
gsm7 | 160 characters | 153 |
ucs2 | 70 characters | 67 |
Concatenated parts are shorter because each one carries a header saying which part it is. The handset reassembles them; the carrier bills each one.
What forces UCS-2
One character outside the GSM-03.38 alphabet, anywhere in the body. The whole message switches, and the limit drops from 160 to 70.
The usual culprits, in order of how often they catch people out:
’— the curly apostrophe. Word processors and phones insert it automatically.'is fine.“ ”— curly quotes."is fine.–and—— en and em dashes.-is fine.…— the single-character ellipsis. Three full stops are fine.- Any emoji.
A 150-character message with one curly apostrophe costs three segments, not one.150 characters in UCS-2 needs three parts of 67. That is the single most expensive typo in this business.
Characters that cost two even in GSM-7
^ { } \ [~ ] | €
They are in the extended table, which means an escape byte plus the character. Nine of them in a 155-character message makes it two segments.
Emoji count as two
Billing counts UTF-16 code units, which is what the air interface actually carries. Most emoji are outside the basic plane and take two units each, so a 35-emoji message is already two segments. A flag or a family emoji can be four units or more.
Count before you send
Every message response carries encoding, segments andprice — on the send itself, not only on the invoice, so you can see what that emoji cost the moment you added it.
The same counter runs in our dashboard, in our mobile app and on the server that bills you. It is one implementation checked against shared fixtures on both sides, so a divergence fails a build rather than reaching an invoice.
Price is a decimal string
"price": { "amount": "0.0350", "currency": "GBP" }Never a number. Parse it as a decimal and keep it as one. We hold money internally in millionths of a pound precisely so that per-segment fractions of a penny add up exactly — a million rows summed as doubles will not reconcile against our ledger, and working out why takes an afternoon.
Rejected messages are not billed
A message we refuse before spending anything — opted out, unroutable country, quiet hours — ends as rejected and costs nothing. Only messages we actually submitted to a carrier appear on the usage ledger.