Skip to main content

Fiat Deposits & Withdrawals via the API

This page is for developers building their own app or website on top of the Fiat Controls you configure in Operator Controls. It covers the user-facing API only. Operators configure Fiat Controls in Operator Controls → Exchange → Treasury → Fiat Controls (see Initial Setup).

For authentication, base URLs and the full endpoint reference, see the Developer guide and the API reference.

info

Your app never moves money. Users transfer fiat outside the exchange, and an operator approves each request. Your app reads the configuration, collects the right inputs and submits the request. Call these endpoints with the user's token, never an admin key.

Read the configuration​

The public GET /kit response contains everything you need:

FieldWhat it holds
features.ultimate_fiatWhether Fiat Controls are on. If it's off, hide all fiat deposit and withdrawal UI.
user_paymentsThe payment account types (from Payment accounts) and the fields each one needs, keyed by type.
onrampPer fiat currency, the deposit methods (from On-ramp). A manual method holds the deposit details to show the user; a plugin method is handled by a payment plugin.
offrampPer fiat currency, the payment account types accepted for withdrawals (from Off-ramp).
fiat_feesYour fee overrides per currency (from Fiat Fees & Customization).
coinsPer-asset details, including type, minimum and maximum amounts and default fees.

A user's saved payment accounts are in the bank_account field of GET /user. Only verified accounts (status 3) can be used for withdrawals.

Endpoints​

TaskEndpointBody
Request a depositPOST /fiat/depositamount, transaction_id (the user's bank reference), currency, optional address (the on-ramp method)
Request a withdrawalPOST /fiat/withdrawalamount, bank_id (the ID of a verified saved account), currency
List, add, edit or delete payment accountsGET/POST/PUT/DELETE /user/payment-detailsSet is_fiat_control: true for Fiat Controls accounts

Both requests create a pending transaction that an operator must approve. Show that pending state in your app.

Rules to check before submitting​

  • The user must be verified.
  • A user can have at most 3 pending deposits, and 3 pending withdrawals, per currency.
  • The amount must be within the asset's minimum and maximum and the user's limits.
  • For withdrawals, the account must be one of the user's verified accounts of a type in offramp for that currency, and the balance must cover the amount plus the fee. Sub-accounts can't withdraw.
  • Users can't change an account's status or edit an account once it's verified. Operators verify accounts.