Settings reference
All 29 Instant Convert settings with their shipped defaults and accepted ranges, which ones need a Super Admin, which have their one editor on the core house page, and which are never served to a browser - plus the three two-factor keys that are read but have no field.
The source of truth is CONVERT_SETTINGS_DEFAULTS in
backend/src/api/(ext)/convert/utils/settings.ts, and the console's defaults are
held equal to it by a parity test. Nothing seeds the settings table: a key that
was never saved reads as its default below.
Columns. Super Admin: only a Super Admin may change it. Editor: where it is changed. Public: whether the unauthenticated platform settings endpoint serves it; hidden means server-only.
Availability and security (General tab)
| Key | Default | Accepted | Super Admin | Editor | Public |
|---|---|---|---|---|---|
convertQuotingPaused |
false |
on / off | yes | Convert console, and System → Settings | served |
convertMode |
live |
live, drain |
yes | Convert console | hidden |
convertRequire2fa |
false |
on / off | Convert console | served |
convertMode = drain closes quoting and lets hedging bring exposure to flat.
convertQuotingPaused stops every new quote and convert at once; history and the
console stay readable, and Sends and hedges already started still finish.
Pricing (Pricing tab)
| Key | Default | Accepted | Super Admin | Editor | Public |
|---|---|---|---|---|---|
convertFeeBps |
20 |
0 to 5000 bps | Convert console | served | |
convertSpreadBps |
50 |
0 to 5000 bps, above both guards below | Convert console | served | |
convertNoProviderMinSpreadBps |
100 |
0 to 5000 bps | Convert console | served | |
convertQuoteTtlSeconds |
10 |
3 to 60 seconds | Convert console | served |
Price guards (Price guards tab)
| Key | Default | Accepted | Super Admin | Editor | Public |
|---|---|---|---|---|---|
convertMaxExecDriftBps |
15 |
0 to 5000 bps, below the spread | Convert console | hidden | |
convertMaxQuoteImpactBps |
100 |
0 to 5000 bps | Convert console | hidden | |
convertReferenceProvider |
auto |
auto, or a curated venue that is not your trading provider |
Convert console | hidden | |
convertMaxRefDeviationBps |
40 |
0 to 5000 bps, below the spread | Convert console | hidden | |
convertNoProviderVenues |
auto |
auto (Binance and OKX), or two different curated venues, comma-separated |
Convert console | hidden |
Curated venues in this build: binance, okx, bybit, kucoin, bitget,
gate, mexc, kraken, coinbase, xt. When the core price feed publishes its
own list, that list is used. On the settings page auto reads
Automatic (another venue) for the reference venue and
Automatic (Binance and OKX) for the venues without an exchange provider,
whose other choice is Two venues I choose.
Limits (Limits tab)
| Key | Default | Accepted | Super Admin | Editor | Public |
|---|---|---|---|---|---|
convertMinUsd |
10 |
USD ≥ 0; 0 = no minimum | Convert console | served | |
convertMaxUsd |
10000 |
USD ≥ 0; 0 = no per-convert maximum | Convert console | served | |
convertUserDailyUsd |
50000 |
USD ≥ 0 per user per UTC day; 0 = no limit | Convert console | served | |
convertGlobalHourlyUsd |
250000 |
USD ≥ 0, all users per rolling hour; 0 = no limit | Convert console | hidden | |
convertMaxUnhedgedUsd |
25000 |
USD ≥ 0; 0 = none may be unhedged | yes | Convert console | hidden |
The minimum may not exceed a non-zero maximum. Per-asset minimum, maximum and unhedged caps are on the asset rows, not settings.
Convert & Send (Convert & Send tab)
| Key | Default | Accepted | Super Admin | Editor | Public |
|---|---|---|---|---|---|
convertSendEnabled |
false |
on / off | Convert console | served | |
convertSendRetryMinutes |
10 |
1 to 1440 minutes | Convert console | hidden |
Which currencies and chains a Send may pay on is not a setting: it is the Send chains rows under Inventory.
Hedging (Hedging tab)
| Key | Default | Accepted | Super Admin | Editor | Public |
|---|---|---|---|---|---|
convertHedgeMode |
off |
off, monitor, auto (shown as Off, Monitor only, Automatic) |
yes | house page only | hidden |
convertHedgePause |
false |
on / off | yes | house page only | hidden |
convertHedgeIntervalSeconds |
15 |
a whole number of seconds, 15 to 3600 | Convert console | hidden | |
convertHedgeThresholdUsd |
50 |
USD ≥ 0 | Convert console | hidden | |
convertMaxHedgeUsdPerOrder |
5000 |
USD ≥ 0; 0 stops hedging | yes | Convert console | hidden |
convertMaxHedgeUsdPerHour |
50000 |
USD ≥ 0; 0 stops hedging | yes | Convert console | hidden |
convertHedgeMaxSlippageBps |
100 |
0 to 5000 bps | Convert console | hidden | |
convertHedgeMaxFailures |
3 |
1 to 100 | Convert console | hidden |
The hedge job beats every 15 seconds and measures exposure each time; it plans and sends only when this many seconds have passed since the last run that did. 15, the job's own beat, is the shortest possible. The dashboard also treats a hedge snapshot as current for four intervals, at least one minute.
After this many refused hedge orders in a row, hedging of that currency pauses for one hour and then resumes on its own. The count survives the pause, so one more refusal pauses it again at once. An operator can unfreeze the currency sooner on the Hedges page.
Treasury (Treasury tab)
| Key | Default | Accepted | Super Admin | Editor | Public |
|---|---|---|---|---|---|
convertRebalanceEnabled |
false |
on / off | yes | house page only | hidden |
convertPnlSweepEnabled |
false |
on / off | yes | Convert console | served |
convertPnlSweepEnabled switches the automatic sweep only (the hourly job).
Sweep now on the P&L page works whatever it says.
Reading and writing rules
- Stored as text. An off switch is the string
"false", and every reader goes through the addon's own typed reader, never the raw value. - The reader falls back, the editor refuses. A value in the table that its rule would refuse reads as the default, never a clamped number. The Convert console and the house page refuse such a value with a sentence and store nothing.
- One editor per key. System → Settings refuses every
convert*key by name exceptconvertQuotingPaused; the Convert console refuses the three house-page keys with the path of their editor; the house page edits only those three. - Case-insensitive guards. The settings table's key collates case-insensitively, so every guard compares keys that way too.
Read, but on no screen
The optional two-factor requirement on converts reads three more keys through the platform's step-up engine. No screen writes them, and an unset key means yes:
| Key | Meaning when set to false |
|---|---|
convertTwoFactorAppAllowed |
an authenticator app does not satisfy the convert requirement |
convertTwoFactorEmailAllowed |
an email code does not satisfy it |
convertTwoFactorSmsAllowed |
an SMS code does not satisfy it |
Leave them unset unless you have a reason to narrow the methods. If two-factor is
off platform-wide, or none of the accepted methods is available, the convert
requirement is ignored and a warning is logged, so converts are not blocked. The
house page's own two-factor domain reads poolBackingHouseTwoFactor*Allowed the
same way, but it is mandatory: in that situation it refuses every action instead.