- Per-country rates vary because carrier termination rates differ.
- Floor is $0.004; typical range runs $0.009 to $0.035.
- Ask about number rental, registration fees, and monthly minimums.
- Failed sends auto-credit back; no charge for undelivered messages.
- Check GET /prices per destination before estimating a bulk cost.
Why do SMS API rates vary so much by country?
Each destination network charges a different termination cost to deliver a message to its subscribers, so per-country rate differences reflect real carrier costs, not arbitrary markup. A single flat headline rate is usually misleading for that reason. Termination fees are set by the receiving carrier and they differ hard by market.
High-cost destinations sit well above the sub-cent floor while dense routes stay cheap. That spread is the carrier bill, not padding. When a provider advertises one low number across the board, either the expensive countries are excluded, minimums kick in later, or traffic lands on routes that never deliver. Measure delivery reports per country and rely on automatic credits for failures so you only pay for what arrives. Check the actual per-country schedule for your destinations before you scale volume.
What's a realistic price floor and range for a cheap SMS API?
A realistic cheap SMS API has a published floor on its cheapest corridors and an honest ceiling on its expensive ones, and both ends live in the public rate card at GET /prices rather than in a sales call. The chart shows the spread by corridor tier.
A provider that headlines only its cheapest route is telling you what it wants you to hear; a provider that publishes the ceiling is telling you what your invoice will say. Price the corridors you actually send to, not the one in the banner.
What hidden costs do other 'cheap' providers add on top?
Other cheap providers layer number rental fees, business or local registration fees, monthly minimums or platform fees on the per-message rate, and refuse credit for failed sends.
Those extras turn a low sticker into a higher effective cost once volume hits, and undelivered traffic you still pay for is pure waste. Ask every provider these questions directly before you fund. The table below lists what SMSRoute charges instead.
| Cost category | SMSRoute | What 'cheap' providers often add |
|---|---|---|
| Number rental | Pay-per-message only, no rental fee | Often a separate monthly line item |
| Registration fees | None | Some require local registration fees |
| Monthly minimums | None | Some require a platform or minimum-spend fee |
| Failed-send credit | Automatic credit back | Not published by many providers |
| Report exports | GET /sms/bulk/reports plus dashboard | Varies by provider |
What happens to your cost when a message fails to deliver?
Failed messages are automatically credited back, so you pay only for traffic that left the platform toward a destination. That auto-refund mechanic is what keeps effective cost honest when routes flap or handsets are unreachable.
After a successful POST /sms/send you retrieve the result through GET /sms/single/:messageId/status. Real-time delivery reports arrive via DLR webhooks and show in the dashboard log, giving you a clear record of what landed. Before funding any API, ask whether the provider credits failed messages or charges you on every submit no matter the outcome. Unused balance is refundable to the originating wallet on request. You want low unit cost with delivery you measure; paying for dead air destroys the economics of bulk SMS.
How do you estimate real cost for a bulk send before committing?
Estimate bulk cost by checking GET /prices per destination, running POST /sms/validate pre-flight, then sending a test via POST /sms/send/bulk on free signup credits before large funding.
This order replaces a single blended guess with corridor-level rates and live delivery data. You see the true unit cost for each route before any commitment. The credits confirm handset reach and delivery with real sends on your actual destinations. Match the sample against the rate card, then fund and scale the same bulk endpoint. The estimate stays honest because it comes from measured sends rather than a sticker price.
Floor: $0.004 per message
$0.035 is the ceiling for expensive routes (AU/JP); never present as headline
Failed-send refunds: failed messages are automatically credited back, and unused balance is refundable to the originating wallet on request
# pull current rates yourself
curl https://api.smsroute.cc/prices -H "Authorization: Bearer YOUR_API_KEY"Frequently asked questions
Does a monthly minimum ever make sense?
It can, at very high fixed volume with dedicated support and SMPP binds, but a low or variable-volume sender often ends up paying for capacity they never use. Pay-per-message pricing avoids that mismatch entirely.
Is bulk pricing different from single-message pricing?
Bulk sending through POST /sms/send/bulk bills at the exact same per-country rates published for single messages. There is no separate bulk discount tier. Pull the current card from GET /prices for every destination in the batch. Each message in a mixed-country bulk job is charged its own corridor rate independently, so total cost is simply the sum of the individuals.
Does paying with crypto lower the per-message cost?
Not automatically. BTC, ETH, USDT on TRC-20 or ERC-20, XMR, LTC, SOL accepted via the deposits call is a payment preference, not a guaranteed discount. The per-message rate comes from the prices lookup regardless of how the balance was funded, so a SOL deposit buys the same unit cost as a BTC one on any given route.
Can you export cost reports for a bulk campaign?
Yes: GET /sms/bulk/reports and GET /sms-bulk/:batchid/export give a record of what a campaign actually cost, useful for reconciling against the published per-country rates. Exports apply equally to traffic submitted through the REST API or SMPP binds and break out the billed total per batch.
Does wider country coverage mean uniform pricing across countries?
No. 149 countries are covered, but the rate still varies per destination; always check the specific country's rate at GET /prices rather than assuming a blended average. Adaptive multi-route delivery with automatic failover keeps messages moving on the live path for that destination without altering the per-country rate you were quoted.