QX Admin

Sign in to the assets management console

Two-factor authentication is required for admin accounts. Scan this QR code with your authenticator app (Google Authenticator, 1Password, Authy), or enter the secret manually:

QX Admin

Dashboard Assets Networks Fees Transactions Treasury Risk Wallets Users Wallet Management Balance Management Ledger Audit Log Worker Settings Finance Visa Cards Visa Card Transactions
API Docs ↗

Dashboard

Swaps — last 14 days

Top pairs

Volume & fees by asset

Recent swaps

Assets Configuration

Assets available in the mobile app

Networks

Canonical network catalogue

Canonical chain catalogue. Core seeded networks (Ethereum, TRON, BSC, Abelian) are re-asserted on server restart, so edits to those specific rows may not persist.

Deposit / withdraw networks

Swap Fees & Limits

Transaction List

Treasury — Wallet Balances

Three treasury wallets: the Withdrawal Main Wallet (pays withdrawals and sweep gas), and the Clean / Dirty risk-sweep wallets (receive risk-routed sweeps; configured on the Risk Wallets page). Wallets and configured assets load without chain reads. Use Refresh all to read the selected wallet's live balances at once, or a single network's Refresh to read or retry that one; these values are not persisted.

Risk Wallets

The clean (low-risk) and dirty (high-risk) sweep destination wallets. Each is configured by entering its 24-word recovery phrase: the server validates it, derives the deposit addresses (EVM shared by ERC20/BEP20, and TRON), and stores only the addresses. The phrase itself is never saved anywhere — keep your offline backup; funds swept into a wallet are unrecoverable without it. After saving, verify the derived addresses match the same phrase opened in your own wallet software — the Abelian app, MetaMask, or TronLink all show these exact addresses (standard first account, m/44'/60'/0'/0/0 for EVM and m/44'/195'/0'/0/0 for TRON).

Users

Wallet Management

Deposit wallets across all users. The list is database-only: wallet balances are read on demand with the per-row Fetch balance action, and Sweep queues a single-wallet sweep through the existing sweep checks.

Balance Management

Internal balances for every user account and active asset. Pairs without a balance record show as zero without creating one; Adjust balance uses the audited manual adjustment flow.

Balance Ledger

Append-only record of every change to user balances. Each row shows the before → after for available and locked, the delta, the entry type, and the causing transaction. The sum of deltas per user/asset equals the current balance.

Audit Log

Unified history of sign-in outcomes and administrative changes.

Finance — Card Program

Card Program Settings

These database-backed values are the only source of the per-user card limit and top-up parameters — the application holds no hardcoded fallbacks. Changes to the rate, minimum, and fee apply only to future top-ups: every submitted top-up snapshots the values in force. Card-limit changes apply only to future Visa-card applications. Card applications are free: no product code, initial balance, or application fee exists.

Loading settings…

WasabiCard Settings

Wasabi is the first-line Visa issuer. This database-backed value is the only source of the Wasabi cardTypes product id used to create new virtual Visa cards — it is not read from the environment. Changes apply only to future card creations; existing cards keep the product they were issued under.

Loading settings…

Visa Cards

Every user who holds at least one Visa card, grouped by user. Expand a user to see their cards and, per card: Balance (a signed provider read), Card detail (opens the provider-hosted secure page after a password step-up — QX never sees the full number, expiry, or CVV), and Transactions (the vendor's paginated history, with per-transaction detail). The list itself is a local read; the per-card actions are the only provider calls.

Visa Card Transactions

The canonical unified Visa activity table: U9-to-Visa top-ups with their immutable snapshots and lifecycle (Reconcile stays available for pending/unknown rows) and normalized external card activity (AUTH, SETTLE, VOID, REFUND, … stay separate rows) — including valid external events for cards QX has no local record of. Card creation is not listed here. Loading, filtering, and paging read the local database only; the only provider call is the explicit Reconcile action (a status query — never a new INCREASE).

Worker Settings

Live scheduling controls for the leader worker's background loops. Changes apply within five seconds without a restart. Turning a control Off stops future iterations only — it never interrupts a poll, sweep broadcast, or withdrawal already in progress. Sensitive configuration (endpoints, keys, signers, wallet mnemonics, gas) stays environment-only and is never shown or stored here.

TRON Energy Rental

Rents TRON energy from getblock.io before TRC20 sweeps and withdrawals instead of burning TRX (mainnet only). On any rental failure the transfer automatically falls back to burning TRX — funds always keep moving. Changes apply to the next transaction without a restart. The provider API key stays environment-only (QX_TRON_ENERGY_API_KEY) and is never shown or stored here; with no key configured these toggles have no effect.

Sweep Risk Routing

Risk-based sweep routing: a sweep whose risk score is at or above the threshold goes to the dirty wallet; below it, to the clean wallet (MistTrack bands: Low 0–30, Moderate 31–70, High 71–90, Severe 91–100). The threshold is used live by the manual score entered on a Wallet Management sweep. The two toggles control the MistTrack integration (phase 2): calls are paid (~USD 1 each), so both ship off and the API key stays environment-only (QX_MISTTRACK_API_KEY). Routing requires both Risk Wallets to be configured; while it is on, unscored sweeps are skipped, never sent to the main wallet.

Native Sweep Reserves

The fee reserve, in whole coins, that each self-funded native gas-coin sweep (ETH, BNB, TRX) leaves behind on the deposit address so its transfer can always pay its own gas/bandwidth. Sweeps move min(on-chain balance − reserve, the user's credited liability), so raising a reserve sweeps less and setting one too low makes the send fail on-chain. Every reserve must be greater than 0. Changes apply to the next sweep without a restart — the scheduler picks them up within five seconds. Token (ERC-20/TRC-20) sweeps are unaffected: they are funded by the gas station, not by this reserve.