Amounts and fees
Every amount is a decimal string. Dollars for what is owed, the coin's own units for what was sent, and a rate between them.
Volume writes every amount as a string: "25.00", never 25 or 25.0. Read them as
decimals, and do arithmetic on them with integers or a decimal library, never with
floating point. 0.1 + 0.2 is not 0.3 in JavaScript, and a wallet balance is the last
place to learn that.
Three kinds of amount
| Field | Unit | Example |
|---|---|---|
amount on an invoice or checkout, amount_usd in events | US dollars, two decimals | "25.00" |
amount_due, amount_received, a payment's amount | The coin, in its own decimals | "25.000000" USDT, "0.00037314" BTC |
rate | US dollars per whole coin, when the address was issued | "1" for USDT, "67000.12" for BTC |
Coins carry their own decimals: BTC 8, USDT 6. An amount in a coin
times its rate is its value in dollars. The
Monierate guide has a tested function
that does this in whole cents with BigInt.
Invoices are in US dollars, from $0.01 up to $100,000.00, with at most two decimals.
How coins are valued
A payer who picks Bitcoin is quoted a rate when their address is issued, and asked for enough to cover the invoice at that rate. What arrives is valued at that same rate, so a price move in the next 30 minutes is Volume's to carry, not yours. Volume converts it to USDT as soon as it is credited. USDT counts as exactly one dollar.
Volume's fee
Volume's fee is taken from each payment credited to your balance: 1% unless agreed
otherwise. GET /v1/account shows your rate as fee_bps, in basis points (100 is
1%). It is rounded down, so Volume never takes more than its rate.
The fee comes out of what you receive, not out of what the payer sends. A payer asked for $25.00 pays $25.00 worth (plus their exchange's withdrawal fee, which goes to the exchange). Network and conversion costs are Volume's, out of its fee.
Your balance and payouts
Every confirmed payment credits your balance in dollars, less the fee. From there it is paid out to the bank account you add in the dashboard, in naira, as each payment arrives, or held until you withdraw. See going live.