Swapping in the app

The whole flow is: connect, choose two tokens, type an amount, review, sign. What follows is what each step is actually doing, and the handful of places where the interface is telling you something that matters.

1 — Connect a wallet

Press Connect wallet in the header. Browser extension wallets are detected automatically; Coinbase Wallet and WalletConnect (which covers most mobile wallets, by QR code) are offered as well.

  • You can price a trade without connecting. A wallet is needed only to read your balances and to sign.
  • Connecting does not clear what you were doing — pair and amount survive. Disconnecting clears the trade deliberately, so a shared machine does not keep quoting someone else's.
  • Exen never asks for a seed phrase, a private key, or a “wallet validation”. Nothing on this site will ever need one. If any page claiming to be Exen asks, it is not Exen.

2 — Pick the network

The chain selector sits both in the header and on the ticket itself; they are the same setting. Choosing a chain changes the token list, the balances and the venues that can be routed through, so the pair and amount reset with it.

If your wallet is connected to a different network, the action button turns into Switch to … and asks the wallet to move. Exen reads the chain you selected here, not the one your wallet happens to be on — so a quote is never for a chain you did not choose.

3 — Choose the tokens

Press either token button to search. The list combines a verified core table — the majors, whose symbol, decimals and address are checked on-chain before they ship — with a wider catalogue from our token service, ordered by your balance first.

[ pasting an address ]

You can paste any contract address, and it will be looked up. Verify it against a source you trust before you trade: token symbols are not unique and anyone can deploy a contract calling itself USDC. A wrong address is a real, unrecoverable loss — the single most expensive mistake available in this interface.

4 — Enter an amount (and which side you type in)

Which field you type in decides the kind of trade, and the app tells the engine which one you meant:

You type inTradeWhat is fixed
You payExact input (sell)You spend exactly that. The received amount is an estimate with a floor under it.
You receiveExact output (buy)You receive exactly that or the transaction reverts. The input shown is a maximum; anything unused is returned to you in the same transaction.
  • MAX on a native token (ETH, BNB, AVAX…) deliberately leaves a small reserve behind for gas. Spending the literal whole balance leaves nothing to pay for the transaction.
  • The quote re-prices about every 10 seconds while you look at it; the ring next to the details counts that down. A moving number is the market, not the interface being unsure.

5 — Read the details

RowWhat it means
RateThe implied price of this trade at this size — not a market mid.
Minimum receivedThe floor written into the transaction. Settle below it and the transaction reverts instead. This is the number that actually protects you.
Price impactHow much value the trade loses between input and output, at our prices. A large figure on a small trade usually means thin liquidity for that pair — or a token that charges a transfer fee.
Network feeAn estimate of gas for the route. It is paid to the network, not to us, and on L2s the data-availability portion is not included.
RouteWhich venues fill the trade, and in what shape. See below.

The route views

Three pictures of the same plan — the choice is remembered:

  • Ribbons— a flow diagram. Ribbon thickness is that venue's share of the whole trade; a token box's height is its share of the flow through that column. Parallel pools of one venue merge into one ribbon marked ×N.
  • Steps — one band per step, in execution order. Best when the route is long rather than wide.
  • Share — area by venue, so even a 0.2% venue is still a labelled tile. Best when the trade fans out across many venues.

Two honesty notes the diagrams also print themselves: a token carrying too little to draw at scale is shown at a minimum height, so its box overstates it; and wrapping native into wrapped-native is drawn in neutral grey and left out of the venue legend, because it is a 1:1 conversion with no counterparty — but it is drawn at the thickness it really carries.

6 — Slippage

Slippage tolerance is the gap you will accept between the quoted output and the enforced floor. Default 0.5%. It applies to sells only — an exact-output buy has a strict target instead of a band, and the setting says so when you are in that mode.

  • Too tight and the transaction reverts on ordinary market movement. You still pay the gas for a failed transaction.
  • Too loose and you have authorised a worse fill than you expect — including one someone can deliberately arrange, by trading around yours.
  • There is no transaction-deadline setting. Your wallet broadcasts the moment you sign, so there was nothing for one to protect; the minimum-received floor is what bounds a slow fill, and the API's own 20-minute default applies.

7 — Review and sign

Review swap opens the step that matters. The numbers on it are not the ones you were watching: the app re-prices from scratch and builds the executable transaction here, because quotes are never reserved. What is on this screen is what you are signing.

  1. Approve (ERC-20 sells only). The approval is for exactly this trade's input, not an unlimited allowance — so nothing is left standing afterwards. Selling a native token needs no approval at all.
  2. After the approval lands, the transaction is rebuilt. An approval takes a block or more, and sending calldata we already know has aged would be sending something stale.
  3. Confirm swap simulates the transaction first. If it no longer executes cleanly — a pool moved, a market-maker quote expired — you get told before your wallet opens, rather than paying for a failed transaction.
  4. Sign in your wallet. The app then waits for the receipt and shows an explorer link. Closing the dialog does not cancel anything; the transaction is already with the network.

If a notice appears above the button, it is a degradation, never a broken transaction: a market-maker quote could not be firmed up and the route was re-solved across on-chain venues, or new blocks landed mid-build and the plan was recomputed against fresher state. The numbers shown are the executable ones in every case.

When something does not work

What you seeWhat it means
No route availableNo venue we index can fill this pair at this size right now. Usually the size — try smaller. It is not an outage.
Quote unavailableThe engine declined to price, most often because its view of that chain is briefly behind. It is retryable; the app keeps trying.
Insufficient …The balance does not cover the input. On a native token, remember the gas reserve MAX leaves behind.
Transaction failedIt reached the chain and reverted — usually the price moved past your floor. Nothing was swapped; the gas is spent. Re-quote and try again, or widen slippage slightly.
Rejected in walletYou dismissed the signature request. Nothing was sent.

Making the interface yours

  • Simple / Pro. Pro adds a price chart and a live route panel beside the ticket. Same engine, same prices.
  • Appearance. Four themes and six typefaces, in the header menu. It is stored in your browser and never leaves it.
  • Deep links. A URL can arrive with the trade already composed — /?sell=ETH&buy=USDC&amount=1.5&chain=base. It fills the form and nothing more; a link can never execute anything. The full contract is at /swap-for-agents.

Automating this

Everything above is one client of a public HTTP API, and you can call it directly — pricing, route breakdown and ready-to-send calldata. Continue at HTTP API.