> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Voice & Messaging Pricing and Throughput

> How Orbit prices voice and messaging, where to find live per-unit rates, and the throughput controls you can tune per messaging service, per number, and per API key.

# 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**.

<Note>
  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.
</Note>

***

## 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:

| Channel  | Billed per  | Notes                                                                                                                                                           |
| -------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Voice    | minute      | Metered per minute of call time.                                                                                                                                |
| SMS      | **segment** | A long message splits into multiple billable segments — see [SMS segments](#sms-segments-what-you-actually-pay-for).                                            |
| MMS      | message     | Per outbound message.                                                                                                                                           |
| RCS      | message     | Per outbound message.                                                                                                                                           |
| Viber    | message     | Per outbound message.                                                                                                                                           |
| Email    | message     | Per outbound message.                                                                                                                                           |
| Fax      | page        | Metered per transmitted page.                                                                                                                                   |
| WhatsApp | —           | **Free on Orbit.** Meta bills your WhatsApp Business Account directly for conversations — Orbit takes no cut. See [WhatsApp Pricing](/guides/whatsapp/pricing). |

Other bring-your-own-credential channels (Instagram, Messenger, Telegram,
LINE, push, web chat) are not billed by Orbit either.

### Where to find your rates

| Surface                                                      | What it shows                                                                                                                                               |
| ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [orbit.devotel.io/pricing](https://orbit.devotel.io/pricing) | The published per-channel rate card and an interactive calculator.                                                                                          |
| `orbit.devotel.io/pricing/sms/<country>`                     | Per-country SMS pricing — for example `/pricing/sms/us` or `/pricing/sms/gb`. Where a country's price depends on the mobile operator, the page says so.     |
| `GET /api/v1/public/pricing`                                 | The published price list as JSON — no authentication required. Pass `?country=US` for a country-specific list. Use this to quote rates in your own tooling. |
| **Dashboard → Billing → Your Pricing**                       | A read-only rate sheet of *your* effective per-unit price by channel, including any negotiated per-organization rate (flagged with a "Custom rate" badge).  |
| **Dashboard → Billing → What-if pricing simulator**          | Replays your recent traffic through the same engine that prices your invoice, so you can model a rate change before committing.                             |

```bash theme={null}
# Fetch the published US price list — no API key needed.
curl "https://api.orbit.devotel.io/api/v1/public/pricing?country=US"
```

### 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](/guides/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.

```javascript theme={null}
async function sendWithRetry(params, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    try {
      return await orbit.messages.send(params)
    } catch (error) {
      if (error.status === 429 && attempt < maxRetries - 1) {
        const retryAfter = error.retry_after ?? Math.pow(2, attempt)
        await new Promise((r) => setTimeout(r, retryAfter * 1000))
        continue
      }
      throw error
    }
  }
}
```

### 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](mailto: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

<Accordion title="How much does an SMS or voice minute cost on Orbit?">
  Rates are published per channel and per country on
  [orbit.devotel.io/pricing](https://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.
</Accordion>

<Accordion title="Does Orbit charge per message or per SMS segment?">
  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.
</Accordion>

<Accordion title="Are there plan tiers, contracts, or minimums?">
  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.
</Accordion>

<Accordion title="How many messages per second can I send?">
  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.
</Accordion>

<Accordion title="Why did a send come back with 429 and Retry-After: 1?">
  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.
</Accordion>

<Accordion title="Is WhatsApp billed by Orbit?">
  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](/guides/whatsapp/pricing).
</Accordion>

<Accordion title="How do I increase my throughput?">
  Raise the MPS cap on your messaging service or number yourself. For a higher
  API request rate limit, email [support@devotel.io](mailto:support@devotel.io) with the endpoints and
  sustained rate you need — it is granted as a per-organization override, not a
  plan upgrade.
</Accordion>
