Skip to main content
Billing

Balances

Each tenant has a balance, a credit limit and a reserved amount. Reserved is credit held against calls in progress — money not yet spent but no longer available, which is what stops a prepaid tenant starting more calls than their balance can finish.

Prepaid cut-off

A credit check runs before a call is placed. A tenant out of credit is refused at origination rather than discovered mid-call, and the refusal carries a reason. The caller hears the reason too: “Your balance is not enough to make this call” when credit or a team budget has run out, and “Calls to this destination are not allowed on your account” when the rate card has no price for the number. Each organisation can replace either with its own recording; see refusal announcements.

Settlement is idempotent

A call is settled exactly once. A replayed hangup — which happens — does not bill twice.

AI is separate

Minutes and tokens are rated on different cards and appear separately. The “charged” figure on a call record is telephony only; a call answered by a virtual agent has its AI cost alongside, not folded in.

Exchange rates

A carrier charges in its currency; you bill an organisation in yours. Billing → Exchange rates is what joins them, so that a call’s margin is a real number and not dollars subtracted from rupees. Enter one direction — 1 USD = 83.2 INR — and the other is worked out from it.
  • A rate is added, never edited. When it changes, add a new one. The rate in force when a call ends is written on that call, beside what the carrier charged in its own money, so entering this month’s rate cannot move last month’s margin. Old rates stay listed: they are the record of what past calls were converted at.
  • A rate dated in the future waits its turn. In force marks the one a call ending now would use.
  • The charge is converted, not the price. Minimums and increments are the carrier’s arithmetic and are done in the carrier’s currency first.
On a call record: currency is what the sale, the cost and the margin are all in; cost_currency, cost_amount_original and fx_rate are what the carrier charged, in what, and the rate that turned it into cost_amount.
With no rate for a pair, a call’s cost cannot be converted. The carrier’s figure is kept, the call is marked cost_unconverted, the log says so at error level, and the calls list shows that margin as ? — never as a number, because it would be one currency subtracted from another. Add the rate; calls from then on convert. Importing a price list tells you about a missing pair before anything is written.

Withheld is not zero

Where a reader may not see cost or margin, FireTone omits it and the panel draws it as withheld. It never substitutes zero. A zero here would read as “this call cost us nothing”, which would be a false statement about the business rather than a missing one.