Groundbase
← Back to the Pipeline
Guides

What Twilio SMS actually costs (carrier fees, A2P, and the real per-message price)

Everyone quotes Twilio's $0.0083 per message. That is not what you pay. Here is the full bill — carrier fees, number rental, A2P registration — with real numbers from my own invoices.

Every article about SMS pricing quotes the same figure: $0.0083 per message in the US.

That number is real. It is also not what you pay. On my own Twilio invoices, the all-in cost of an SMS is roughly double it, and that is before the fixed costs that show up whether you send anything or not.

This is the whole bill, in the order it hits you. I run Groundbase on BYO Twilio — customers connect their own account rather than buying credits from me — which means I have no reason to make these numbers look either better or worse than they are.

Scope: everything below assumes you are texting US numbers from a standard 10-digit Twilio number. That is the most common and the most expensive case. If you are sending only to non-US numbers, or using a toll-free number, one of the four costs below does not apply to you at all — I have flagged which.

The four things you actually pay for

Most pricing pages show you one of these. You pay all four.

1. The per-message rate. Twilio's published US rate is $0.0083 to send a standard SMS segment. This is the number everyone quotes, and on its own it is genuinely cheap.

2. Carrier pass-through fees. US mobile carriers charge a per-message fee to deliver A2P (application-to-person) traffic. Twilio collects it and passes it on as a separate line on your invoice. It varies by carrier and by message class, and it is not included in that $0.0083.

In practice, across my own sending, carrier fees roughly double the per-message cost. Call it around $0.016–0.017 all-in per segment rather than $0.0083. Your mix will differ — it depends which carriers your contacts are on, which you do not control.

3. Phone number rental. A US local number rents for about a dollar a month. Toll-free is more. This is small, but it is a fixed cost that starts the moment you buy the number and continues whether you send one message or ten thousand.

4. A2P 10DLC registration — only if you are texting US numbers. This is the one people get wrong, so it is worth being precise.

If you send SMS to US recipients from a standard 10-digit number, US carriers require you to register your business and your use case before they will reliably deliver anything. Registration cost me roughly $19.50 one-time — about $4 for brand registration, about $15 for campaign vetting on the Low-Volume Standard tier — plus an ongoing per-campaign monthly fee, usually around $10.

Volume does not get you out of it. Five messages a month or five million, if the recipient has a US number on a long code, you register.

You can skip A2P entirely if:

  • You only send to non-US recipients — A2P 10DLC is a US carrier scheme, and other countries have their own, different frameworks
  • You use a US toll-free number — toll-free has its own verification process, which is not A2P 10DLC
  • You use a US short code — separate approval path again
  • You only use Twilio Verify for one-time codes — that runs on different carrier infrastructure

On Canada specifically, since I get asked and I am in Ontario: I have bought Canadian numbers and messaged Canadian recipients without ever registering for A2P, and Twilio has never asked me to. No registration prompt, no filtering I could detect, no email. In my experience the US 10DLC flow simply did not enter into it.

Two honest caveats on that. It is my experience rather than a regulatory guarantee — carrier requirements change, and enforcement can vary with volume and message content, so if you are about to build a business on it, verify against Twilio's current docs for your route rather than my anecdote.

More importantly: not needing A2P is not the same as being allowed to text people. A2P 10DLC is a carrier delivery scheme. CASL is Canadian law about consent, and it applies whether or not any carrier asks you to register. Skipping the registration paperwork does not skip needing permission to message someone.

If any of those describe you, delete the ~$10/month line from everything below. I wrote the whole thing up separately: Twilio A2P 10DLC for solo operators, including the test for whether you need it and which registration path applies.

What that adds up to

Three realistic volumes for a one-person business, texting US numbers from one standard long code, with one registered campaign and single-segment messages:

Per monthMessagesCarrier feesNumberCampaign feeTotal
100 texts~$0.83~$0.80~$1~$10~$13
1,000 texts~$8.30~$8~$1~$10~$27
5,000 texts~$41.50~$38~$1~$10~$91

Plus the one-time ~$19.50 to register, in month one only.

The campaign fee is doing most of the work in the top row, and it is the least certain figure here — Twilio revises it, and it is per campaign rather than per account. Treat that ~$10 as the number to check first, not as settled.

The shape is the point. At low volume you are mostly paying fixed costs. At 5,000 a month the per-message cost dominates and the fixed costs stop mattering. Somewhere around 1,000–1,500 messages a month is where it flips.

And if A2P does not apply to you, the shape changes completely. Drop the ~$10 and 100 texts a month costs about $2.60 rather than $13 — the fixed floor is just the number rental, and the per-message rate is genuinely the whole story. That is the single biggest fork in this post: not how many messages you send, but whether you are texting US numbers on a long code.

Where the markup goes when a CRM bundles it

Most CRMs that offer SMS do not pass Twilio's rate through. They resell it, typically at 5–10x, because that spread is a meaningful share of their per-customer revenue.

At 5,000 messages a month, the difference between paying Twilio directly and paying a 5x marked-up rate is roughly $90 versus $200-plus. Over a year that is the cost of the CRM several times over.

