Skip to main content

My cross-chain swap is stuck — diagnose by symptom and source chain (BTC / ETH / SOL / TRC20 5-minute decision tree)

Most stuck swaps fall into four symptom buckets: wallet debited but order pending, source confirmed but destination silent, quote expired before signing, or refund initiated but not arrived. Match your symptom to the right row, check the on-chain wait window for your source chain, and only escalate to <code>@upswapservice</code> after the worry threshold is crossed.

· 14 min read

Key takeaways

Frequently asked questions

How many BTC confirmations is normal before my swap moves, and when should I worry?

<p>For small-to-medium swap amounts most aggregators wait 1–3 confirmations (10–30 minutes); the high-value default is 6 confirmations (~60 minutes), chosen so an attacker with under 10% hashrate has under 0.1% success. Worry threshold: if your tx is still at 0 confirmations after 2 hours, your fee was likely below the prevailing mempool rate — check <a href="https://mempool.space">mempool.space</a> for the current sat/vB and use RBF (sender-side bump) or CPFP (recipient-side child tx). Source: <a href="https://en.bitcoin.it/wiki/Confirmation">en.bitcoin.it/wiki/Confirmation</a>, sampled 2026-06-17.</p>

My ETH deposit is on a low gas — is it really stuck or just slow?

<p>If the tx is in mempool but no block has picked it up after 10 minutes at current network gas (median 0.14–0.77 gwei sampled 2026-06-17 via <a href="https://etherscan.io/gastracker">etherscan gastracker</a>), it is genuinely stuck — and worse, it is blocking every later transaction from the same address (Ethereum executes in strict nonce order). Nonce N+1, N+2 cannot land until nonce N does. Fix: send a replacement tx at the same nonce with higher gas (wallet <em>Speed up</em> button), or true-cancel with a 0-ETH self-transfer at the same nonce and higher gas. Source: <a href="https://info.etherscan.com/how-to-cancel-ethereum-pending-transactions/">etherscan — how to cancel pending tx</a>.</p>

My quote expired before I could sign — did someone front-run me?

<p>Almost certainly not. NEAR Intents 1Click defaults <code>min_deadline_ms</code> to 60,000 ms (1 minute) with a 3,000 ms solver-bid auction window; Relay defaults <code>permitExpiry</code> to 600 seconds. These TTLs exist because the solver/relayer is committing to a price they have to honor. Two minutes of inattention is enough to invalidate a fast-pair quote. A real exploit (malicious widget swapping the deposit or destination address) would show your funds arriving at an address that is not yours — if your order still shows your address, the rate change is market drift plus gas movement, not an attack. Source: <a href="https://docs.near-intents.org/near-intents/market-makers/bus/solver-relay">docs.near-intents.org</a>, sampled 2026-06-17.</p>

The refund came back smaller than I deposited — what was deducted?

<p>The refund transaction itself is a normal on-chain transfer and must pay its own network fee. Typical refund tx network fee: $2–$5 on BTC (mempool fee market), $1–$3 on ETH L1 (sub-gwei base fee era, 21k–65k gas), $0.30–$1 on TRC20 (Energy via TRX burn), $0.01–$0.10 on BSC, under $0.10 on SOL. The miners, validators, or Super Representatives of the source chain collect this — it is not an UpSwap fee, and there is no path to refund 100% of the deposited amount. If the deducted amount looks much larger than these ranges, escalate with the refund tx hash. Source: <a href="https://etherscan.io/gastracker">etherscan gastracker</a>, sampled 2026-06-17.</p>

My wallet shows the funds deducted but UpSwap still shows the order as pending — what is happening?

<p>The wallet writes the debit locally as soon as you sign. On-chain, the tx is either still in mempool, just included in a block, or confirmed but waiting on the solver to broadcast the destination fill. Open the source-chain explorer with your tx hash — that is the source of truth, not the wallet. SOL finalizes in ~13s; BSC finalizes in ~1.1s post-Fermi; ETH soft-confirms in 12s but bridges wait 15–35 conf; BTC averages 10 minutes per block. If the explorer shows enough confirmations and the UpSwap widget still says pending past 3× the typical fill window for your route, contact <code>@upswapservice</code> with the source tx hash. For the full physical-state breakdown see <a href="/guides/non-custodial-vs-custodial-where-funds-go-when-swap-fails">Guide #1</a>.</p>

It has been an hour and nothing has moved — is my money lost?

<p>Almost certainly not. On a non-custodial deposit-address flow, your funds sit at a public on-chain address you can verify with the source tx hash. They cannot vanish silently — they are either still confirming, awaiting solver decision, or queued for refund. The four real loss paths are: wrong-network deposit (see <a href="/guides/usdt-network-decision-guide-erc20-trc20-bep20-spl">Guide #2</a>), refund destination is a smart contract that cannot receive, signing a malicious widget (verify domain), or sending the seed phrase to a fake "support" DM. None of these apply to a normal stuck swap — they apply to user-error or social-engineering paths.</p>

Will UpSwap customer support ever DM me first?

<p>No. Never. Real support never initiates a Telegram DM. If someone writes to you claiming to be UpSwap support, an admin, or a moderator — they are a scammer, 100% of the time. Real support also never asks for your seed phrase, private key, or wallet password, and never asks you to send funds to a "verification address". Always start contact yourself via <code>@upswapservice</code> on Telegram or <code>[email protected]</code> through the official website footer. If you are unsure, post your question in the public group channel — real support will respond in-thread; scammers will try to move you to DM. Phishing campaigns stole $410M across 132 attacks in 2025 per Changelly's midyear report — this is the single most common loss path in the space.</p>

Is a stuck swap the same thing as a bridge hack like the Ledger Connect Kit incident?

<p>No — different failure classes. The December 2023 Ledger Connect Kit compromise (~$600k drained from SushiSwap, Revoke.cash, and other DApp users; source: <a href="https://www.ledger.com/blog/security-incident-report">ledger.com — security incident report</a>) was a widget code-supply-chain attack — injected JavaScript swapped the displayed deposit address for an attacker address. That is a UI/integrity failure, not a routing failure. A stuck swap is the opposite: the routing is working correctly and the on-chain state is exactly what the widget claimed; it is just waiting on confirmations or solver decision. UpSwap's non-custodial deposit-address model removes custodial-insolvency and custodial-hack risk (FTX-pattern, Bybit-pattern), but does <em>not</em> remove widget code-supply-chain risk — verify the domain and check the deposit address against multiple sources before signing. The honest framing is in <a href="/compare/upswap-vs-changenow">UpSwap vs ChangeNOW</a> and <a href="/guides/non-custodial-vs-custodial-where-funds-go-when-swap-fails">Guide #1</a>.</p>

Swap routes referenced in this guide

Related comparisons

Other guides

Ready to swap?

Pick your tokens and swap directly — non-custodial, no KYC, all-in fixed quote.