DEV Community

Hayley Schamberger
Hayley Schamberger

Posted on

4 Checks for a Cross-Chain Swap Stuck Pending

A pending source transaction has not yet reached the cross-chain service. Until it is included on its starting blockchain, the swap cannot proceed to confirmation and delivery on the destination chain. That differs from a centralised exchange, where the platform handles the transfer behind the scenes.

1. Is the transaction still waiting on the source chain?

Check the transaction hash on an explorer for the blockchain you sent from. If its status is pending or unconfirmed, the blockchain has not included it in a block; if it is confirmed or successful, the source transaction is done and the next wait may be for cross-chain processing. A cross-chain swap has more stages than a single-chain transfer: the source transaction must be observed, reach the required finality, and then be processed on the destination.

This is where a quickswap swap service helps: it lets you move and exchange assets across blockchains in one flow. But it cannot make an unconfirmed source transaction confirm sooner. For example, if you start a swap from Ethereum and the transaction hash is still pending there, check that transaction first; once it confirms, track the cross-chain transfer separately.

2. Why can the source transaction take so long?

The most common cause is a fee bid that no longer attracts block producers. On Ethereum, a transaction sets a maximum fee per unit of gas and a priority fee, or tip; if the base fee rises above the transaction’s maximum, it cannot be included until conditions change or the sender replaces it. Busy blocks can also leave a transaction waiting even when its fee settings remain valid.

Account nonces create another wrinkle. An Ethereum account’s nonce is a sequential transaction number, and a later transaction from that account generally cannot be processed ahead of an earlier pending one. So if your wallet shows several pending transactions, the oldest may be holding up the rest. On Bitcoin, transactions compete for block space based largely on fee per byte; a low fee during a busy period can mean a longer wait.

3. What should I do while it is pending?

First, confirm that the hash and sender address match your wallet’s activity. Then compare the transaction’s fee settings with current estimates for that same chain. If your wallet offers a speed-up or fee-bump option, it usually broadcasts a replacement for the same transaction; on Ethereum, that means using the same nonce with a higher fee. Read the wallet’s confirmation carefully before signing.

A replacement is not a second cross-chain swap when it correctly replaces the pending transaction, but avoid sending a fresh swap just because the first one looks slow. If both transactions eventually confirm, you could submit the action twice. If you cannot tell whether the original transaction is still pending, check its status on more than one reliable source-chain explorer before acting. Don’t share your recovery phrase with anyone offering to “unstick” it.

4. What if the source transaction has confirmed?

Check whether it succeeded, not just whether it was included in a block. A failed contract transaction can be confirmed while its intended action does not complete; on Ethereum, it may still use gas. If it succeeded, look for the service’s cross-chain status using the source transaction hash or any message reference it provides. The remaining time depends on the source chain’s finality rules and the separate verification and execution steps across both networks.

If the source transaction succeeded but the destination has not updated, don’t submit the swap again. Give the cross-chain process time to advance, and use the transaction details to identify whether it is waiting for finality, verification, or destination execution. My rule is simple: resolve a pending source transaction at the wallet or chain level; investigate a confirmed source transaction at the cross-chain level.

A pending hash means the source chain has not accepted the transaction into a block yet. Check its status and fee settings before replacing it; once it succeeds, follow the cross-chain transfer through to destination delivery.

Top comments (0)