How to verify a cross-chain transfer on block explorers

Updated

Short answer

A cross-chain transfer is really two (or more) transactions on two chains, linked by the bridge. To verify it, check three things in order: the source transaction succeeded on the source chain's explorer; the bridge's own tracker shows the deposit or order as filled; and the destination transaction delivered the expected token, from the expected contract, to your address. A wallet balance alone is not proof — fake tokens can show up in balances too.

What you need before you start

Step 1: check the source transaction

Open the hash in the source chain's explorer — for example Etherscan for Ethereum, Arbiscan for Arbitrum, Optimistic Etherscan for OP Mainnet, Polygonscan for Polygon or Solscan for Solana. Check:

  1. Status is success (not failed or dropped).
  2. The transaction called the bridge contract you intended, not an unknown address.
  3. The amount and token leaving your wallet match what you approved.

If the source transaction failed, nothing was bridged; you paid only gas. If it is still pending, see the stuck-transfer guide.

Step 2: check the bridge's tracker

Every major bridge has a status page that links the source deposit to the destination fill:

Bridge or serviceWhere to lookWhat to search
AcrossAcross transferssource transaction hash
deBridge DLNdeBridge ordersorder ID or transaction hash
NEAR Intents 1ClickNEAR Intents Exploreryour deposit address
Jumper / LI.FILI.FI Scansource transaction hash
Wormhole-based routesWormholescansource transaction hash

The NEAR Intents docs list the statuses you will see — for example PENDING_DEPOSIT, PROCESSING, SUCCESS, REFUNDED and FAILED (NEAR Intents: making a request). Across shows when a deposit has expired or been refunded (Across docs: refunds). The tracker usually links the destination transaction hash.

Step 3: check the destination transaction

Open the destination hash on the destination chain's explorer and confirm:

  1. Recipient is your address, character by character in the middle as well as the ends (address-poisoning guide).
  2. Token contract is the real one. For USDC, compare with Circle's published contract list (Circle: USDC contract addresses); for USDT, with Tether's list (Tether: supported protocols).
  3. Amount received matches the quote, allowing for any stated slippage.

Step 4: compare with what you expected to pay

Work out what the transfer cost: input minus output, valued in dollars, plus the gas you paid. Divide by the input and multiply by 10,000 to get bps. Compare with the measured range on our route pages — for example, in upswap run #62 (2026-10-24 12:35 UTC) $200 quotes for Base → Arbitrum USDC ranged from 1.21 to 141.17 bps, with a median of 27.17 bps. A cost far outside the measured range is worth investigating before you use the same app again.

Timing: how long should verification take?

It depends on the mechanism. Intent bridges usually fill in seconds; Across says most deposits are filled in about 2 seconds (Across docs: refunds). Circle's CCTP Standard Transfer waits for hard finality — about 15–19 minutes from Ethereum — while Fast Transfer attestations take about 20 seconds from Ethereum and about 8 seconds from many L2s (Circle: CCTP finality).

FAQ

My wallet shows the tokens. Do I still need to check the explorer?

Yes, if the amount matters. Wallets can display spoofed tokens with the same name and symbol; the token contract on the explorer is the proof.

The bridge tracker says filled but I see nothing in my wallet.

Check that your wallet is on the destination network and is tracking the correct token contract. If the tracker links a destination transaction to your address, the funds are there.

Can I verify a transfer without connecting my wallet?

Yes. Explorers and bridge trackers are read-only; searching a hash or address never needs a signature.

Sources