Skip to main content

Voice & Messaging Pricing and Throughput

Orbit has one pricing model for every account: transparent, usage-based, pay-as-you-go. There are no Starter/Growth/Business/Enterprise plan tiers, no “contact sales” gate to see a number, and no forced migrations to a new model later. You pay the published per-unit rate for what you actually send, drawn from a prepaid credit balance. This guide answers the two questions that come up when you scope a build: what does it cost, and how fast can I send.
Per-unit rates change as carrier and operator costs change, so this guide does not hard-code prices. The live source of truth is the pricing page and the public pricing API below — always price against those, not a number copied into a doc.

How pricing works

Billing is prepaid. You fund a credit balance and each send draws it down at the published per-unit rate. Because there is no postpaid invoice, your spend is bounded by the balance you fund — there is no net-30 term, no carrier-passthrough overage, and no surprise statement at the end of the month.
  • No contracts, no lock-in. No multi-year commitment, no automatic renewal, and no early-termination fee. Stop sending and you stop paying.
  • No monthly platform fee and no minimums. You are billed for usage only.
  • Prepaid credit does not expire.
  • Operator-level rates. Prices reflect the underlying carrier/operator cost for each destination rather than a flat retail markup.

What each channel is billed on

The billing unit differs by channel. This is the part people most often get wrong when comparing platforms, so it is worth being precise: Other bring-your-own-credential channels (Instagram, Messenger, Telegram, LINE, push, web chat) are not billed by Orbit either.

Where to find your rates

No bill shock

Because the model is prepaid, spend is bounded by design. On top of that floor you get a server-side spend cap that holds the line, real-time balance burn-down, and spend alerts, so you see spend as it happens rather than weeks later. Configure alerts under Dashboard → Billing.

SMS segments — what you actually pay for

SMS is metered per segment, not per whole message. A carrier splits a message body into fixed-length segments and bills each one:
  • A GSM-7 (plain-text) body splits every 160 characters.
  • A UCS-2 (unicode — emoji, many non-Latin scripts) body splits every 70 characters.
So a 300-character GSM-7 message is billed as 2 segments, and a single emoji anywhere in the body switches the whole message to UCS-2, shrinking the per-segment length to 70. Keep marketing copy in the GSM-7 character set to avoid paying for extra segments. The pricing page, the compose dialog, and the public pricing API all quote SMS per segment for this reason.

Throughput

Throughput on Orbit is governed by three independent, tenant-side controls. Each shapes your own send rate; none of them changes where traffic terminates. All limits apply uniformly to every account by default — there are no per-plan throughput tiers — and any of them can be raised for your organization on request.

1. API rate limits (requests per minute)

Every endpoint has a per-minute request limit applied per API key, plus a global safety-net ceiling of 50 requests per second across all endpoints. Exceeding a limit returns 429 Too Many Requests with the RATE_LIMITED error code and a retry_after value. See the Rate Limits guide for the full per-endpoint table and retry patterns.

2. Per-messaging-service throughput cap (MPS)

A messaging service bundles your senders, opt-out handling, and inbound webhook. You can pin a maximum messages-per-second (MPS) rate on each messaging service so a burst never runs faster than you intend — the same knob Twilio, Sinch, and Bird expose on a messaging service.
  • Set it in Dashboard → Messaging → Services, or via the API on the service’s throughput setting. Valid range is 1–1000 MPS.
  • Leaving it unset means unbounded (the default) — existing services are unaffected.
  • A send that would exceed the cap in the current second returns 429 Too Many Requests with Retry-After: 1. Wait one second and retry.

3. Per-number throughput cap (MPS)

You can also pin a per-second ceiling on an individual number, independent of the messaging-service cap. This contains blast radius: a runaway loop or a mis-scheduled blast can only saturate the one number it targets, not your whole pool.
  • Set it on the number under Dashboard → Numbers (or via PUT on the number). Absent or 0 means no per-number cap.
  • Like the service cap, a send over the ceiling returns 429 with Retry-After: 1.

Handling a 429

Whichever limit you hit, the handling is the same: honour the Retry-After / retry_after value, back off, and retry. For sustained high volume, queue and send in controlled batches, and subscribe to status webhooks instead of polling.

Requesting more throughput

The defaults above suit most integrations. If you need a higher sustained rate, raise your messaging-service or per-number cap yourself, and email support@devotel.io for a per-organization increase to the API rate limits. There is no plan to upgrade to — limits are raised with a per-organization override.

FAQ

Rates are published per channel and per country on orbit.devotel.io/pricing and returned by GET /api/v1/public/pricing. They are usage-based, pay-as-you-go, and the same for every account (before any negotiated per-organization rate). SMS is priced per segment and voice per minute.
Per segment. A GSM-7 body splits every 160 characters and a unicode (UCS-2) body every 70, so a long or emoji-containing message costs more than one segment. Quoting per segment matches how the carrier bills.
No. There is a single pay-as-you-go model with no plan tiers, no contract or lock-in, no auto-renewal, no early-termination fee, no monthly platform fee, and no minimums. Credit is prepaid and does not expire.
By default there is no per-message-per-second cap — throughput is bounded only by the API request rate limits (per-endpoint per-minute plus a 50 req/sec global ceiling). You can additionally pin a messages-per-second (MPS) cap on a messaging service (1–1000) or on an individual number to throttle bursts.
You hit a messaging-service or per-number MPS cap for the current second. Wait the one second indicated by Retry-After and retry — the throttle resets every second.
No. Orbit is a WhatsApp Tech Provider, so Meta bills your WhatsApp Business Account directly for conversations and Orbit’s WhatsApp features are free. See WhatsApp Pricing.
Raise the MPS cap on your messaging service or number yourself. For a higher API request rate limit, email support@devotel.io with the endpoints and sustained rate you need — it is granted as a per-organization override, not a plan upgrade.