> ## Documentation Index
> Fetch the complete documentation index at: https://docs.goldsky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Transfers

> Get the native and ERC-20 transfers for one wallet across chains, newest first, with token metadata and the USD value at transfer time.

```text theme={"dark"}
GET https://api.goldsky.com/api/v1/feeds/wallets/transfers
```

Returns the native and ERC-20 transfers in and out of one wallet across the requested chains, newest first. Each row carries the token's metadata, the counterparty, and the USD value at transfer time. Use it to send "You received 50 USDC" notifications, match inbound transfers against the deposits you expect, or export a wallet's history for tax tools.

## Parameters

This endpoint accepts the [shared parameters](/feeds/api/overview#shared-parameters), plus the following.

<ParamField query="transfer_type" type="string">
  `native`, `erc20`, or both, comma-separated. Defaults to both. NFT transfer types (`erc721`, `erc1155`) are not supported yet and return `400`.
</ParamField>

<ParamField query="direction" type="string">
  `in` for transfers the wallet received, `out` for transfers it sent. Defaults to both.
</ParamField>

<ParamField query="from" type="string">
  Only return transfers at or after this time, as an RFC 3339 timestamp such as `2026-09-01T00:00:00Z`.
</ParamField>

<ParamField query="to" type="string">
  Only return transfers at or before this time, as an RFC 3339 timestamp. Must not be earlier than `from`.
</ParamField>

<ParamField query="from_block" type="integer">
  Only return transfers at or after this block. Needs exactly one chain in `chains`, because block numbers mean different things on different chains. Without it, the request returns `422 CONFLICTING_FILTERS`.
</ParamField>

<ParamField query="to_block" type="integer">
  Only return transfers at or before this block. Needs exactly one chain in `chains`, and must not be lower than `from_block`.
</ParamField>

By default, transfers of tokens Goldsky has no price source for are left out. If you match deposits in less common tokens, set `include_unknown_price=true` so none are missed.

## Response

<ResponseField name="data" type="object[]">
  One entry per transfer, newest first by `block_timestamp`.

  <Expandable title="properties">
    <ResponseField name="chain" type="string">
      Chain value, such as `base`. See [supported chains](/feeds/api/overview#supported-chains).
    </ResponseField>

    <ResponseField name="chain_family" type="string">
      `evm`.
    </ResponseField>

    <ResponseField name="block_number" type="integer">
      Block number of the transfer.
    </ResponseField>

    <ResponseField name="block_timestamp" type="string">
      Block timestamp.
    </ResponseField>

    <ResponseField name="transaction_hash" type="string">
      Transaction hash.
    </ResponseField>

    <ResponseField name="from_address" type="string">
      Sender address.
    </ResponseField>

    <ResponseField name="to_address" type="string">
      Recipient address.
    </ResponseField>

    <ResponseField name="from_label" type="string | null">
      Reserved for a sender label. Always `null` today.
    </ResponseField>

    <ResponseField name="to_label" type="string | null">
      Reserved for a recipient label. Always `null` today.
    </ResponseField>

    <ResponseField name="direction" type="string">
      `in` if the wallet you asked about received the transfer, `out` if it sent it.
    </ResponseField>

    <ResponseField name="token_address" type="string">
      Token contract address. The zero address for the chain's native token.
    </ResponseField>

    <ResponseField name="token_symbol" type="string | null">
      Token symbol.
    </ResponseField>

    <ResponseField name="token_name" type="string | null">
      Token name.
    </ResponseField>

    <ResponseField name="token_decimals" type="integer | null">
      Token decimals.
    </ResponseField>

    <ResponseField name="token_logo_url" type="string | null">
      URL of the token logo.
    </ResponseField>

    <ResponseField name="amount_raw" type="string">
      Amount in the token's smallest unit.
    </ResponseField>

    <ResponseField name="price_usd" type="number | null">
      Token price in USD at the time of the transfer. It's the last price Goldsky recorded shortly before the transfer's block, or `null` if there is none close enough.

      Major stablecoins are priced at `1.0`.
    </ResponseField>

    <ResponseField name="amount_usd" type="number | null">
      `amount_raw / 10^token_decimals * price_usd`. `null` when `price_usd` or `token_decimals` is `null`.
    </ResponseField>

    <ResponseField name="transfer_type" type="string">
      `native` or `erc20`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="pagination" type="object">
  See [pagination](/feeds/api/overview#pagination).
</ResponseField>

## How the data behaves

* **Transfers have no ID.** One transaction can contain several identical transfers, so deduplicating on `(chain, transaction_hash, from_address, to_address, token_address, amount_raw)` can drop real ones.
* **Reorgs remove rows without notice.** There is no `removed` flag. A transfer reversed by a chain reorganization stops appearing in responses. If its transaction lands again, it can have a different `block_number` and `block_timestamp`, so don't build keys from block fields.
* **USD values can change.** The API prices each transfer when you request it, so `price_usd` and `amount_usd` for an old transfer can change as Goldsky's price history fills in.
* **Chains are merged by time.** Rows from different chains are interleaved by `block_timestamp`. Two transfers on different chains with the same timestamp can have happened in either order.

## Example

This request gets the most recent transfer into a wallet on Base:

```bash theme={"dark"}
curl "https://api.goldsky.com/api/v1/feeds/wallets/transfers?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&chains=base&direction=in&page_size=1&key=$GOLDSKY_FEEDS_API_KEY"
```

```json theme={"dark"}
{
  "data": [
    {
      "chain": "base",
      "chain_family": "evm",
      "block_number": 51496203,
      "block_timestamp": "2026-09-19T01:35:53.000Z",
      "transaction_hash": "0x1d56f2edf92fc043da30a3af245a6d97733e57bd6a91b8116cdc0ef169964ec8",
      "from_address": "0xc5b87910fc3733f8a9cc8f8993cf2c6c7f8a4ab3",
      "to_address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
      "from_label": null,
      "to_label": null,
      "direction": "in",
      "token_address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "token_symbol": "USDC",
      "token_name": "USDC",
      "token_decimals": 6,
      "token_logo_url": "https://coin-images.coingecko.com/coins/images/6319/large/USDC.png?1769615602",
      "amount_raw": "1000000",
      "price_usd": 1.0,
      "amount_usd": 1.0,
      "transfer_type": "erc20"
    }
  ],
  "pagination": {
    "next_page_token": "eyJzIjoiYmxvY2tfdGltZXN0YW1wX2Rlc2MiLCJrIjoi...",
    "prev_page_token": null,
    "page_size": 1
  }
}
```


## Related topics

- [Native transfers](/turbo-pipelines/guides/token-transfers/native-transfers.md)
- [Stablecoin transfers](/turbo-pipelines/guides/token-transfers/stablecoin-transfers.md)
- [ERC-1155 transfers](/turbo-pipelines/guides/token-transfers/ERC-1155-transfers.md)
- [ERC-721 transfers](/turbo-pipelines/guides/token-transfers/ERC-721-transfers.md)
- [ERC-20 transfers](/turbo-pipelines/guides/token-transfers/ERC-20-transfers.md)
