Segments & pricing

You are billed per segment, not per message. A single curly apostrophe can turn one segment into three.

The limits

EncodingSingle messageEach part when concatenated
gsm7160 characters153
ucs270 characters67

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:

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.