Swapping in the app
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.
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 in | Trade | What is fixed |
|---|---|---|
| You pay | Exact input (sell) | You spend exactly that. The received amount is an estimate with a floor under it. |
| You receive | Exact 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
| Row | What it means |
|---|---|
| Rate | The implied price of this trade at this size — not a market mid. |
| Minimum received | The floor written into the transaction. Settle below it and the transaction reverts instead. This is the number that actually protects you. |
| Price impact | How 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 fee | An 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. |
| Route | Which 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.
- 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.
- 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.
- 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.
- 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 see | What it means |
|---|---|
| No route available | No venue we index can fill this pair at this size right now. Usually the size — try smaller. It is not an outage. |
| Quote unavailable | The 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 failed | It 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 wallet | You 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.