The API supports:
- USDC deposits and withdrawals on Arbitrum One (
ARBITRUM_ONE) - USDT deposits and withdrawals on TRON (
TRON) - USD deposits by ACH push, wire, or FedNow
- USD withdrawals by ACH or wire
Before you start
Complete account verification and accept the QFEX terms before using the funding API. Then create an API key with:- All accounts access
- Deposit and withdraw permission
Authenticate requests
Every request requires these headers:- Generate a cryptographically secure, hex-encoded nonce of at most 100 characters.
- Read the current Unix time in seconds.
- Sign the UTF-8 string
${nonce}:${timestamp}with HMAC-SHA256, using the secret API key as the key. - Hex-encode the signature and send all four headers.
Deposit crypto
Request the deposit address for the network you intend to use:network=TRON. The response will contain "asset": "USDT" and "network": "TRON".
GET /address returns the account’s existing address or provisions one on the first call. After receiving it, submit the blockchain transfer from your wallet or custody provider. Address retrieval does not initiate a transfer.
Check the QFEX funding screen for the current minimum deposit and required
confirmation count. A deposit is credited only after it has been detected
and confirmed.
Withdraw crypto
Submit the gross amount to debit, the destination address, and the network:200 OK with an empty body. amount is the gross amount debited from the QFEX account. QFEX deducts the applicable withdrawal fees and sends the remainder; check Deposit / Withdraw in QFEX for the current fees before submitting the request.
For a TRON withdrawal, send a valid TRON address and set network to TRON. Always specify the network explicitly even though the API currently defaults to ARBITRUM_ONE when it is omitted.
A successful response means QFEX accepted and debited the withdrawal request. It does not guarantee that the on-chain transfer is already complete; a request may still be queued for submission or manual review.
Deposit USD
Fetch the required transfer reference before initiating a bank transfer:ach_push, wire, and fednow.
deposit_message exactly in the transfer’s reference, message, or note field.
Withdraw USD
USD withdrawals require a linked destination bank account. Create it once and store the returned QFEX bank-account ID.1. Link a bank account
type must be checking or savings. country is an ISO 3166-1 alpha-3 code, and state is required for US addresses. The street address must include a street number.
201 Created:
2. Request the withdrawal
amount must be at least 10. Use ach_push or wire as the withdrawal rail.
200 OK with an empty body. As with crypto withdrawals, acceptance is not final settlement and the request may require manual review. Fiat fees are deducted from the requested amount before settlement.
To remove a linked bank account, send DELETE /bank-account/{id} with a fresh set of authentication headers.
Handle errors safely
Most structured errors include
title, status, and detail; validation and provider errors may also include an errors array. Log the HTTP status and response body, but never log API secrets or full bank-account details.