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