destinationPayload + destinationGasLimit on a userOps=tx quote to run arbitrary logic atomically after tokens are delivered on the destination chain — stake, swap, vault deposit, etc.
Only supported on
userOps=tx routes. Not available for deposit-address routes or Sui destinations.Quote parameters
Both
destinationPayload and destinationGasLimit must be set together — passing only one is rejected.
How it works
Tokens are delivered to Socket’s BungeeReceiver contract (same address on all supported chains via CREATE3), which then calls your executor:amount of token before the call, so your executor can pull from it directly.
IBungeeExecutor interface
This is the v3 / OpenRouter single-output signature. Do not use the older marketplace executor (different multi-output signature).callData is exactly what was passed as destinationPayload at quote time.
Constraints
destinationPayload+destinationGasLimitare all-or-nothing.- Not supported on Sui or deposit-address (
userOps=deposit) routes. - BungeeReceiver is deployed on all
OPEN_ROUTER_CHAIN_IDS(Ethereum, Arbitrum, Base, Optimism, Polygon, BNB, Gnosis, Linea, Mantle, Scroll, Sonic, Soneium, Unichain, Worldchain, HyperEVM, and more). CalldataExecutor(0xC914...9008) is a reference no-op executor that forwards calldata to an arbitrary target — useful for simple forwarding. No registration needed; security is handled by BungeeReceiver’s per-quote signature verification.
Examples
Quote request (TypeScript)
Quote request (TypeScript)
Example executor contract (Solidity)
Example executor contract (Solidity)