# Execute the route

{% tabs %}
{% tab title="SDK" %}

```typescript
//   Execute the swap and deposit transaction
  const tx = (await squid.executeRoute({
    signer,
    route,
  })) as unknown as ethers.providers.TransactionResponse;
  const txReceipt = await tx.wait();
```

If you want to execute yourself, manually. You can get all the data needed for execution from `route.transactionRequest` . Including calldata, target address, value to send and gas recommendations.
{% endtab %}

{% tab title="API" %}

```typescript
const transactionRequest = route.transactionRequest;

  // Execute the swap transaction
  const contract = new ethers.Contract(
    transactionRequest.targetAddress,
    [],
    signer
  );

  const tx = await contract.send(transactionRequest.data, {
    value: transactionRequest.value,
    gasPrice: await provider.getGasPrice(),
    gasLimit: transactionRequest.gasLimit,
  });
  const txReceipt = await tx.wait();
```

{% endtab %}

{% tab title="Widgets" %}
All widgets allow the user to submit once they have entered all required inputs and connected their wallet(s).&#x20;

All routes require gas in the user's account on source chain only. The widgets will show a warning when the amount of gas needed is higher than their balance.
{% endtab %}
{% endtabs %}
