Skip to main content
A destination call is an arbitrary contract interaction on the destination chain, included in the intent’s route and executed atomically by the Executor contract after the solver delivers the requested asset. This turns “bridge then do something” into a single signed action with all-or-nothing execution.

When to use

  • One-click cross-chain protocol deposits (“deposit USDC into our Arbitrum vault from any chain”)
  • Bridge-and-swap into a non-stable destination asset
  • Pay an invoice that requires a specific contract call beyond a transfer
  • Cross-chain auto-stake or auto-compound flows

How it works

  1. The intent’s route.calls array contains one or more Call structs, { target, value, data }, to execute on the destination chain.
  2. The solver fronts the destination-chain tokens to the Executor.
  3. The Executor runs each call sequentially. If any call reverts, the entire intent reverts. The solver pays only gas; the user gets refunded.
The Executor is a stateless contract that isolates the user’s calls from the Portal’s storage. See Executor for the security model.

Examples

Bridge and deposit

Bridge, DEX swap, transfer

Constraints