> ## Documentation Index
> Fetch the complete documentation index at: https://docs.eco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Destination calls

> Execute contract calls as part of destination-chain intent fulfillment.

**Destination calls** let you include contract interactions in an intent's route. For example, a route can transfer tokens into a vault or swap an intermediate token before paying the recipient.

## How execution works

1. The solver supplies the tokens listed in `route.tokens` and the required native amount.
2. The destination Portal transfers those tokens to its [Executor](/routes/architecture/executor).
3. The Executor runs `route.calls` in array order.

Each call has a `target` address, ABI-encoded `data`, and a native-token `value`. The target sees the Executor as `msg.sender`, so set beneficiaries and recipients explicitly where the target contract requires them.

If a call reverts, the destination fulfillment transaction reverts. Source-chain funding remains a separate transaction; a failed destination call does not immediately refund the source vault.

## Common patterns

| Outcome | Calls to include |
| - | - |
| Deposit into a vault | Approve the deposit asset, then call the vault with the intended beneficiary |
| Swap and pay a recipient | Approve the input token, execute the swap with an output constraint, then transfer any output that the swap did not deliver directly |
| Pay a contract invoice | Approve or transfer the required asset, then call the contract's payment function |

Simulate the complete fulfillment with the required assets and estimate gas before submitting it. Ensure calls consume or transfer their intended balances; the Executor does not automatically sweep residual ERC-20 tokens.

## Constraints

* Calls run sequentially within one destination-chain transaction.
* A target with no contract code rejects nonempty calldata.
* The Executor checks whether a call reverted; it does not interpret the returned bytes as a success flag or validate an arbitrary call's business outcome.
* Available API routes and direct contract capabilities are different surfaces. Use the returned quote to determine what the API will execute.

## Next steps

Read [Executor](/routes/architecture/executor) for contract behavior and [Intent types](/resources/intent-types#bridge-and-swap) for an API route that includes a destination swap.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.