MMashDiv

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.

2 min readUpdated 30 September 2026reference, settings, defaults, super-admin, server-only

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 except convertQuotingPaused; 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.