Exchange rate & commission

How fiat prices are converted to crypto at invoice-create time, and how the platform commission is applied.

At invoice-create time, the platform locks two numbers:

  • exchange_rate — crypto per one fiat unit. Read from the configured rate source.
  • commission_rate — agreed with the merchant at onboarding. Applied to the fiat amount.

Both are frozen on the invoice. If the market moves during the TTL, the invoice is unaffected.

Formulas#

Given fiat_amount, exchange_rate, commission_rate:

crypto_amount     = round(fiat_amount / exchange_rate, decimals_for_crypto)
commission_amount = fiat_amount * commission_rate

Rounding uses the payment precision for the chosen crypto (8 for BTC, 6 for ETH, etc.).

Who pays the commission#

By default the merchant does — the customer is quoted the gross fiat amount; the platform settles the net on payout.

Why lock the rate#

  • Predictable customer experience: the QR code promises a specific crypto amount.
  • Predictable accounting: your reconciliation is against a frozen price, not a live one.
  • Overpaid/underpaid semantics are unambiguous: "did the received amount match the frozen crypto_amount?"

Rate source outages#

If the rate source is unavailable at create time, the API returns an error rather than guessing. Retry — do not supply your own rate. Exchange-rate integrity is part of what the platform guarantees.

See also#