# Get Fee Structure

## Get Fee Structure

<mark style="color:blue;">`GET`</mark> `endpoint/yBridgeConfigs`

#### Query Parameters

| Name       | Type   | Description          |
| ---------- | ------ | -------------------- |
| srcChainId | String | source chain ID      |
| dstChainId | String | destination chain ID |

{% tabs %}
{% tab title="200: OK " %}

```json
{
  "isSuccess": true,
  "msg": "",
  "config": {
    "1": {
      "56": {
        "USDC": {
          "bridge": {
            "minimumAmount": 0.7,
            "baseFee": 0.58,
            "protocolFee": {
              "minimum": 0.1,
              "maximum": 1000,
              "rate": 0.0005
            },
            "expiredAt": 1882312672
          },
          "bridgeWithDstSwap": {
            "minimumAmount": 0.3,
            "baseFee": 0.18,
            "protocolFee": {
              "minimum": 0.1,
              "maximum": 1000,
              "rate": 0.0005
            },
            "expiredAt": 1882312672
          }
        }
      }
    }
  }
}
```

{% endtab %}
{% endtabs %}

```json
//quote response
{
  "isSuccess": true,
  "msg": "",
  "config": {
    "1": {  // source chain
      "56": {  // destination chain
        "USDC": {  // bridge & bridge token
          "bridge": {  
            "minimumSwapAmount": 0.7, // in bridge token
            "baseFee": 0.58, // in bridge token
            "protocolFee": {
              "minimum": 0.1, // in bridge token
              "maximum": 1000, // in bridge token
              "rate": 0.0005 
            },
            "expiredAt": 1882312672  // unix timestamp
          },
          "bridgeWithDstSwap": {  // in bridge token
            "minimumSwapAmount": 0.3, // in bridge token
            "baseFee": 0.18, // in bridge token
            "protocolFee": {
              "minimum": 0.1, // in bridge token
              "maximum": 1000, // in bridge token
              "rate": 0.0005 
            },
            "expiredAt": 1882312672  // unix timestamp
          }
        }
      }
      "10": {  // destination chain
        ...,
      }
      ...,
    }
    "56": {  // source chain
      ...,
    }
  }
}
```

{% hint style="info" %}
Discover more about how yBridge fees are calculated at [yBridge Fee Information](/fee-structure/ybridge-fee-information.md)
{% endhint %}

The "configs" object is organized in a hierarchical structure, where "1" represents the chain ID of the source chain. Underneath the source chain, there are multiple chain ID of destination chains, such as "10," "56," "137," and others. All fee-related configurations for each bridges are disclosed under each chain pair.

Within different bridges, there are two additional scenarios to consider. The first scenario is purely a bridge operation without any DEX swaps on the destination chain, indicated as "bridge" in the response. The second scenario involves DEX swaps on the destination chain and is represented as "bridgeWithDstSwap". Both of these situations contain detailed fee configuration information, and the fee calculation follows the formula below:&#x20;

$$
BridgeFee = BaseFee + ProtocolFee
$$

* `minimumSwapAmount`: Please ensure that your source bridge token amount is greater than this amount; otherwise, the response may result in an error.
* `baseFee`: Is charged to cover the gas costs incurred when our service transfers tokens to the user's receiving address.
* `protocolFee`: The protocolFee is calculated as **the product of the srcBridgeTokenAmount and rate**. This fee is then allocated to reward yBridge liquidity providers and XY DAO.
  * `minimum`: Will be charged when the product is **less** than the specified minimum.
    * For example: `minimum`: 0.5U, `srcBridgeTokenAmount`: 10 USDC, `rate` 0.0005&#x20;
    * The fee amount in this case would be 0.5U, since 10\*0.00050 = **0.005** is **less** than the `minimumFee`: 0.5U.
  * `maximum`: Will be charged when the product is **more** than the specified maximum.
    * For example: `maximum`: 1000U, `srcBridgeTokenAmount`: 2500000 USDC, `rate` 0.0005
    * The fee amount in this case would be 1000U, since 2500000\*0.00050 = **1250** is **more** than the `maximumFee`: 1000U.
  * `rate`: Represents the proportion of the transaction amount that is charged as a fee.
    * rate: 0.00050 = 0.050%
* `expiryAt`: Each pair has its own expiry time. The details in the object will **no longer be usable** once the expiry time has passed.

{% hint style="info" %}
Please confirm the expiration time before it's due. The **quickest** we update is **every 20 minutes,** but it can vary.
{% endhint %}

#### Example:

```json
{
  "1": {  // source chain
    "56": {  // destination chain
      "USDC": {
        "bridge": {
          "minimumSwapAmount": 0.7,
          "baseFee": 0.58,
          "protocolFee": {
            "minimum": 0.1,
            "maximum": 1000,
            "rate": 0.0005
          },
          "expiredAt": 123223241
        },
        "bridgeWithDstSwap": {
            ...
          },
          ...
        }
      }
    }
  }
}   
```

For instance, consider a user transferring 580 USDC from Ethereum (chainId: 1) to USDC on BNB (chainId: 56), using the USDC pool from yBridge. This transfer does not involve any DEX swap on the BNB Chain (the destination chain). According to the previous API response, the "srcBridgeTokenAmount" is more than 0.7U.

Fee details are as follows:

* Base fee: 0.58U
* Protocol fee: 580 \* 0.0005 = 0.29U
* Total fee: 0.58U + 0.29U = 0.87U

The final charge will be 0.87U, taken as pool tokens valued at 0.87 USD.


---

# 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.xy.finance/single-bridge-integration/ybridge-api/get-fee-structure.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.
