Most agency SMS pricing looks fine in the demo month and falls apart the month a client decides to text their entire list. You've probably felt it: a med spa client fires off a Black Friday blast to 18,000 contacts, your usage bill triples, and suddenly your tidy $99/mo "unlimited texting" add-on is losing money on a single campaign.
The billing structure you pick — per-message rebill or flat monthly fee — decides whether that spiky month is a payday or a hole in your P&L. Let's run both against the same client calendar and see which one bends and which one breaks.
Full disclosure: I work for ReadySMS, so the per-segment numbers below are ours. The point isn't to sell you a tier — it's that transparent per-segment pricing is what makes either model actually calculable. You can't defend a markup you can't do the math on.
The two models, plainly
Per-message rebill: you charge the client for each segment they send, marked up over your cost. Usage-based, so your revenue tracks their volume. A heavy month is a bigger invoice, not a bigger loss.
Flat monthly fee: you charge a fixed amount ("SMS included: $149/mo") regardless of how much they send. Predictable for the client, predictable for you — until the client's volume outruns the fee.
Both are legitimate. The mistake is picking flat-rate without a cap, or picking per-message without being transparent enough that the client trusts the line item. We've covered the trust ceiling separately in The Markup Ceiling — worth reading if you're worried about clients auditing you.
The cost floor you're building on
Before you can price either model, you need your real cost per segment. On ReadySMS that's the tier rate plus the $0.0045/segment carrier pass-through, billed separately so it's legible instead of buried:
| Tier | Monthly volume | Per segment | All-in (+ carrier) |
|---|---|---|---|
| Starter | 0–50,000 | $0.0155 | $0.0200 |
| Growth | 50,000–500,000 | $0.0125 | $0.0170 |
| Enterprise | 500,000+ | as low as $0.0028 | as low as $0.0073 |
That carrier pass-through isn't a rounding detail — it's often the thing that quietly eats a flat-fee margin. We broke down why it matters in The $0.0045 Line Item.
For the examples below I'll assume you're aggregating a few clients into the Growth tier, so your all-in cost is $0.0170/segment.
The client calendar we're testing against
Here's a realistic spiky year for a single local-business client — say a fitness studio:
- 9 "normal" months: appointment reminders, drip nurture, the occasional promo. ~2,000 segments/month.
- 2 campaign months: New Year push and a summer challenge launch. ~9,000 segments each.
- 1 monster month: Black Friday + holiday blast to the full 15,000-contact list, twice, with a 175-character message. That's a multipart SMS (153-char segments), so ~2 segments per message × 15,000 × 2 sends = 60,000 segments.
Annual total: (9 × 2,000) + (2 × 9,000) + 60,000 = 96,000 segments/year, or 8,000/month averaged. But averages lie — the whole problem is the shape, not the total.
Your annual cost at $0.0170: 96,000 × $0.0170 = $1,632.
Running the flat monthly fee
Say you priced a flat $149/mo SMS add-on. Client revenue: $1,788/year. Gross margin over your $1,632 cost: $156/year. Thin, but positive.
Now watch the monster month in isolation. That month's cost is 60,000 × $0.0170 = $1,020. You collected $149. You lost $871 on that single month and spent the rest of the year clawing it back. If the client churns in December — right after the blast — you eat the whole thing.
And here's the trap: the client who sends the monster blast is exactly the client who feels like they're getting a deal, so they lean in harder next year. Flat-rate rewards your heaviest senders with your worst margin. That's backwards.
Flat-rate only survives when you cap it. "$149/mo includes up to 5,000 segments; overage billed at $0.03/segment." That single clause turns the monster month into a $1,650+ overage invoice and protects you. Without a cap, flat-rate is a bet that your client stays quiet — and marketing clients don't stay quiet.
Running the per-message rebill
Now price per segment. Say you rebill at $0.03/segment all-in — a clean ~1.75× markup over your $0.0170 cost. (Stay under the audit line; more on defensible markup in the markup ceiling post.)
- Normal month (2,000 seg): client pays $60, your cost $34 → $26 margin.
- Campaign month (9,000 seg): client pays $270, cost $153 → $117 margin.
- Monster month (60,000 seg): client pays $1,800, cost $1,020 → $780 margin.
Annual: client pays 96,000 × $0.03 = $2,880. Your cost $1,632. Margin: $1,248 — an 8× improvement over the uncapped flat fee, and every heavy month makes you more, not less.
The monster month that lost you $871 under flat-rate now earns you $780. Same client, same sends, opposite outcome. That's the entire argument in one line.
Side-by-side on the monster month
| Flat $149/mo (no cap) | Flat + 5k cap, $0.03 overage | Per-message $0.03/seg | |
|---|---|---|---|
| Revenue that month | $149 | $149 + $1,650 = $1,799 | $1,800 |
| Your cost | $1,020 | $1,020 | $1,020 |
| Margin | –$871 | +$779 | +$780 |
The capped flat model and the per-message model land within a dollar of each other on the monster month — because a cap with overage is a per-message model wearing a flat-fee costume. The only truly dangerous option is the uncapped flat fee.
When flat-rate is still the right call
I'm not going to tell you per-message always wins. Flat-rate earns its keep when:
- Volume is genuinely predictable and low. A dentist sending only appointment reminders — a few hundred segments a month, no blasts — is safe to bill flat, and the client loves the predictability. See the appointment reminder math for that profile.
- You want a simple package to sell. "Texting included" closes deals faster than a usage meter. Just put a cap on it.
- You're bundling SMS into a larger retainer where it's a rounding error and the point is stickiness, not SMS margin.
The rule of thumb: flat-rate for clients who can't send a blast, per-message (or capped flat) for clients who can. If a client has a list bigger than ~3,000 and a marketing calendar, price the usage.
Practical setup that makes either model work
Two things have to be true before the math above holds:
- You can see per-segment cost per client. In a GHL agency setup, ReadySMS maps sends per location/sub-account, so you're not reverse-engineering a blended bill at month-end. That per-location isolation is also what makes clean client offboarding possible — see who owns the opt-in list.
- Your segment counting is honest. A 175-char message isn't one segment — it's two (or three with an emoji, since unicode drops the limit to 70 chars). If you bill flat and forget that, your monster month is quietly 2–3× worse than you modeled. Count segments the way carriers do, not the way the message looks.
If you're picking a tier as you add clients, the tier breakpoint math shows exactly where moving from Standard to Pro pricing adds margin — the crossovers matter once you're aggregating volume.
The takeaway
Pick the model that gets better when your client gets busier, not worse. That's per-message rebill, or a flat fee with a hard cap and defined overage — mechanically the same thing. The uncapped flat fee is the only structure that turns your best-performing client into your worst-margin account, and it always breaks on the month you least expect.
If you want to run these numbers against your own client mix, the cost calculator does the segment-and-tier math, and the pricing page lays out the tiers so you can set a markup you can defend when the client eventually reads the invoice line by line. Start with your two heaviest senders — they're where a billing model lives or dies.