How cross-chain swaps work — 4 simple steps
Non-custodial · No sign-up · No wallet connection · No KYC
The 4-step flow at a glance
UpSwap strips cross-chain swapping down to the essentials: no browser extension to install, no account to register, no connecting your wallet to any website. The whole process is 4 steps, and from opening the page to assets arriving usually takes just 1-10 minutes.
- Step 1 · Pick coins and amount: in the widget, choose the source chain and coin, the destination chain and coin, and enter the amount you want to swap. The widget shows the final "You receive" amount in real time.
- Step 2 · Enter the receiving address: enter the wallet address where you want to receive the asset. We validate the address format (EVM / Solana / Bitcoin formats, for example), but never look up your balance or identity on-chain.
- Step 3 · Send to the one-time deposit address: once you confirm the quote, the system generates a one-time deposit address. Just send the tokens from your own wallet.
- Step 4 · Wait for arrival: after you send, the page automatically polls the order status: pending → received → processing → success. The asset usually reaches your receiving address within 1-10 minutes.
Throughout the entire process, UpSwap never asks you to connect a wallet, sign an authorization, or provide an email or phone number.
Why "non-custodial"
"Non-custodial" comes down to one thing: UpSwap never touches your assets. We don't open accounts, hold balances, or keep your private keys. You do exactly one thing — send from your own wallet to the one-time address we give you, then wait for the result.
- No wallet connection: no MetaMask / Phantom connection pop-ups
- No approve step: no "Allow this site to spend your USDC" contract approvals
- No signatures: no EIP-712 / personal_sign prompts
- No sign-up: no email, password, KYC, or Google Authenticator
Compare this with connect-wallet swaps (Uniswap, 1inch, and the like): those DEXs require you to approve a contract before it can move your tokens. Use them long enough and your wallet accumulates dozens or even hundreds of standing approvals. If any one of those contracts is exploited or turns malicious, it could in theory drain your assets — a persistent attack surface.
UpSwap's model is entirely different: one send, order done, no persistent attack surface whatsoever. Your wallet never approves any UpSwap-related contract. Want to swap again? Open a new order — every swap is independent.
All-in fixed quote — what you see is what you get
The "You receive" amount shown in the widget = the exact amount that lands in your wallet. The quote-matching engine has already run the auction across multiple routing networks, and the winning quote includes every execution cost (spread, routing fees, destination-chain gas, bridge gas, all intermediate fees). Beyond the quote, UpSwap will not take a single cent more from you.
In other words, you will never run into any of these:
- ❌ "Show you a great rate first, then shrink the settled amount with gas deductions"
- ❌ "Receive your coins, then ask for a withdrawal fee"
- ❌ "Rate A on the quote page, B on the confirmation page, C on arrival"
The only exception: when you send from your own wallet, the wallet pays a source-chain gas fee (ETH gas, SOL fee, and so on). That's the chain fee every on-chain transfer pays — it goes to the network, not to UpSwap. You'd pay the same sending to a friend.
For the full fee breakdown, see /fees.
How routing networks compete for your order
The "best rate" you see is actually the outcome of an auction. The moment you enter an amount, UpSwap sends a request for quote (RFQ) to multiple upstream liquidity vendors at once.
- Broadcast the RFQ: the request "swap amount Z of coin A on chain X for coin B on chain Y" goes out to every vendor in the routing network simultaneously
- Collect quotes: each vendor returns "how much B the user would finally receive through us" — their own fees, spread, and gas already transparently deducted
- Compare net receipts: the system ranks by the amount the user actually receives — not the nominal rate, only the final settled number
- Pick the winner: the best currently available result is shown to you, and once the order is confirmed it is automatically routed to the winning vendor for execution
From your side: you don't need to know which vendor is executing the order, and you don't need to compare prices across DEXs and bridges by hand. We make the optimal choice for you — what you see is the best result the market can offer right now.
Quote validity
Crypto prices move by the second, so every quote comes with an expiry.
- Validity is typically 30-300 seconds, depending on the route (shorter for stablecoin short paths, longer for major-coin long paths)
- Complete your send before the countdown hits zero and the current quote is locked in
- If it times out: the system automatically refreshes to a new quote — no manual page reload needed
- If the rate moves more than 1%: a confirmation dialog appears so you can decide whether to accept the new rate — protecting you from a silent rate jump
Tip: finish your transfer while at least 1/3 of the countdown remains, leaving headroom for on-chain confirmation. If the quote expires right as you send, UpSwap still settles at the most recent valid quote, though extreme market moves may trigger the system's slippage protection.
State machine: the full order lifecycle
Every order moves through a clear set of states. You can always see where it stands on the order page.
- pending: order created, deposit address generated, waiting for your transfer
- received: your transfer has been detected on-chain (required confirmations reached)
- processing: the routing network is executing the cross-chain swap
- success: the destination asset has been sent to your receiving address; order complete
Exception branches:
- expired: you didn't transfer within the quote's validity window → the order is auto-cancelled. Your funds never left your wallet, so there is nothing to refund — just place a new order.
- refunded: the route hit a problem mid-execution (very rare) and funds were returned along the original path to your sending address
- failed: a rare system-level failure that automatically triggers the refund flow or manual intervention
"expired" is the most common non-success state, but it isn't an error — you simply didn't complete the transfer within the quote window. Your funds never moved, so there's nothing to worry about.
Order history in localStorage
Since we don't have accounts, "order history" works in a privacy-friendly way too: it lives right in your browser.
- Your 5 most recent orderIds are stored in your browser's localStorage
- Close the tab, close the browser, come back half an hour or even days later — the order list is still there
- The data exists only on this device, in this browser; UpSwap's servers never store a device-to-order mapping
- To look up an order's details, visit /track/[orderId] or just click the entry in the order list
Clearing browser data, switching devices, or going into private mode wipes the order list. We recommend screenshotting or saving your orderId somewhere — it comes in handy if you ever need to contact support. The order itself still exists on our servers; with the orderId it can always be looked up.
What happens if something fails
A cross-chain swap spans multiple chains and multiple steps, so in theory something can always go wrong. UpSwap's design principle: your assets either arrive as quoted or are refunded along the original path — there is no third outcome.
- Automatic detection: the vast majority of issues (route timeouts, destination-chain congestion, slippage beyond limits, etc.) are identified by the system, which triggers the refund flow
- Refund along the original path: funds go back to the exact address you sent from — you will never be asked to provide a different address
- Refund gas note: the gas for the refund retransfer is deducted from the refund amount by the upstream vendor (usually 0.5-5 USD equivalent, depending on the chain). It is the cost of the refund's own on-chain transfer and cannot be avoided
- Human channel: you can also email support@upswap.io with your orderId and a brief description
- 48-hour first-response commitment: usually faster on business days, and no more than 48 hours even over holidays
For the full refund policy, refund timelines, and dispute process, see /legal/refund.
Done reading? Head to the homepage and open an order. Use a small amount for your first swap — walking through the flow once is more telling than reading 10 docs.