# Collect Fees

Integrators can reach out to Squid to implement fee capture on their cross-chain swaps.

Squid takes 50% of any fees collected by an integratorAddress.

Example route request with \`collectFees\`

```typescript

const params = {
    fromChain: 5, // Goerli testnet
    fromToken: "0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6", // WETH on Goerli
    fromAmount: "50000000000000000", // 0.05 WETH
    toChain: 43113, // Avalanche Fuji Testnet
    toToken: "0x57f1c63497aee0be305b8852b354cec793da43bb", // aUSDC on Avalanche Fuji Testnet
    fromAddress: "0xAD3A87a43489C44f0a8A33113B2745338ae71A9D", // ethers.signer.address; transaction sender address
    toAddress: "0xAD3A87a43489C44f0a8A33113B2745338ae71A9D", // the recipient of the trade
    slippage: 1.00, // 1.00 = 1% max slippage across the entire route
    enableForecall: true, // instant execution service, defaults to true
    quoteOnly: false // optional, defaults to false, 
    collectFees: { 
        integratorAddress: "0x", 
        fee: 50
    }
};
```

| Property          | Description                                                                                                        |
| ----------------- | ------------------------------------------------------------------------------------------------------------------ |
| integratorAddress | The EVM address of the integrator that will receive the fee                                                        |
| fee               | The amount in "basis points" for the fee. 50 = 0.50%. there is currently soft limit of 1% fee allowed for each tx. |

**New objects in route response**

```json
feeCosts": [
    {
        "name": "Integrator Fee",
        "description": "Integrator Fee",
        "percentage": "0.9%",
        "token": {
            "chainId": 43113,
            "address": "0x57f1c63497aee0be305b8852b354cec793da43bb",
            "name": "Axelar USDC",
            "symbol": "aUSDC",
            "decimals": 6,
            "logoURI": "https://raw.githubusercontent.com/axelarnetwork/axelar-docs/main/public/images/assets/usdc.svg",
            "coingeckoId": "axlusdc",
            "commonKey": "uausdc"
        },
        "amount": "14190",
        "amountUSD": "0.0142"
    },
]
```

**Fee collection token**\
Fees are collected in the bridge token, most of the time this will be [axlUSDC](https://docs.axelar.dev/learn/axlusdc) as this is the primary bridging token, if the source or destination token is an [Axelar wrapped](https://docs.axelar.dev/resources/mainnet#assets) token the fee could be taken in that token, to unwrap Axelar token see [here](https://docs.axelar.dev/resources/wrapped-tokens)

The API route response will tell whether it is the source or destination chain that has the fee taken

\
You can see the "collectFees" object returned by the api in the "params" section of the response. This specific route will take fees on destination.

```json

"params": {
    "collectFees": {
        "integratorAddress": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
        "fee": 90,
        "feeLocation": "DESTINATION"
    },
    ....
}

```

**Fee logic**

Fees are are currently only supported on EVM chains, although fees will eventually be supported on Cosmos chains. The fee is generally taken on the chain where swaps happen. The following table outlines where the fee is taken based on the route.

swaps = some swap to or from a token to the bridge token (eg axlUSDC)

send only = no swaps

Cosmos = not supported

<table><thead><tr><th>Source</th><th>Destination</th><th>Fee taken</th><th data-hidden></th></tr></thead><tbody><tr><td>EVM (with swaps)</td><td>EVM (with swaps)</td><td>Source</td><td></td></tr><tr><td>EVM (no swaps)</td><td>EVM (with swaps)</td><td>Destination</td><td></td></tr><tr><td>EVM (no swaps)</td><td>EVM (no swaps)</td><td>Destination</td><td></td></tr><tr><td>EVM (with swaps)</td><td>EVM (no swaps)</td><td>Source</td><td></td></tr><tr><td>EVM (with swaps)</td><td>Cosmos</td><td>Source</td><td></td></tr><tr><td>EVM (no swaps)</td><td>Cosmos</td><td>None</td><td></td></tr></tbody></table>

**How to check fee balances**

You can check the Squid fee collector smart contracts for the balance of each token for the integrator address.\
The feeCollector contract addresses are documented in the next section.\
\
You can read balances by putting in the "token address" and "integratorAddress" into the getBalance function\
<https://testnet.snowtrace.io/address/0xf80De6D6CF6846Ae7c3243F4b6486EF662C59d29#readProxyContract>

**Fee Collector contract address**

| Network | Address                                    |
| ------- | ------------------------------------------ |
| Testnet | 0xf80De6D6CF6846Ae7c3243F4b6486EF662C59d29 |
| Mainnet | 0x19cd4F3820E7BBed45762a30BFA37dFC6c9C145b |
|         |                                            |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.squidrouter.com/api-and-sdk-integration/key-concepts/collect-fees-1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
