Getting your vendor accounts

How to register with each liquidity vendor Swap talks to — which two keys are mandatory, which registration your revenue depends on, what the free tiers permit commercially, and how to prove each one works before you go live.

7 min readUpdated 24 August 2026providers, api-keys, registration, fees, setup, lifi, zeroex, oneinch

Swap does not hold liquidity and it has no vendor accounts of its own. The accounts are yours, registered in your name, billed to you, and governed by each vendor's own terms. This page is the order to do that in.

Nothing here is optional busywork: with no keys at all, two of the seven adapters refuse every quote, and one registration decides whether you are paid anything at all.

Buying this script buys the integration, not the API quota behind it. Every vendor below has its own signup, its own free-tier limits and its own rules about commercial use — and "commercial use" is what you are doing the moment you charge a platform fee. Read each vendor's terms yourself before you launch.

None of these vendors will tell you that you have breached a limit by failing. They keep working, and then you are invoiced, throttled, or cut off.

Do these three first

Everything else on this page is optional. These three are what separate a build that quotes from one that does not.

  1. Get a 0x key. It is the highest-priority EVM aggregator and the only one whose buy-side fee this build has an on-chain test for. Without it, 0x throws before it even makes a request.

  2. Register your LI.FI integrator for fee collection. Not the API key — the integrator registration. Skip this and LI.FI refuses every quote you make while a platform fee is set, which silently costs you three chains. See The one that costs you money.

  3. Get a TronGrid key if you enable TRON. The unauthenticated tier is below what a single swap needs. See TRON.

What each vendor needs

Vendor Sign up at Credential Without it
0x dashboard.0x.org APP_DEX_ZEROEX_API_KEY Every quote fails. Throws AUTH before the request.
1inch portal.1inch.dev APP_DEX_ONEINCH_API_KEY Every quote fails. Bearer auth on every endpoint.
LI.FI portal.li.fi APP_DEX_LIFI_INTEGRATOR (required for fees) + APP_DEX_LIFI_API_KEY (optional) Quotes work at zero fee. Refuses every fee'd quote.
Jupiter portal.jup.ag APP_DEX_JUPITER_API_KEY (optional) Works on the open lite host at a lower rate limit.
TRON trongrid.io APP_DEX_TRON_API_KEY (strongly advised) ~3 requests/second — below one swap.
TON toncenter.com APP_DEX_TON_API_KEY (advised) Works, rate-limited. Slows the confirmation sweep.
KyberSwap none Nothing to do. x-client-id is public attribution, not a secret.

Keys go in .env and never in the database. The console reports whether a variable resolves; it never returns the value. Exact names and their fallbacks are in Environment variables.

The one that costs you money

LI.FI is the only vendor here where the API key and the right to be paid are two separate things, and the failure mode is severe enough to have its own section.

LI.FI pays an integrator fee only to an integrator it has enabled fee collection for, arranged with LI.FI directly at portal.li.fi. Until that is done:

  • LI.FI rejects the whole quote with HTTP 400, code 1011, whenever the request carries a fee.
  • It does not quote at a reduced fee, and it does not quote and quietly pay you nothing.
  • So while your platform fee is above zero, LI.FI prices nothing, anywhere.

Once the integrator is registered and fee collection is enabled, the same request is answered normally. Measured on 0.1 WETH → USDC, mainnet:

fee sent LI.FI's fee line Implied rate
none 0.00025 WETH 0.25% — LI.FI's own base fee, always present
0.0030 0.00055 WETH 0.55% = 0.25% + your 0.30%
0.0100 0.00125 WETH 1.25% = 0.25% + your 1.00%

That base fee is LI.FI's, not yours, and it is present whether or not you set a platform fee. Your 0.30% is charged in addition — the user pays 0.55% in total on a route LI.FI wins. Price that in when you decide LI.FI's priority against 0x and KyberSwap, which do not levy a base fee of their own.

LI.FI reports both as a single combined LIFI Fixed Fee line, so the number you see in their response is not what you earn. Swap computes your share arithmetically instead, from the amount and your fee rate.

LI.FI is the only adapter in this build that prices Cronos, Rootstock and Celo. An unregistered integrator therefore leaves those three chains with no aggregator at all — they stay listed in your console, and every quote on them fails as though no route existed.

Your users see "no route". You see nothing, unless you read the provider health. Register the integrator, or turn those three chains off so you are not advertising a market nobody can trade.

The integrator name is yours, and you must set it

APP_DEX_LIFI_INTEGRATOR is the name you register at portal.li.fi, and it is the identity LI.FI ties fee eligibility to.

LI.FI's integrator namespace is global: one name, registered once, tied to one fee wallet on LI.FI's side. The build ships a default that belongs to the vendor of this script and is registered to the vendor's wallet.

So this is not a variable you may skip. Register your own name, put it here, and configure your own fee wallet in the LI.FI portal against that name. Note what follows from this: unlike every other adapter, LI.FI does not pay into the feeRecipient you set in Admin → Swap → Chains. That address is used by 0x, 1inch and the rest. LI.FI pays whatever wallet its portal holds for your integrator.

It is an environment variable rather than an admin-console setting on purpose: it belongs beside your API keys, not somewhere a support admin can edit. A name LI.FI does not recognise as fee-enabled fails loudly — 400, code 1011, surfaced as an authentication refusal naming the integrator — rather than quietly paying nobody.

TRON (TronGrid)

Treat the TRON key as required rather than optional, even though nothing refuses without it.

TronGrid's unauthenticated tier allows about three requests per second. Building one SunSwap swap spends four calls inside half a second — a factory lookup, two reserve reads and the transaction build. So a single user, on an idle install, with no other traffic, exceeds the limit.

The addon compensates by spacing its own unkeyed TronGrid calls to stay under the ceiling, which keeps swaps working but adds roughly a second to each build. A key removes both the spacing and the risk.

Fee registrations that are not API keys

One vendor is paid through something registered outside this console, and the swap still succeeds while you earn nothing. A second, now removed, worked the same way and is recorded here because operators upgrading will remember it.

LI.FI — integrator fee enablement

Covered above. The one that also costs you three chains.

Odos — removed

Odos took a referral code registered on chain, per chain, and a code that was never registered paid nothing forever.

Odos wound down on 30 July 2026 and its API no longer answers. The adapter has been removed from this build, and an odos row left over from an earlier release is deleted automatically on first boot. There is nothing to configure.

Prove it works before you launch

Two checks, in this order.

1. The requirements console. Admin → Swap → Requirements at /admin/dex/requirements probes each configured vendor and reports what resolves. It distinguishes three states deliberately — authentication, rate limit only, and no credential exists — so an unset optional key is not reported as a fault.

  1. Adapters switched on with no credential in the environment

2. A real quote per vendor. The console proves a key authenticates. It does not prove the vendor will price your pairs, and it cannot detect the LI.FI fee refusal, because that only appears on a request that carries a fee.

pnpm --filter e2e test:dex:vendors

This asks every adapter for a real indicative quote and a real calldata quote, and asserts the shape of both. It signs nothing and broadcasts nothing. Each venue reports its own credential state, so an unkeyed vendor reads as "unconfigured" rather than "broken".

No offline check can prove a fee actually arrives. Do one small swap on each chain you turn on, then confirm the fee in Admin → Swap → Revenue. Check it per provider — the fee side differs between vendors, and the LI.FI registration above fails without an error anywhere.