• 228 destinations
  • No KYC, ever
  • Bitcoin, Monero, USDT and 4 more

Transactional traffic

Order and account notifications,
one API call per event.

Your system knows when an order ships or a payment clears. One POST turns that event into a text on the customer's phone, priced in the response and confirmed by webhook.

01In short

For transactional notifications, send one POST /v1/messages per event from your back end, tag it with a campaign such as shipping and your own reference such as the order number, and flag it transactional so it is not held by quiet hours. Delivery events come back on your webhook with the same reference, so your order system can record that the customer was told.

Recommended settings

Traffic type
Transactional
API call
POST /v1/messages per event, or /batch for nightly runs
Tracing
reference echoed in responses and webhooks
Grouping
campaign tag per notification type
Length
One or two segments; own-domain link if any
History
Per-message reports kept 90 days

02How it works here

From nothing to delivered, in 4 moves.

  1. 01Hook the event

    Where your system marks an order as shipped or a payment as received, add the API call. Use the order number as reference and in the idempotency key.

  2. 02Write the text once

    Brand, fact, next step. "ACME: order 4821 has shipped. Track it: acme.com/t/8fK2". Keep it in one GSM-7 segment.

  3. 03Record the outcome

    Store delivered or failed against the order. A failed notice with an unknown number is a customer-data problem worth surfacing.

  4. 04Review by type

    The campaign tag groups shipping, receipts and alerts in reports, so a drop in one type is visible.

03What matters

What belongs in a transactional text

A notification is transactional when the customer expects it because of something they did. It states a fact and, at most, points to where the detail is. The moment it carries an offer, it is marketing, needs consent and quiet hours, and risks the route if it was flagged transactional. Keep the two streams apart: separate templates, separate campaign tags.

Use a link on your own domain. Public shorteners are the most filtered pattern in SMS and hide the brand the customer is looking for.

04In practice

Reliability from your side

Send with an Idempotency-Key derived from the event, for example order-4821-shipped. If your job crashes and reruns, the API returns the original response and the customer gets one text, not two. Retry 429 and 5xx responses with backoff; never retry other 4xx, fix them.

For nightly runs such as payment reminders, the batch endpoint takes 1,000 messages per API request and lists each rejected row with its reason, so one bad number does not fail the run.

05What it costs

5,000 messages, priced per destination.

One segment each at today's published rates. The same unit price applies to one message or a million; there is no plan, no setup fee and no monthly fee.

Rate card last updated 22 September 2026

DestinationRate per SMS5,000 messages
United States$0.0084$42.00
United Kingdom$0.0130$65.00
Germany$0.0238$119.00
France$0.0205$102.50
Brazil$0.0042$21.00
India$0.0256$128.00

Other destinations: cost calculator

06A message that works

What it looks like on the phone, and in the request.

A fact, a date and an own-domain link, in one segment.

ACMETransactional message
ACME: order 4821 has shipped and arrives Thursday. Track it: acme.com/t/8fK2
76 characters1 segment, GSM-7
cURLPOST /v1/messages
curl https://api.smsmeteor.com/v1/messages \
  -H "Authorization: Bearer $SMSMETEOR_KEY" \
  -H "Idempotency-Key: order-4821-shipped" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+447700900123",
    "from": "ACME",
    "text": "ACME: order 4821 has shipped and arrives Thursday. Track it: acme.com/t/8fK2",
    "window": { "quiet_hours": "bypass" },
    "campaign": "shipping",
    "reference": "order-4821"
  }'

07Pitfalls

Three mistakes we see, and how to avoid them.

  • An offer inside a receipt

    That converts the message into marketing. Keep promotions in their own campaign with consent and quiet hours.

  • Public link shorteners

    Filtered more than any other pattern. A short path on your own domain costs the same characters.

  • No reference on the message

    Without it, a delivery event cannot be matched to the order that caused it.

09Questions, answered

Order, payment and account notifications: questions, answered.

Do transactional notifications need opt-in consent?

They follow from the customer relationship: an order confirmation or a security alert does not need marketing consent. Adding promotional content changes that, so keep notices purely informational.

Can notifications go out at night?

Yes, with the transactional flag (window.quiet_hours set to bypass). Use it only for messages the customer expects; promotional content sent this way is a violation of the acceptable use policy.

How do I know the customer received the message?

Register a webhook: message.delivered and message.failed events carry your reference and, on failure, the carrier reason. Where operators return only acknowledgement, sent is the final positive state and the country page says so.

What if the same event is processed twice?

Send the same Idempotency-Key and the API returns the original response without sending again, for 24 hours.

Can I send notifications to several countries from one integration?

Yes. The destination is resolved from the number, priced at that country's published rate, and given the sender its rules allow. Nothing changes in your code.

Is there a minimum volume?

No. One notification costs one message at the published rate. There is no monthly fee and no contract.