Balance & pricing

Sending consumes credit from your account balance. Routeon does not expose a public per-country rate card over the API — your rates are agreed with your account manager. What the API does give you is your current balance and the actual cost of each message after it is sent.

Balance

GET /balance returns one row per agreement. A company can hold several agreements (for example one per region or per channel bundle), so pick the balance that matches the traffic you are about to send.

{
  "agreementId": 12,
  "balanceId": 34,
  "name": "Main",
  "amount": 12345.67,
  "currency": "USD"
}
Field Meaning
agreementId The agreement this balance belongs to.
balanceId Identifier of the balance ledger.
name Human-readable agreement/balance name.
amount Current available funds.
currency ISO currency of the amount.

Check the balance before a large campaign — an empty or insufficient balance causes sends to be rejected (see FAQ and errors).

What a message costs

Cost is reported after the fact, in two places:

  • Per-message cost — included in the messageStatus webhook payload on terminal statuses (delivered, failed, …). It is the billed amount for that single message in the agreement currency.
  • rate and finalCost per EDR row — returned by GET /edrs:
    • rate — the unit price for the message under your agreement (channel + country + traffic type).
    • finalCost — what was actually charged. For SMS this is typically rate × number_of_segments, based on the encoded body length (see message segmentation).

Surfacing pricing in your product

Without a rate-card endpoint, the recommended pattern is:

  1. Capture rate / finalCost from each EDR into your own store.
  2. Aggregate to compute an effective unit price per channel, country and sender.
  3. Reconcile against the contractual rates held with your account manager.