Skip to main content
POST
getTransfersByAddress
curl --request POST \
  --url 'https://mainnet.helius-rpc.com/?api-key=' \
  --header 'Content-Type: application/json' \
  --data '
{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "getTransfersByAddress",
  "params": [
    "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
    {
      "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
      "limit": 50
    }
  ]
}
'
{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "data": [
      {
        "signature": "5GEX7Q3X5Q8yJGbKYoR7mtzQmG8tpoEwzjPgqVmn3y5xg3yKwqXcDdN5YVcc9V6vA4TuH5iM6FHRVhTxvz4AX2zG",
        "slot": 315073428,
        "blockTime": 1736159420,
        "type": "transfer",
        "fromUserAccount": "7hPhaUpydpvm8wtiS3k4LPZKUmivQRs7YQmpE1hFshHx",
        "toUserAccount": "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
        "fromTokenAccount": "HcvK3EJ74iM9g11cUgsaPvLSrhCvCwcrWxBNd87LsC1x",
        "toTokenAccount": "CBcYniR9G9CN3zGMnwNE4SWbqkYWvCFVreEob9xHnQCY",
        "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
        "amount": "2500000",
        "decimals": 6,
        "uiAmount": "2.5",
        "confirmationStatus": "finalized",
        "transactionIdx": 35,
        "instructionIdx": 1,
        "innerInstructionIdx": 0
      }
    ],
    "paginationToken": "315073428:35:1:0:splTransfer"
  }
}

Documentation Index

Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt

Use this file to discover all available pages before exploring further.

Overview

getTransfersByAddress returns parsed, human-readable transfer objects for token and native SOL movement involving a wallet address. Use filters to narrow results by mint, block time, amount, slot, direction, or counterparty. The response is designed for accurate wallet activity views, payment tracking, and balance reconciliation without reimplementing Solana transfer parsing.
Data Retention - Only the most recent 1 year of transfer history is currently available.

Request Parameters

The address parameter is the wallet owner address, not an associated token account (ATA). The API finds transfer activity for token accounts owned by that wallet.
address
string
required
Base58-encoded owner wallet address to query transfers for. Pass the wallet owner address, not an associated token account (ATA).
config
object
Optional configuration object.
with
string
Filter by counterparty address. Returns only transfers to or from this address.
direction
string
default:"any"
Filter by transfer direction relative to address.
  • in
  • out
  • any
mint
string
Filter by token mint address. Use So11111111111111111111111111111111111111111 for native SOL and So11111111111111111111111111111111111111112 for WSOL.
solMode
string
default:"merged"
SOL/WSOL display mode.
  • merged: Treat WSOL as native SOL and exclude wrap/unwrap lifecycle rows so SOL-denominated history is easier to reconcile.
  • separate: Preserve WSOL as a distinct SPL token mint and include wrap/unwrap lifecycle rows.
filters
object
Additional filters for amount, block time, and slot.
filters.amount
object
Filter by raw transfer amount, not UI amount.
filters.amount.gt
number
Amount must be greater than this raw integer value.
filters.amount.gte
number
Amount must be greater than or equal to this raw integer value.
filters.amount.lt
number
Amount must be less than this raw integer value.
filters.amount.lte
number
Amount must be less than or equal to this raw integer value.
filters.blockTime
object
Filter by block timestamp in Unix seconds.
filters.blockTime.gt
number
Block time must be greater than this Unix timestamp.
filters.blockTime.gte
number
Block time must be greater than or equal to this Unix timestamp.
filters.blockTime.lt
number
Block time must be less than this Unix timestamp.
filters.blockTime.lte
number
Block time must be less than or equal to this Unix timestamp.
filters.slot
object
Filter by slot number.
filters.slot.gt
number
Slot must be greater than this value.
filters.slot.gte
number
Slot must be greater than or equal to this value.
filters.slot.lt
number
Slot must be less than this value.
filters.slot.lte
number
Slot must be less than or equal to this value.
limit
number
default:"100"
Maximum number of transfers to return. Range: 1 to 100.
paginationToken
string
Cursor from the previous response for pagination.
commitment
string
default:"finalized"
Data commitment level.
  • finalized
  • confirmed
sortOrder
string
default:"desc"
Result ordering.
  • desc
  • asc

Response Fields

data
TokenTransfer[]
Transfer records for the requested address.
paginationToken
string | null
Cursor for the next page, or null when there are no more results.
TokenTransfer.signature
string
Base58-encoded transaction signature.
TokenTransfer.slot
number
Slot number containing the transaction.
TokenTransfer.blockTime
number
Unix timestamp in seconds for the block.
TokenTransfer.type
string
Transfer type: transfer, mint, burn, wrap, unwrap, changeOwner, or withdrawWithheldFee.
TokenTransfer.fromUserAccount
string | null
Wallet address that sent the tokens, or null when no sender exists. This field is always present.
TokenTransfer.toUserAccount
string | null
Wallet address that received the tokens, or null when no recipient exists. This field is always present.
TokenTransfer.fromTokenAccount
string
Source token account. Omitted when not applicable, such as native SOL transfers.
TokenTransfer.toTokenAccount
string
Destination token account. Omitted when not applicable, such as native SOL transfers.
Mint and burn transfers are one-sided. Mints have fromUserAccount: null and can only be returned as inbound transfers for the recipient. Burns have toUserAccount: null and can only be returned as outbound transfers for the burning owner.
TokenTransfer.mint
string
Token mint address. Native SOL uses So11111111111111111111111111111111111111111; WSOL uses So11111111111111111111111111111111111111112 when solMode is separate.
TokenTransfer.amount
string
Raw transfer amount as a string to preserve precision. For fee-bearing Token-2022 transfers, this is the amount received by the destination.
TokenTransfer.feeAmount
string
Transfer fee withheld by the Token-2022 transfer-fee extension. Present only on fee-bearing transfers. For fee-bearing transfers, the source is debited amount + feeAmount, and the destination is credited amount.
TokenTransfer.decimals
number
Token decimals. Native SOL uses 9.
TokenTransfer.uiAmount
string
Human-readable amount, calculated from amount / 10^decimals.
TokenTransfer.feeUiAmount
string
Human-readable fee amount. Present only when feeAmount is present.
TokenTransfer.confirmationStatus
string
finalized or confirmed.
TokenTransfer.transactionIdx
number
Index of the transaction within the block.
TokenTransfer.instructionIdx
number
Index of the instruction within the transaction.
TokenTransfer.innerInstructionIdx
number
Index within inner instructions. 0 when the transfer is top-level.

Authorizations

api-key
string
query
required

Your Helius API key. You can get one for free in the dashboard.

Body

application/json
jsonrpc
enum<string>
default:2.0
required

The JSON-RPC protocol version.

Available options:
2.0
Example:

"2.0"

id
string
default:1
required

A unique identifier for the request.

Example:

"1"

method
enum<string>
default:getTransfersByAddress
required

The name of the RPC method to invoke.

Available options:
getTransfersByAddress
Example:

"getTransfersByAddress"

params
tuple
required

Array containing the required wallet address and optional configuration object.

Example:
[
"86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
{
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"limit": 50,
"sortOrder": "desc"
}
]

Response

Successfully retrieved transfers for the specified address.

jsonrpc
enum<string>

The JSON-RPC protocol version.

Available options:
2.0
Example:

"2.0"

id
string

Identifier matching the request.

Example:

"1"

result
object

Transfer data and pagination information.