
Bulk SMS atwholesale prices
Up to 1,000 recipients per request, on the route you choose, at its rate per segment. Do-not-contact numbers are suppressed before routing, so a blocked number is never billed.
In short
Send to up to 1,000 numbers in one request, from a numeric or alphanumeric sender.
Numbers on your do-not-contact list are skipped before routing, every message has a status you can look up, and you pay the route rate per segment rather than a retail bundle.
What you can do
- 01
Bulk sends
Up to 1,000 recipients per request and 1,600 characters per message.
- 02
Your choice of route
Pick the route each bulk send or campaign goes out on, by tier and price.
- 03
Branded sender IDs
Alphanumeric senders where the destination allows them, numeric where it does not.
- 04
Do-not-contact list
Suppressed numbers are blocked before routing and never billed.
- 05
Message history
The status of every message, by API.
From list to launch
A campaign out of the door in four steps
The route, the list, the message and the budget are all settled before the first message leaves, and nothing goes to a number on your do-not-contact list.
Pick the route
Choose an SMS route on the marketplace by destination, tier, A2P support, sender ID type and price per message, and buy it in a few clicks.
Load the list and your opt-outs
Upload your audience and duplicates and invalid numbers are set aside. Paste or upload opt-outs to your suppression list, up to 10,000 numbers at a time.
Write it and set a budget
Set the sender ID and message, or load a saved template. The form counts segments per recipient and estimates the cost, and a spend cap guards the total.
Launch and watch it run
Start the campaign from the Dialer and watch it work through the list. Pause whenever you need to, and it picks up where it left off.
Bulk sends by API
A thousand messages, one request, a line for each
Post up to 1,000 recipients to the bulk endpoint, each with its own message of up to 1,600 characters, so personalisation happens in your stack and sending happens in ours. The reply accounts for every recipient on its own line: its status, segments, cost and message ID, or the reason it was not sent. A number on your do-not-contact list costs nothing, and if your balance runs short part-way through, the remaining recipients are marked skipped, so you always know exactly where the batch stopped.
- Recipients, sent, failed and total cost at the top of every reply
- Opted-out numbers listed with their reason and a cost of $0.00
- Sent over a route you bought, at its per-segment rate
| To | Status | Segments | Cost | Detail |
|---|---|---|---|---|
| +44 7700 900118 | Sent | 1 | $0.0316 | Hi Sam, your 20% code is ready |
| +44 7700 900142 | Failed | · | $0.0000 | Opted out: on your do-not-contact list |
| +44 7700 900157 | Sent | 2 | $0.0630 | Longer offer with delivery details |
| +44 7700 900171 | Failed | 1 | $0.0000 | Refused by the route, charge reversed |
| +44 7700 900186 | Sent | 1 | $0.0316 | Hi Priya, your 20% code is ready |
SMS campaigns
Campaigns with a budget that holds
Prefer a dashboard to a script? Run the send as an SMS campaign in the Dialer, beside your voice campaigns. Pick the route, sender ID and message, and the review step shows the recipients, segments and estimated cost before you start. While it runs, you watch sent and failed counts climb against the list. A spend cap you set pauses the campaign by itself when it is reached, with a notification telling you why, and a balance that reaches zero pauses it too instead of churning through refused sends.
- Concurrency and a pause between sends to pace the campaign
- Saved message templates, reused across campaigns
- A completion email with messages sent and the spend
Pauses by itself at the spend cap, or if the balance reaches zero.
Compliance built in
Opt-outs honoured on every message, not every export
Suppression is not a spreadsheet you have to remember to re-import before each send. Your do-not-contact list is checked against every message at the moment it is sent, whether it comes from a single API send, the bulk endpoint, an SMS campaign or an SMPP bind, and platform-wide blocks apply on top. A suppressed number is turned away before it is routed or charged, so it is never messaged.
- Paste or upload up to 10,000 numbers at once, with duplicates reported
- Every entry shows its source and whether it is yours or platform-wide
- Export the list as CSV whenever an audit asks for it
- The same list protects your voice campaigns in the Dialer
| Number | Scope | Source | Added |
|---|---|---|---|
| +44 7700 900218 | Mine | Upload | 14 Sep 2026 |
| +44 7700 900377 | Mine | Manual | 12 Sep 2026 |
| +44 7700 900402 | Mine | Upload | 14 Sep 2026 |
| +1 555 0142 | Platform | Manual | 2 Sep 2026 |
- Single API sends
- Bulk API sends
- SMS campaigns
- SMPP binds
Everything a sender needs
Reach, control and proof in one place
Built for teams that send promotions, reminders and lifecycle messages at volume, and answer for every one of them.
Routes by destination
SMS routes listed per destination with their tier, A2P or P2P support, sender ID type and price per message, so reach and cost are chosen together.
Branded senders
Send from your brand name on routes that carry alphanumeric sender IDs, or from a number where the route calls for one.
Every language, priced right
Messages in any script are counted in their real encoding before sending, so a campaign in Arabic or Greek is billed on its true segment count.
Personal, per recipient
Each recipient in a bulk request carries its own text, so names, offers and links are merged in your own stack before anything is sent.
Smart Routing for one-off sends
Outside a campaign or bulk request, a single send can pick the cheapest, best quality or balanced route for its destination automatically.
A status for every message
Look up any message by ID for its status, cost and reference, or page through everything you sent by date range.
Embargoed destinations refused
Messages to embargoed destinations are rejected before routing or billing, on every API send, so a stray number in a list is stopped before it goes anywhere.
Test before you send
Run a bulk request on a test key and every message is routed, priced and simulated against sandbox credit, with nothing delivered.
Why PacketExchange
More messages out of the same budget
Marketing SMS lives or dies on cost per message and on trust. Both are designed in.
Wholesale rates, retail reach
Buy the route the way carriers do, at its listed per-segment rate, plus a fee capped at $0.001 a message. At campaign volumes, the gap between a wholesale rate and a retail bundle is your margin.
Compliance on the send path
Suppression is enforced where messages are sent, on every way into the platform, so a forgotten re-import can never message a number already on your list.
A budget that is a ceiling, not a forecast
A prepaid balance, a spend cap on each campaign and an automatic pause at zero mean a campaign pauses at the figure you set instead of running on.
SMS beside voice, on one list
SMS campaigns run in the same Dialer as voice and AI agent campaigns, share one suppression list and one balance, and report into one account.
Side by side
Bulk SMS, the usual way and this way
- Pricing
- A typical bulk SMS service: Retail bundles or credit packs, priced per message by the provider
- On PacketExchangeThe route's wholesale rate per segment, plus a fee capped at $0.001
- Opt-outs
- A typical bulk SMS service: An export, re-imported before each send
- On PacketExchangeChecked against every message at send time, on every way in
- Budget
- A typical bulk SMS service: Known once the invoice arrives
- On PacketExchangeEstimated before launch, capped per campaign, paused at a zero balance
- Routes
- A typical bulk SMS service: One undisclosed route for every destination
- On PacketExchangeChosen per destination by tier, A2P support, sender ID type and price
- Personalisation
- A typical bulk SMS service: Merge fields inside the provider's editor
- On PacketExchangeYour own text for each recipient in every bulk request
- Proof
- A typical bulk SMS service: A percentage on a dashboard
- On PacketExchangeStatus, segments and cost for every message, by API
- Channels
- A typical bulk SMS service: SMS in one tool, voice in another
- On PacketExchangeSMS, voice and AI agent campaigns in one Dialer, on one balance
| A typical bulk SMS service | On PacketExchange | |
|---|---|---|
| Pricing | Retail bundles or credit packs, priced per message by the provider | The route's wholesale rate per segment, plus a fee capped at $0.001 |
| Opt-outs | An export, re-imported before each send | Checked against every message at send time, on every way in |
| Budget | Known once the invoice arrives | Estimated before launch, capped per campaign, paused at a zero balance |
| Routes | One undisclosed route for every destination | Chosen per destination by tier, A2P support, sender ID type and price |
| Personalisation | Merge fields inside the provider's editor | Your own text for each recipient in every bulk request |
| Proof | A percentage on a dashboard | Status, segments and cost for every message, by API |
| Channels | SMS in one tool, voice in another | SMS, voice and AI agent campaigns in one Dialer, on one balance |
Built for
Who runs traffic on it
Promotions
Offers, launches and seasonal campaigns.
Lifecycle messaging
Onboarding, re-engagement and win-back flows.
Reminders
Renewals, appointments and abandoned-cart nudges.
Pricing
Pay per segment. Suppressed numbers cost nothing.
- platform fee per message
- 2%
- fee cap per message
- $0.001
- for a suppressed number
- $0
Every message is billed at the route's per-segment rate plus a platform fee of 2% of that amount, capped at $0.001 per message. For example, 10,000 one-segment messages on a $0.0310 route come to $316.20, fees included.
No monthly fee, no contract and no minimum. Top up from $5 by card or crypto or from $100 by bank wire, and put a spend cap on each campaign.
What you pay for
Route rate per segment
Listed on every SMS route before you buy it.
Platform fee
2% of the carrier cost, capped at $0.001 per message.
Suppressed numbers
Blocked before a route is chosen, so there is no charge.
Refused by the route
Charged before hand-off and reversed in full.
The campaign form shows the segments per recipient and an estimated total before you launch.
Questions
What marketing and CRM teams ask
The questions buyers ask before they start. Anything not covered here is in the help centre, or ask the team directly.
How many recipients can I send to at once?
Up to 1,000 per bulk API request, each with its own message. For bigger lists, send several requests in turn, or upload the audience to an SMS campaign in the Dialer and let it work through the list.
Do opted-out numbers cost anything?
No. A number on your do-not-contact list, or on the platform-wide list, is refused before a route is chosen, so it is neither messaged nor billed.
Is the suppression list a national do-not-contact registry?
No. It is your own list plus platform-wide blocks, enforced on all of your traffic. Consent, and any national registry checks your market requires, stay with you.
Can I send with my brand name?
Yes, on routes that carry alphanumeric senders. Each SMS route states whether it carries alphanumeric, numeric or pre-registered sender IDs, so check the route for a market before you buy.
What stops a campaign overspending?
Set a spend cap on the campaign and it pauses when spend reaches it. Every message is also paid from a prepaid balance, and running campaigns pause if that balance reaches zero.
Can I schedule a send?
Trigger sends from your own scheduler through the API at the moment you choose, or start a Dialer campaign when you are ready. A campaign can be paused at any time and resumes where it left off.
How do I see what happened to each message?
The bulk reply lists every recipient with its status and cost, and any message can be looked up later by ID or found in your history by date. Campaigns show their sent and failed counts as they run.
How much does a long message cost?
Messages over 160 GSM-7 characters split into segments of 153, and Unicode messages over 70 characters into segments of 67. You pay the route rate per segment, per recipient, and the platform fee stays capped at $0.001 per message.