On this page

Recover a transfer

Most transfers either complete on the destination chain or remain in progress while the cross-chain message is verified and executed. If a trusted message reaches Omnisea but destination execution fails, the transfer can be retried or restored.

First checks

  1. Confirm the source transaction succeeded.
  2. Open the transfer in the Omnisea app or by transaction hash.
  3. Check whether the destination transaction is still pending.
  4. If the transfer is delayed, wait before attempting recovery.

Cross-chain messages can take longer during network congestion or when executor gas is busy.

Retry

Retry attempts to execute the same destination action again.

Use retry when the destination issue can be fixed, for example:

  • the original transfer did not buy enough destination gas
  • a temporary token or network issue has cleared
  • a representation deployment or mint can now complete

Anyone can call retry for a cached failed message. The recovered tokens still follow the original transfer payload.

Restore

Restore sends the transfer back to the source chain.

Use restore when retry is not practical, for example:

  • the destination route is not currently executable
  • the recipient wants to unwind instead of waiting
  • a destination token restriction keeps failing

Restore pays the LayerZero messaging cost needed to return the asset to the source chain. It does not collect a new Omnisea fixed protocol fee.

What cannot be changed

Retry and restore do not let callers rewrite the original transfer:

  • the token route stays the same
  • the original recipient data stays the same for retry
  • restore returns to the source-side owner path encoded by the bridge
  • arbitrary callers cannot redirect funds to themselves

Composition failures

Optional destination work uses LayerZero lzCompose. Omnisea credits the bridged asset before queueing composition, so a failed composer is not a failed transfer and cannot be retried or restored through the bridge recovery functions. Retry that compose message through LayerZero instead.

For integrator-level details, see Failed messages.

Experimental Beta is Live-Learn more about the Pilot