---
title: "Get a paginated list of filtered transfers"
method: GET
path: "/v2/analytics/transfers"
---

# Get a paginated list of filtered transfers

`GET /v2/analytics/transfers`

## Request

- Base URL: `https://li.quest`
- URL: `https://li.quest/v2/analytics/transfers`
- Auth: none declared
- TypeScript: <https://skmtc.dev/lifi/apis/li-fi-api/docs/v2/analytics/transfers/get.ts> (a function with typed inputs; its response is checked against the schema)

A paginated version of the `GET /v1/analytics/transfers endpoint`. This endpoint can be used to retrieve a list of transfers filtered by certain properties.

## Query parameters

- `limit` integer
- `next` string
- `previous` string
- `integrator` union
  - string
  - string[]
- `wallet` string
- `status` string
- `fromTimestamp` number
- `toTimestamp` number
- `fromChain` string
- `toChain` string
- `fromToken` string
- `toToken` string

## Response `200`

Response for `GET /analytics/transfers/summary` endpoint

- object: Parameters used to query paginated endpoints
  - `hasNext` boolean: Flag indicating if there is a next page
  - `hasPrevious` boolean: Flag indicating if there is a previous page
  - `next` string, nullable: Cursor for fetching the next page. Should be passed to `next` in the pagination query.
  - `previous` string, nullable: Cursor for fetching the previous page. Should be passed to `previous` in the pagination query.
  - `data` StatusResponse[]: An array containing the paginated data returned by the endpoint
    - `sending` TransactionInfo, required: A transaction info object
      - `txHash` string, required: The hash of the transaction
      - `txLink` string, required: Link to a block explorer showing the transaction
      - `amount` string, required: The amount of the transaction
      - `token` Token, required: Representation of a Token
        - `address` string, required: Address of the token
        - `decimals` number, required: Number of decimals the token uses
        - `symbol` string, required: Symbol of the token
        - `chainId` number, required: Id of the token's chain
        - `coinKey` string: Identifier for the token
        - `name` string, required: Name of the token
        - `logoURI` string: Logo of the token
        - `priceUSD` string: Token price in USD
      - `chainId` number, required: The id of the chain
      - `gasToken` Token: Representation of a Token
        - `address` string, required: Address of the token
        - `decimals` number, required: Number of decimals the token uses
        - `symbol` string, required: Symbol of the token
        - `chainId` number, required: Id of the token's chain
        - `coinKey` string: Identifier for the token
        - `name` string, required: Name of the token
        - `logoURI` string: Logo of the token
        - `priceUSD` string: Token price in USD
      - `gasAmount` string: The amount of the gas that was paid
      - `gasAmountUSD` string: The amount of the gas that was paid in USD
      - `gasPrice` string: The price of the gas
      - `gasUsed` string: The amount of the gas that was used
      - `timestamp` number: The transaction timestamp
      - `value` string: The transaction value
      - `includedSteps` IncludedSwapSteps[]: An array of swap or protocol steps included in the LI.FI transaction
        - `tool` string: The tool used for this step
        - `toolDetails` object: The details of the tool used for this step. E.g. `1inch` or `feeProtocol`
          - `key` string: The tool key
          - `name` string: The tool name
          - `logoURI` string: The tool logo URL
        - `fromAmount` string: The amount that was sent to the tool
        - `fromToken` string: The token that was sent to the tool
        - `toAmount` string: The amount that was received from the tool
        - `toToken` string: The token that was received from the tool
        - `bridgedAmount` string: The amount that was sent to the bridge
    - `receiving` TransactionInfo: A transaction info object
      - `txHash` string, required: The hash of the transaction
      - `txLink` string, required: Link to a block explorer showing the transaction
      - `amount` string, required: The amount of the transaction
      - `token` Token, required: Representation of a Token
        - `address` string, required: Address of the token
        - `decimals` number, required: Number of decimals the token uses
        - `symbol` string, required: Symbol of the token
        - `chainId` number, required: Id of the token's chain
        - `coinKey` string: Identifier for the token
        - `name` string, required: Name of the token
        - `logoURI` string: Logo of the token
        - `priceUSD` string: Token price in USD
      - `chainId` number, required: The id of the chain
      - `gasToken` Token: Representation of a Token
        - `address` string, required: Address of the token
        - `decimals` number, required: Number of decimals the token uses
        - `symbol` string, required: Symbol of the token
        - `chainId` number, required: Id of the token's chain
        - `coinKey` string: Identifier for the token
        - `name` string, required: Name of the token
        - `logoURI` string: Logo of the token
        - `priceUSD` string: Token price in USD
      - `gasAmount` string: The amount of the gas that was paid
      - `gasAmountUSD` string: The amount of the gas that was paid in USD
      - `gasPrice` string: The price of the gas
      - `gasUsed` string: The amount of the gas that was used
      - `timestamp` number: The transaction timestamp
      - `value` string: The transaction value
      - `includedSteps` IncludedSwapSteps[]: An array of swap or protocol steps included in the LI.FI transaction
        - `tool` string: The tool used for this step
        - `toolDetails` object: The details of the tool used for this step. E.g. `1inch` or `feeProtocol`
          - `key` string: The tool key
          - `name` string: The tool name
          - `logoURI` string: The tool logo URL
        - `fromAmount` string: The amount that was sent to the tool
        - `fromToken` string: The token that was sent to the tool
        - `toAmount` string: The amount that was received from the tool
        - `toToken` string: The token that was received from the tool
        - `bridgedAmount` string: The amount that was sent to the bridge
    - `feeCosts` object[]: An array of fee costs for the transaction
      - `name` string
      - `description` string
      - `percentage` string
      - `token` object
        - `address` string
        - `decimals` number
        - `symbol` string
        - `chainId` number
        - `coinKey` string
        - `name` string
        - `logoURI` string
      - `amount` string
      - `amountUSD` string
      - `included` boolean
    - `status` 'NOT_FOUND' | 'INVALID' | 'PENDING' | 'DONE' | 'FAILED', required: The current status of the transfer. Can be `PENDING`, `DONE`, `NOT_FOUND` or `FAILED`
    - `substatus` 'WAIT_SOURCE_CONFIRMATIONS' | 'WAIT_DESTINATION_TRANSACTION' | 'BRIDGE_NOT_AVAILABLE' | 'CHAIN_NOT_AVAILABLE' | 'REFUND_IN_PROGRESS' | 'UNKNOWN_ERROR' | 'COMPLETED' | 'PARTIAL' | 'REFUNDED': A more specific substatus. This is available for PENDING and DONE statuses. More information can be found here: https://docs.li.fi/introduction/user-flows-and-examples/status-tracking
    - `substatusMessage` string: A message that describes the substatus
    - `tool` string, required: The tool used for this transfer
    - `transactionId` string: The ID of this transfer (NOT a transaction hash).
    - `fromAddress` string: The address of the sender.
    - `toAddress` string: The address of the receiver.
    - `lifiExplorerLink` string: The link to the LI.FI explorer.
    - `metadata` Metadata: The metadata of the transaction which includes integrator data, etc.
      - `integrator` string: Integrator ID
    - `quote` TransferQuote: The quote that was issued for a transfer at quote time. The `action` describes what was requested and the `estimate` records the quoted amounts and costs, so they can be compared against the actual outcome reported by the status response.
      - `stepId` string, required: The id of the quoted step, matching `id` on the quote response.
      - `tool` string, required: The tool that was quoted for this transfer.
      - `type` string, required: The type of the quoted step.
      - `action` Action, required: Object describing what happens in a `Step`
        - `fromChainId` number, required: The id of the chain where the transfer should start
        - `fromAmount` string, required: The amount that should be transferred including all decimals
        - `fromToken` Token, required: Representation of a Token
          - `address` string, required: Address of the token
          - `decimals` number, required: Number of decimals the token uses
          - `symbol` string, required: Symbol of the token
          - `chainId` number, required: Id of the token's chain
          - `coinKey` string: Identifier for the token
          - `name` string, required: Name of the token
          - `logoURI` string: Logo of the token
          - `priceUSD` string: Token price in USD
        - `toChainId` number, required: The id of the chain where the transfer should end
        - `toToken` Token, required: Representation of a Token
          - `address` string, required: Address of the token
          - `decimals` number, required: Number of decimals the token uses
          - `symbol` string, required: Symbol of the token
          - `chainId` number, required: Id of the token's chain
          - `coinKey` string: Identifier for the token
          - `name` string, required: Name of the token
          - `logoURI` string: Logo of the token
          - `priceUSD` string: Token price in USD
        - `slippage` number, double: The maximum allowed slippage
        - `fromAddress` string: The sending wallet address
        - `toAddress` string: The receiving wallet address
      - `estimate` Estimate, required: An estimate for the current transfer
        - `tool` string, required: The tools that is being used for this step
        - `fromAmount` string, required: The amount that should be transferred including all decimals
        - `fromAmountUSD` string: The amount that should be transferred in USD equivalent
        - `toAmount` string, required: The estimated resulting amount of the `toToken` including all decimals
        - `toAmountMin` string, required: The minimal outcome of the transfer including all decimals. It may reflect applicable slippage and known fee-on-transfer tax adjustments.
        - `toAmountUSD` string: The estimated resulting amount of the `toToken` in USD equivalent
        - `approvalAddress` string, required: The contract address for the approval
        - `skipApproval` boolean: Optional flag indicating that this step needs no token approval, because the executing contract moves funds under the authorization already carried by the signed transaction or message.
        - `feeCosts` FeeCost[]: Fees charged on the transfer. On a `lifi` step this array is the concatenation of the fee costs of every entry in `includedSteps`, so it already contains them. Do not add both together.
          - `name` string, required: Human-readable name of the fee, for example `LIFI Fixed Fee` or `Relayer Gas fee`. Names are tool-specific free text and are not a stable enum. Do not branch on this value.
          - `description` string: Description of the fee costs
          - `percentage` string, required: The fee expressed as a fraction of the transferred amount, for example `0.0025` for 0.25%. A fee whose name contains `Fixed` may still report a non-zero fraction; do not infer the fee model from `name` or assume fixed-fee entries report `0`.
          - `token` Token, required: Representation of a Token
            - `address` string, required: Address of the token
            - `decimals` number, required: Number of decimals the token uses
            - `symbol` string, required: Symbol of the token
            - `chainId` number, required: Id of the token's chain
            - `coinKey` string: Identifier for the token
            - `name` string, required: Name of the token
            - `logoURI` string: Logo of the token
            - `priceUSD` string: Token price in USD
          - `amount` string: The fee amount in the smallest unit of `token`, before decimals are applied. Divide by `10 ** token.decimals` for a human-readable amount.
          - `amountUSD` string, required: The amount of fees in USD
          - `included` boolean, required: `true` means the fee is already accounted for in the quoted amounts and must not be added again as a separate user payment. `false` means the user pays it on top of `fromAmount`.
          - `feeSplit` object: Response-only breakdown of this fee entry's `amount` into the parties that share it. Returned for the LI.FI/integrator fee entry and for a separate `Distributions` entry when distributions are present; omitted for fees such as a relayer or bridge gas fee. For the LI.FI/integrator entry, `lifiFee`, `integratorFee`, and `intermediaryFee` (when present) are disjoint slices of its `amount`. For the `Distributions` entry, `lifiFee` and `integratorFee` are both "0"; its `amount` is the sum of its distribution recipients. `recipients[]` describes only the parent fee entry. It is a breakdown of that entry's `amount`, not an additional charge. This field is returned, not accepted: the API ignores a `feeSplit` posted in a request body, so integrations must read the split from the response instead of echoing back a previously quoted one.
            - `lifiFee` string: LI.FI's slice of `amount`, in the smallest unit of `token`.
            - `integratorFee` string: The integrator's slice of `amount`, in the smallest unit of `token`. It excludes intermediary fees (reported separately as `intermediaryFee`) and distributions (reported in a separate `Distributions` fee entry). It is "0" on the `Distributions` entry.
            - `intermediaryFee` string: The intermediary's slice of `amount`, in the smallest unit of `token`. Present only when an intermediary participates in the split.
            - `recipients` object[]: Per-recipient breakdown of this fee entry's `amount`. The LI.FI/integrator entry lists its own recipients, excluding partner-specified distributions. Those are listed in the separate `Distributions` entry's own `feeSplit.recipients[]`, with type `DISTRIBUTION` and one record per distribution.
              - …
        - `gasCosts` GasCost[]: Estimated network gas for the transfer. On a `lifi` step this is a single estimate for the transaction that is actually submitted. It aggregates raw gas costs from source-chain entries in `includedSteps` and, for EVM transactions, adds estimated LI.FI contract overhead. It may differ from and often exceed the sum of the source-chain per-step entries. Raw destination-chain gas costs are not added directly. Do not add the top-level and included-step arrays together.
          - `type` 'SUM' | 'APPROVE' | 'SEND' | 'FEE', required: The kind of gas cost this entry represents. - `SEND`: estimated network gas for the transaction the sender submits, normally on the source chain. This is the only value the API currently returns. - `APPROVE`: estimated network gas for a separate ERC-20 approval transaction. Reserved; approval gas is not currently returned as its own entry. - `FEE`: an execution cost charged as a fee rather than as a transaction the user signs. Reserved; such costs are currently reported in `feeCosts` instead. - `SUM`: an aggregate of the other entries. Reserved and not currently returned. Treat `APPROVE`, `FEE`, and `SUM` as forward-compatible values: handle them if they appear, but do not build a flow that depends on them.
          - `price` string: Gas price used for the estimate, in the smallest unit of the gas token per unit of gas (wei per gas on EVM chains).
          - `estimate` string: Estimated units of gas the transaction consumes
          - `limit` string: Suggested gas limit: `estimate` plus a safety buffer. Use this value when submitting the transaction, not `estimate`.
          - `amount` string, required: The estimated total gas cost in the smallest unit of the gas token. For EVM entries this is `estimate` multiplied by `price`. Other ecosystems may use chain-specific units and rounding, so consumers should treat `amount` as authoritative rather than reconstructing it from the other fields. Divide by `10 ** token.decimals` for a human-readable amount.
          - `amountUSD` string: Amount of the gas cost in USD
          - `token` Token, required: Representation of a Token
            - `address` string, required: Address of the token
            - `decimals` number, required: Number of decimals the token uses
            - `symbol` string, required: Symbol of the token
            - `chainId` number, required: Id of the token's chain
            - `coinKey` string: Identifier for the token
            - `name` string, required: Name of the token
            - `logoURI` string: Logo of the token
            - `priceUSD` string: Token price in USD
        - `executionDuration` number, required: The time needed to complete the following step
        - `data` object: Arbitrary data that depends on the the used tool
          - `bid` object
            - `user` string
            - `router` string
            - `initiator` string
            - `sendingChainId` number
            - `sendingAssetId` string
            - `amount` string
            - `receivingChainId` number
            - `receivingAssetId` string
            - `amountReceived` string
            - `receivingAddress` string
            - `transactionId` string
            - `expiry` number
            - `callDataHash` string
            - `callTo` string
            - `encryptedCallData` string
            - `sendingChainTxManagerAddress` string
            - `receivingChainTxManagerAddress` string
            - `bidExpiry` number
          - `bidSignature` string
          - `gasFeeInReceivingToken` string
          - `totalFee` string
          - `metaTxRelayerFee` string
          - `routerFee` string
      - `includedSteps` object[], required: The steps included in the quoted step.
        - `tool` string, required
        - `type` string, required
        - `action` Action, required: Object describing what happens in a `Step`
          - `fromChainId` number, required: The id of the chain where the transfer should start
          - `fromAmount` string, required: The amount that should be transferred including all decimals
          - `fromToken` Token, required: Representation of a Token
            - `address` string, required: Address of the token
            - `decimals` number, required: Number of decimals the token uses
            - `symbol` string, required: Symbol of the token
            - `chainId` number, required: Id of the token's chain
            - `coinKey` string: Identifier for the token
            - `name` string, required: Name of the token
            - `logoURI` string: Logo of the token
            - `priceUSD` string: Token price in USD
          - `toChainId` number, required: The id of the chain where the transfer should end
          - `toToken` Token, required: Representation of a Token
            - `address` string, required: Address of the token
            - `decimals` number, required: Number of decimals the token uses
            - `symbol` string, required: Symbol of the token
            - `chainId` number, required: Id of the token's chain
            - `coinKey` string: Identifier for the token
            - `name` string, required: Name of the token
            - `logoURI` string: Logo of the token
            - `priceUSD` string: Token price in USD
          - `slippage` number, double: The maximum allowed slippage
          - `fromAddress` string: The sending wallet address
          - `toAddress` string: The receiving wallet address
        - `estimate` Estimate, required: An estimate for the current transfer
          - `tool` string, required: The tools that is being used for this step
          - `fromAmount` string, required: The amount that should be transferred including all decimals
          - `fromAmountUSD` string: The amount that should be transferred in USD equivalent
          - `toAmount` string, required: The estimated resulting amount of the `toToken` including all decimals
          - `toAmountMin` string, required: The minimal outcome of the transfer including all decimals. It may reflect applicable slippage and known fee-on-transfer tax adjustments.
          - `toAmountUSD` string: The estimated resulting amount of the `toToken` in USD equivalent
          - `approvalAddress` string, required: The contract address for the approval
          - `skipApproval` boolean: Optional flag indicating that this step needs no token approval, because the executing contract moves funds under the authorization already carried by the signed transaction or message.
          - `feeCosts` FeeCost[]: Fees charged on the transfer. On a `lifi` step this array is the concatenation of the fee costs of every entry in `includedSteps`, so it already contains them. Do not add both together.
            - `name` string, required: Human-readable name of the fee, for example `LIFI Fixed Fee` or `Relayer Gas fee`. Names are tool-specific free text and are not a stable enum. Do not branch on this value.
            - `description` string: Description of the fee costs
            - `percentage` string, required: The fee expressed as a fraction of the transferred amount, for example `0.0025` for 0.25%. A fee whose name contains `Fixed` may still report a non-zero fraction; do not infer the fee model from `name` or assume fixed-fee entries report `0`.
            - `token` Token, required: Representation of a Token
              - …
            - `amount` string: The fee amount in the smallest unit of `token`, before decimals are applied. Divide by `10 ** token.decimals` for a human-readable amount.
            - `amountUSD` string, required: The amount of fees in USD
            - `included` boolean, required: `true` means the fee is already accounted for in the quoted amounts and must not be added again as a separate user payment. `false` means the user pays it on top of `fromAmount`.
            - `feeSplit` object: Response-only breakdown of this fee entry's `amount` into the parties that share it. Returned for the LI.FI/integrator fee entry and for a separate `Distributions` entry when distributions are present; omitted for fees such as a relayer or bridge gas fee. For the LI.FI/integrator entry, `lifiFee`, `integratorFee`, and `intermediaryFee` (when present) are disjoint slices of its `amount`. For the `Distributions` entry, `lifiFee` and `integratorFee` are both "0"; its `amount` is the sum of its distribution recipients. `recipients[]` describes only the parent fee entry. It is a breakdown of that entry's `amount`, not an additional charge. This field is returned, not accepted: the API ignores a `feeSplit` posted in a request body, so integrations must read the split from the response instead of echoing back a previously quoted one.
              - …
          - `gasCosts` GasCost[]: Estimated network gas for the transfer. On a `lifi` step this is a single estimate for the transaction that is actually submitted. It aggregates raw gas costs from source-chain entries in `includedSteps` and, for EVM transactions, adds estimated LI.FI contract overhead. It may differ from and often exceed the sum of the source-chain per-step entries. Raw destination-chain gas costs are not added directly. Do not add the top-level and included-step arrays together.
            - `type` 'SUM' | 'APPROVE' | 'SEND' | 'FEE', required: The kind of gas cost this entry represents. - `SEND`: estimated network gas for the transaction the sender submits, normally on the source chain. This is the only value the API currently returns. - `APPROVE`: estimated network gas for a separate ERC-20 approval transaction. Reserved; approval gas is not currently returned as its own entry. - `FEE`: an execution cost charged as a fee rather than as a transaction the user signs. Reserved; such costs are currently reported in `feeCosts` instead. - `SUM`: an aggregate of the other entries. Reserved and not currently returned. Treat `APPROVE`, `FEE`, and `SUM` as forward-compatible values: handle them if they appear, but do not build a flow that depends on them.
            - `price` string: Gas price used for the estimate, in the smallest unit of the gas token per unit of gas (wei per gas on EVM chains).
            - `estimate` string: Estimated units of gas the transaction consumes
            - `limit` string: Suggested gas limit: `estimate` plus a safety buffer. Use this value when submitting the transaction, not `estimate`.
            - `amount` string, required: The estimated total gas cost in the smallest unit of the gas token. For EVM entries this is `estimate` multiplied by `price`. Other ecosystems may use chain-specific units and rounding, so consumers should treat `amount` as authoritative rather than reconstructing it from the other fields. Divide by `10 ** token.decimals` for a human-readable amount.
            - `amountUSD` string: Amount of the gas cost in USD
            - `token` Token, required: Representation of a Token
              - …
          - `executionDuration` number, required: The time needed to complete the following step
          - `data` object: Arbitrary data that depends on the the used tool
            - `bid` object
              - …
            - `bidSignature` string
            - `gasFeeInReceivingToken` string
            - `totalFee` string
            - `metaTxRelayerFee` string
            - `routerFee` string
      - `integrator` string: The integrator the quote was issued for.
      - `gasLimit` string, required: The gas limit of the transaction that was proposed at quote time.
      - `createdAt` string, date-time, required: When the quote was issued (ISO 8601).
      - `routeSlippage` RouteSlippageCommitment: Route-wide slippage commitment attached to a route and its steps when the request used `slippageScope=route`. `minimumToAmount` is `ceil(referenceToAmount × (1 − slippage))` and doesn't change for the life of the route: every build of the transaction enforces at least this amount, or is refused.
        - `scope` 'route', required
        - `slippage` string, required: The budget for the whole route, as a decimal string, for example `0.01`
        - `referenceToAmount` string, required: The expected output the floor was computed from, in base units of the destination token
        - `minimumToAmount` string, required: The floor, in base units of the destination token. Also returned as `toAmountMin`.
        - `toChainId` integer, required: The chain the floor applies to
        - `toTokenAddress` string, required: The token the floor applies to
        - `toAddress` string: The recipient the delivery is measured at
        - `settlement` 'atomic' | 'conditional', required: `atomic`: a single transaction; a delivery below the floor reverts it. `conditional`: a cross-chain transfer. The source transaction enforces the source checkpoint, and the bridge holds the floor from there: Mayan, Across and Stargate V2 carry it in their own order, and other bridges are built only when their own minimum reaches it. A bridge that can't deliver its minimum refunds or recovers instead, which `/v1/status` reports as `NOT_FULFILLED`.
        - `checkpoints` object[], required: Amounts enforced along the way. `atomic`: one entry, the floor. `conditional`: the source checkpoint (the minimum the source transaction must hand to the bridge, in the bridged token) followed by the floor.
          - `stepId` string, required
          - `chainId` integer, required
          - `tokenAddress` string, required
          - `minimumAmount` string, required
    - `routeSlippage` RouteSlippageOutcome: How a route-wide slippage commitment played out, judged from the transfer's final state. Present on the status response only for transfers requested with `slippageScope=route`.
      - `outcome` 'PENDING' | 'FULFILLED' | 'NOT_FULFILLED', required: `FULFILLED`: the committed token arrived on the committed chain with at least `minimumToAmount`. `NOT_FULFILLED`: it didn't, see `shortfall`. `PENDING`: the transfer is still in flight, or its delivery isn't resolved yet.
      - `minimumToAmount` string, required: The floor, in base units of the committed token
      - `deliveredAmount` string: What arrived in the committed token, once known
      - `shortfall` 'REVERTED' | 'REFUNDED' | 'DIFFERENT_TOKEN' | 'BELOW_FLOOR': Why the floor wasn't met. `REVERTED`: the source transaction reverted. `REFUNDED`: the bridge refunded instead of delivering. `DIFFERENT_TOKEN`: another token was delivered, for example a recovered bridged token. `BELOW_FLOOR`: the committed token arrived under the floor, which isn't an expected outcome: the bridge delivered under the minimum it was built with.

---

[API](https://skmtc.dev/lifi/apis/li-fi-api.md) - [All operations](https://skmtc.dev/lifi/apis/li-fi-api/llms.txt) - [OpenAPI document](https://skmtc.dev/lifi/apis/li-fi-api/revisions/82e72a7fa5e0?raw)
