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

# Channel charge trigger model

> The unified answer to when money leaves your wallet and when it comes back: SMS, MMS, RCS, email, and push charge on submitted; voice charges per minute after answer with a two-minute pre-hold and free busy or no-answer; Viber charges on submitted with pre-submit rejections free; fax charges on success; WhatsApp settles with Meta. Terminal failures refund through one shared pipeline.

# Channel charge trigger model

Every Orbit channel deducts spend from the same prepaid wallet, but the
event that triggers the deduction differs by channel. This page is the
unified model: which trigger charges each channel, which paths return
money, and which traffic is never billed. For the rates each trigger
applies, see [Pricing](https://orbit.devotel.io/pricing); for the wallet
and ledger mechanics behind every deduction, see
[Wallets, credits, and charges](https://docs.orbit.devotel.io/concepts/wallets-credits-and-charges.md);
for the ordered gates every send walks before money can move, see
[The outbound billing gate chain](https://docs.orbit.devotel.io/concepts/billing-gate-chain-model.md).

## The three trigger families

Every channel's charge lands in one of three families.

### Charged on submitted

SMS, MMS, RCS, email, and push charge when the handoff is accepted: the
carrier accepts the message (SMS, MMS, RCS) or the transport accepts it
(email, push). The deduction lands at send time, before delivery
completes, so your wallet reflects the spend the moment the send goes to
the wire. A later `delivered` receipt updates the message's status and
never charges again, and a send that later fails terminally is refunded
(see [When money comes back](#when-money-comes-back)).

Viber belongs to this family on both tiers. On Tier 1 (SMPP) the charge
lands when the hub accepts the submission; pre-submit rejections, such as
a sender ID not yet allow-listed in the destination market or a recipient
who is not a Viber user, cost nothing. On Tier 2 (Viber Business HTTP) the
charge follows your plan's Viber Business rates, or your own Rakuten
account when you bring one. The
[Viber termination model](https://docs.orbit.devotel.io/concepts/viber-termination-model.md) covers the
two tiers' receipt vocabulary; this page is the authority on the charge
trigger.

### Charged on answer, billed per minute (voice)

Voice is not billed at submit. When a call answers, Orbit places a
two-minute advance hold at the per-minute rate resolved for the
destination; after the call ends, the hold is reconciled against actual
answered duration, billed in 60-second increments. Busy and no-answer are
free: the hold is released back to your wallet in full when the call
never answers. The hold-then-settle shape follows the same
authorize-capture-release lifecycle as other multi-leg charges; see
[The two-phase authorize lifecycle](https://docs.orbit.devotel.io/concepts/two-phase-billing-lifecycle.md).

### Charged on success (fax)

Fax is the one delivered-family channel: a failed fax attempt costs zero
and only a successful delivery charges. Inbound faxes are likewise never
billed.

## WhatsApp is the exception

WhatsApp is the one channel Orbit never bills per message. With your own
WABA connected, Meta settles conversation fees directly with you under
Meta's pricing: the 24-hour conversation window and the free entry points
are summarized in the
[WhatsApp pricing guide](https://docs.orbit.devotel.io/guides/whatsapp/pricing.md). The only Orbit charge
on a WhatsApp send is AI-compose tokens, and only when an agent composes
the message body.

## When money comes back

Refunds are part of the delivery pipeline, not a support process:

* **Terminal DLR failure.** When a submitted message ends in `failed`,
  `undelivered`, or `rejected`, the shared DLR pipeline refunds the
  charge to your wallet. The refund credits exactly what was deducted,
  is stamped on the message row so a replayed receipt can never refund
  twice, and is scoped to the send attempt, so retrying a failed send
  charges and refunds independently of the original. See
  [the refund arm](https://docs.orbit.devotel.io/concepts/dlr-provider-webhook-fleet.md#the-refund-arm)
  for the pipeline's guarantees.
* **Voice no-answer and busy.** The pre-call hold described above is
  released back to your wallet in full.
* **WhatsApp calling recording.** Recording line items on WhatsApp
  calls refund separately from conversation fees; see
  [WhatsApp Business calling](https://docs.orbit.devotel.io/guides/whatsapp/business-calling.md).
* **Operator and support credits.** Credits Devotel issues (carrier
  recoveries, support adjustments) land in your wallet as ledger
  credits rather than as reversed charges; see
  [Wallets, credits, and charges](https://docs.orbit.devotel.io/concepts/wallets-credits-and-charges.md).

## What is never billed

* **Sandbox and test mode.** Sends under your sandbox key record zero
  cost and move no wallet balance; see
  [Sandbox model](https://docs.orbit.devotel.io/concepts/sandbox-model.md).
* **Inbound SMS.** Received SMS is free and never metered; received MMS
  and inbound voice are priced and reported for visibility but do not
  deduct from your wallet. See
  [Inbound cost metering](https://docs.orbit.devotel.io/concepts/inbound-cost-metering-model.md).
* **Pre-submit rejections.** Any send the platform refuses before
  carrier handoff (validation failures, suppressed recipients,
  insufficient balance, an active outbound pause) costs nothing.

## No double-billing

Two rules keep the ledger honest:

* **`delivered` is status, not charge.** A delivery receipt moves the
  message through its lifecycle (see
  [Message status map](https://docs.orbit.devotel.io/concepts/message-status-map.md)) and never
  re-triggers a deduction that already landed at the trigger event.
* **Retries collapse to one charge.** A retried submit under the same
  `Idempotency-Key` is charged once, and each send's internal charge key
  is deterministic, so a re-queued send cannot deduct twice.

## Per-channel reference

| Channel | Unit | Trigger | Refund path | Zero-rated cases |
| - | - | - | - | - |
| SMS | Per segment | `submitted` | Terminal DLR failure refunds | Sandbox, pre-submit rejection |
| MMS | Per message | `submitted` | Terminal DLR failure refunds | Sandbox, pre-submit rejection |
| RCS | Per message | `submitted` | Terminal DLR failure refunds | Sandbox, pre-submit rejection |
| Email | Per message | `submitted` | Terminal failure refunds | Sandbox, pre-submit rejection |
| Push | Per message | `submitted` | Terminal failure refunds | Sandbox, pre-submit rejection |
| Viber | Per message | `submitted`, both tiers | Terminal DLR failure refunds; pre-submit rejections free | Sandbox, pre-submit rejection |
| Voice | Per minute, 60s increments | Answer; two-minute pre-hold | Hold released on busy / no-answer | Sandbox, busy, no-answer |
| Fax | Per successful delivery | Success | Failed attempts never charged | Sandbox, failed attempts |
| WhatsApp | Per conversation | Meta settles directly with your WABA | Per Meta's window rules | Orbit messaging fees never apply; AI-compose tokens only |

## Related

* [The outbound billing gate chain](https://docs.orbit.devotel.io/concepts/billing-gate-chain-model.md) —
  the ordered gates every send walks before its trigger can charge.
* [The two-phase authorize lifecycle](https://docs.orbit.devotel.io/concepts/two-phase-billing-lifecycle.md) —
  the hold-capture-release shape voice billing follows.
* [Wallets, credits, and charges](https://docs.orbit.devotel.io/concepts/wallets-credits-and-charges.md) —
  the ledger every deduction and refund lands in.
* [DLR provider webhook fleet](https://docs.orbit.devotel.io/concepts/dlr-provider-webhook-fleet.md) —
  the shared pipeline whose refund arm returns money on terminal failure.
* [Viber termination model](https://docs.orbit.devotel.io/concepts/viber-termination-model.md) —
  Tier 1 SMPP and Tier 2 Business receipts and tiers.
* [WhatsApp pricing guide](https://docs.orbit.devotel.io/guides/whatsapp/pricing.md) —
  Meta conversation fees and free entry points.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.