I ran a credits system with a markup for a while and then killed it. The full reasoning is here, but the short version is that the markup was never the main problem — the compliance and support overhead of standing between customers and a carrier was. The pricing was just the visible part.

There is a real trade-off in BYO, and I would rather state it than pretend: you have to create a Twilio account, register for A2P yourself, and be the one who reads the error when a message fails. That is genuinely more work than clicking a button. What you get is a bill with your name on it that you can audit line by line, and a per-message cost that does not have someone else's margin in it.

The thing that quietly doubles your bill

Message segments, not messages, are the billing unit.

  • A plain GSM-7 text is 160 characters per segment.
  • Go over that and it splits, and each segment bills separately. A 200-character message is two segments — twice the cost, not 1.25x.
  • Multi-part messages actually get 153 characters per segment, because each one carries a header saying how to reassemble it.
  • Use a single emoji, curly quote, or em dash and the message switches to UCS-2 encoding: 70 characters per segment, or 67 for multi-part.

That last one catches people constantly. One 🎉 in a 90-character message takes it from one segment to two, and doubles the cost of that campaign. Smart-quote autocorrect in a copy-paste from Word does the same thing invisibly.

One more that catches scripts rather than people: an emoji occupies two units, and a carrier will not split those two units across a segment boundary. Sixty-six characters, an emoji, then sixty-six more characters is three segments, not the two that dividing by 67 predicts.

If you send templated messages at volume, counting characters is the single highest-leverage thing you can do to your SMS bill. Groundbase shows you the segment count as you type for exactly this reason.

The Groundbase composer: 179 characters counted as three segments

That message is 179 characters and costs three segments, entirely because of the em dash in the first line. Delete the dash, type a hyphen instead, and the same message is two.

I am using my own app for that screenshot partly because it got this wrong until today. The counter divided by 160 and never looked at which characters were in the box, so it reported two segments for the message above, and would have said two for a message with an emoji in it as well.

Nobody was overcharged — Groundbase does not bill for SMS, your own Twilio account does. But the number on screen was quietly telling people a message would cost less than Twilio was about to charge them for it, which is the worse direction for that particular number to be wrong in. Your CRM said two, your Twilio bill said three.

It is fixed. I mention it because the failure is the instructive kind: dividing by 160 never throws, never logs, and looks completely reasonable until you check it against an invoice.

MMS is a different rate again — meaningfully more per message — so an image is not a free upgrade to a text.

Voice, briefly

Same structure, different numbers. On my invoices, US voice runs about $0.0106 per minute for outbound calls, again before fees, and inbound is billed separately. Recording and transcription are extra if you use them.

Voice is billed per minute with rounding, so a lot of very short calls costs more than the raw minutes suggest.

How to find your real number

Do not take mine. Yours will differ by carrier mix, message length, and country.

In the Twilio Console, go to Monitor → Usage. Set the range to a full month and look at the breakdown by category rather than the headline total. You want the line items separated: outbound SMS, carrier fees, phone number rentals, campaign fees. The headline number tells you what you spent; the breakdown tells you which lever to pull.

Two things worth checking while you are in there:

  • Failed and undelivered messages. You are often billed for a message the carrier rejected. A pattern of 30007 errors means content filtering, and you are paying to be blocked.
  • Segment counts against message counts. If segments are running well above messages, your templates are too long or contain a character forcing UCS-2.

What I would tell someone starting out

If you are texting US numbers, register for A2P before you send anything serious. Unregistered traffic gets filtered, and you pay for filtered messages. If you are not — check the skip list above before spending an evening in Trusthub for no reason.

Assume your real cost is roughly double the published rate, and budget for the fixed monthly floor separately from the per-message cost — they behave completely differently as you grow.

And if you are sending under a few hundred messages a month, stop optimising the per-message rate. It is not where your money is going.

If you are weighing a CRM that bundles messaging against one that does not, the HubSpot comparison goes through what the bundled version costs at volume.

A caveat that matters: every figure here is from my own invoices and Twilio's published US rates at the time of writing. Carrier fees in particular change, and non-US rates are entirely different. Check twilio.com/sms/pricing for the current numbers before you plan around any of this — including mine.


Got a Twilio bill that does not make sense? Send me the shape of it: blog-sms-costs@groundbasecrm.com — I read every one.

Built by a solo dev. Try it.

Start your 14-day trial →

More from the Pipeline

Guides

How to warm up a new email domain (a four-week schedule, and what actually gets you filtered)

You verified the domain, the DNS is green, and your first campaign still went to spam. Warming is the missi…

Guides

When a spreadsheet stops working as a CRM (six signs it already has)

A spreadsheet is a perfectly good CRM for longer than most people admit. Here are the specific signals that…

Notes

Why Groundbase is three apps, not one

Web, Windows desktop and Android, built and maintained by one person. Here is the reasoning, the tax it cha…

Comparisons

Notion as a CRM — where it genuinely works, and where it structurally cannot

Notion is a far better CRM than people give it credit for, right up until you need it to do something rathe…