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 themessageStatuswebhook payload on terminal statuses (delivered,failed, …). It is the billed amount for that single message in the agreement currency. rateandfinalCostper EDR row — returned byGET /edrs:rate— the unit price for the message under your agreement (channel + country + traffic type).finalCost— what was actually charged. For SMS this is typicallyrate × 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:
- Capture
rate/finalCostfrom each EDR into your own store. - Aggregate to compute an effective unit price per channel, country and sender.
- Reconcile against the contractual rates held with your account manager.
Related API
- API Reference → Single messages (
GET /balance,GET /edrs) - Guide: Track delivery — reading EDRs