Retrieve suggested fee quote for a deposit.

Returns suggested fees based on `inputToken`, `outputToken`, `originChainId`, `destinationChainId`, and `amount`. Also includes transfer limits of the system and data used to compute the fees.

Legacy: The /suggested-fees API is no longer actively maintained. New integrations should use the Swap API instead.

GET
/suggested-fees

Authorization

bearerAuth
AuthorizationBearer <token>

API key for authentication. Request your key at https://t.me/acrosstg.

In: header

Query Parameters

inputToken*string

Address of token to bridge on the origin chain. Must be used together with parameter outputToken. For ETH, use the wrapped address, like WETH.

Note that the address provided must exist on the specified originChainId below.

outputToken*string

Address of token to bridge on the destination chain. Must be used together with parameter inputToken. For ETH, use the wrapped address, like WETH.

Note that the address provided must exist on the specified destinationChainId below.

originChainId*integer

Chain ID where the specified inputToken exists.

Range1 <= value
Value in1 | 10 | 137 | 324 | 8453 | 42161 | 59144 | 84532 | 421614 | 11155420 | 11155111
destinationChainId*integer

The desired destination chain ID of the bridge transfer.

Range1 <= value
Value in1 | 10 | 137 | 324 | 8453 | 42161 | 59144 | 84532 | 421614 | 11155420 | 11155111
amount*integer

Amount of the token to transfer.

Note that this amount is in the native decimals of the token. So, for WETH, this would be the amount of human-readable WETH multiplied by 1e18. For USDC, you would multiply the number of human-readable USDC by 1e6.

Range1 <= value
recipient?string

Recipient of the deposit. Can be an EOA or a contract. If this is an EOA and message is defined, then the API will throw a 4xx error.

Example: 0xc186fA914353c44b2E33eBE05f21846F1048bEda

message?string

Calldata passed to the recipient if recipient is a contract address. This calldata is passed to the recipient via the recipient's handleV3AcrossMessage() public function. Example: 0xABC123

relayer?string

Optionally override the relayer address used to simulate the fillRelay() call that estimates the gas costs needed to fill a deposit. This simulation result impacts the returned suggested-fees. The reason to customize the EOA would be primarily if the recipientAddress is a contract and requires a certain relayer to submit the fill, or if one specific relayer has the necessary token balance to make the fill.

Example: 0x428AB2BA90Eba0a4Be7aF34C9Ac451ab061AC010

timestamp?integer

The quote timestamp used to compute the LP fees. When bridging with across, the user only specifies the quote timestamp in their transaction. The relayer then determines the utilization at that timestamp to determine the user's fee. This timestamp must be close (within 10 minutes or so) to the current time on the chain where the user is depositing funds and it should be <= the current block timestamp on mainnet. This allows the user to know exactly what LP fee they will pay before sending the transaction.

If this value isn't provided in the request, the API will assume the latest block timestamp on mainnet.

Example: 1653547649

allowUnmatchedDecimals?boolean

Used to define whether you want to allow unmatched decimals between the input and output tokens. For tokens with mismatched decimals in the origin and destination chain the API will throw an error if this is not explicitly set to true. Defaults to false.

Response Body

application/json

application/json

application/json

curl -X GET "https://app.across.to/api/suggested-fees?inputToken=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2&outputToken=0x4200000000000000000000000000000000000006&originChainId=1&destinationChainId=10&amount=1000000000000000000&allowUnmatchedDecimals=false"
{
  "estimatedFillTimeSec": 2,
  "capitalFeePct": "78750000000001",
  "capitalFeeTotal": "78750000000001",
  "relayGasFeePct": "155024308002",
  "relayGasFeeTotal": "155024308002",
  "relayFeePct": "78905024308003",
  "relayFeeTotal": "78905024308003",
  "lpFeePct": "0",
  "timestamp": "1754342087",
  "isAmountTooLow": false,
  "quoteBlock": "23070320",
  "exclusiveRelayer": "0x394311A6Aaa0D8E3411D8b62DE4578D41322d1bD",
  "exclusivityDeadline": 1754342267,
  "spokePoolAddress": "0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5",
  "destinationSpokePoolAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281",
  "totalRelayFee": {
    "pct": "78905024308003",
    "total": "78905024308003"
  },
  "relayerCapitalFee": {
    "pct": "78750000000001",
    "total": "78750000000001"
  },
  "relayerGasFee": {
    "pct": "155024308002",
    "total": "155024308002"
  },
  "lpFee": {
    "pct": "0",
    "total": "0"
  },
  "limits": {
    "minDeposit": "134862494200912",
    "maxDeposit": "1661211802629989209324",
    "maxDepositInstant": "231397155893653275446",
    "maxDepositShortDelay": "1661211802629989209324",
    "recommendedDepositInstant": "231397155893653275446"
  },
  "fillDeadline": "1754353917",
  "outputAmount": "999921094975691997",
  "inputToken": {
    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
    "symbol": "ETH",
    "decimals": 18,
    "chainId": 1
  },
  "outputToken": {
    "address": "0x4200000000000000000000000000000000000006",
    "symbol": "ETH",
    "decimals": 18,
    "chainId": 10
  },
  "id": "xn8fx-1754342218143-67be35cfbdb6"
}
{
  "type": "AcrossApiError",
  "code": "AMOUNT_TOO_HIGH",
  "status": 400,
  "message": "Amount exceeds max. deposit limit- 20003.800721 USDzC"
}
{
  "type": "AcrossApiError",
  "code": "INTERNAL_SERVER_ERROR",
  "status": 500,
  "message": "Internal server error"
}