Introducing tokenAccount filters for getTransactionsForAddress
/Updates

Introducing Token Account Filters for gTFA

3 min read

Last October we released getTransactionsForAddress, a new Solana RPC call for querying historical data that combines getSignaturesForAddress and getTransaction into one method.

Today, we're excited to announce getTransactionsForAddress (gTFA) can now query a wallet’s token transfer history with a single RPC call. 

The new tokenAccounts feature allows users to include transactions for the wallet’s associated token accounts—previously omitted from gTFA and its predecessor, getSignaturesForAddress.

Before, developers were forced to query getTokenAccountsByOwner and then getSignaturesForAddress for every token account. 

This was slow and expensive, often requiring 100s of extra RPC calls.

Now, it only takes a single call to getTransactionsForAddress with tokenAccounts.

The Problem

On Solana, your wallet doesn't actually hold tokens directly.

Instead, your wallet owns Associated Token Accounts (ATAs), and those token accounts hold your tokens. 

For example, when someone sends you USDC, it goes to your USDC token account instead of your main wallet address.

This creates a major headache when querying wallet transaction history:

When you call getSignaturesForAddress on a wallet, you only get transactions that directly reference that wallet address.

Token transfers that interact with your token accounts—but don't mention your wallet—simply don't show up.

The Workaround

Before today, developers had to implement a tedious workaround:

  1. Call getTokenAccountsByOwner to get token accounts for a wallet
  2. Call getSignaturesForAddress for the wallet itself
  3. Call getSignaturesForAddress for every single token account
  4. Merge all results together
  5. Deduplicate (many transactions touch multiple accounts)
  6. Sort chronologically

This approach is problematic for several reasons:

1. Performance is slow

A wallet with 50 token accounts requires 51+ RPC calls just to build a complete history. Professional traders, heavy DeFi users, or recreational memecoin traders can have hundreds of token accounts.

2. Pagination is inefficient

Want the 20 most recent transactions? You can't just fetch 20 from each source and merge—you need to fetch everything, dedupe, sort, and only then take the first 20 transactions. 

There's no way to efficiently paginate without over-fetching.

3. RPC costs add up

Each RPC call has overhead. Multiplying that overhead by 100+ calls per user request gets expensive fast, especially at scale.

The Solution

With the new tokenAccounts filter, you can get a complete wallet history in a single RPC request:

Code
{
    "jsonrpc": "2.0",
    "id": "helius-example",
    "method": "getTransactionsForAddress",
    "params": [
        "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
        {
            "filters": {
                "tokenAccounts": "all"
  },
            "sortOrder": "asc",
            "limit": 100
        }
    ]
}

That's it. One call. Complete history.

Filtering Options

The tokenAccounts filter provides three options: none, balanceChanged, and all.

none (default)

When the tokenAccounts filter is set to none, transactions must reference the wallet address.

When balanceChanged is applied, transactions reference the wallet address, or modify the balance of a tokenAccount owned by the wallet.

all

Setting tokenAccounts to all requires that transactions reference the address of the wallet or a token account owned by the wallet.

Use Cases

This new feature is essential for:

  • Wallets showing complete transaction history
  • Portfolio trackers that need every token movement
  • Tax software calculating gains/losses across all tokens
  • Analytics dashboards displaying user activity

Get Started

The tokenAccounts feature is available now.

Simply add tokenAccounts: balanceChanged (or all) to your filters object and you're set!

Not using getTransactionsForAddress yet?

Check out our docs and SDKs to learn more and to get started.

Related Articles

Subscribe to Helius

Stay up-to-date with the latest in Solana development and receive updates when we post