NoLimitNodes
PricingDocsBlogAbout
SupportContact
Log in
  1. Home/
  2. Products/
  3. Enhanced Streams/
  4. Wallet Transfers
Enhanced Stream

A unified Solana wallet-transfer stream for SOL and SPL tokens

Tracking wallet activity on Solana means combining two streams that look the same on paper and behave very differently in practice. SOL moves through the System Program (11111111111111111111111111111111) via Transfer and TransferWithSeed. SPL tokens move through TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA via Transfer and TransferChecked, plus the equivalent on Token-2022. Two programs, four instruction discriminators, two account-layout conventions, and the inconvenient truth that a single user transaction often emits both: a SOL transfer to fund the destination's rent, then a TransferChecked to actually move the token. Subscribe to one program and you only see half the wallet's life. We merge them into one parsed stream over gRPC, with the source, destination, mint (or SOL), amount in raw units, amount in human units, and the slot timestamp on every event.

SOL + SPL + Token-2022Real-time deliveryDecoded source / destination / mintFilter by wallet via accountRequiredgRPC + WebSocketFree RPC tier
On-chain programs
  • System Program11111111111111111111111111111111, Native SOL transfers via Transfer and TransferWithSeed. Also creates accounts
  • SPL Token programTokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA, Original SPL token program. Transfer and TransferChecked move tokens between ATAs
  • Token-2022 programTokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb, Token-2022 with extensions. TransferChecked is required when fee or hook extensions are active
  • Associated Token Account programATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL, Creates ATAs on demand. Often appears alongside the first transfer to a wallet

Try it live: SOL & token transfers

decoded solana events over grpc · click Run to see live data

2 streamslive
SOL & Token Transfers
All native SOL and SPL token transfers network-wide
1grpcurl -H "x-api-key: YOUR_API_KEY" \
2  -d '{"topic":"prod.rpc.solana.system.transfers","format":"JSON"}' \
3  stream-1.nln.clr3.org:443 nln.stream.v1.StreamService/Subscribe
Live Output

See real data

Click Run to stream 5 live SOL & Token Transfers messages

Pro: 2 streams $49/mo · Ultra: 20 streams $199/mo · pre-parsed, zero infra

The transfer events you can stream

every System Program and SPL Token transfer, decoded

EventTypeDescriptionFrequency
Transfer (System Program)instructionNative SOL transfer. Carries source, destination, and lamports. The cleanest "wallet sent SOL" signal.Very high
TransferWithSeed (System Program)instructionSOL transfer from a derived address. Used by program authority pubkeys; surfaces program-controlled SOL flows.Low
Transfer (SPL Token)instructionLegacy SPL Transfer. Carries amount in raw units; you need decimals from the mint to humanize.Very high
TransferChecked (SPL Token)instructionDecimals-checked SPL Transfer. Carries amount and decimals in the instruction itself, eliminating the mint round-trip.Very high
TransferChecked (Token-2022)instructionToken-2022 transfer. Required when transfer fees or transfer hooks are active on the mint.High
TransferCheckedWithFee (Token-2022)instructionToken-2022 transfer with explicit fee accounting. The fee accumulates in a withheld balance the authority can later withdraw.Low
Create (ATA program)instructionAssociated Token Account creation. Often paired with the first inbound transfer to a wallet.High
CloseAccount (SPL Token)instructionCloses an empty token account and returns the rent. Useful as a wind-down signal in wallet activity.High

Wallet-transfer streaming performance

last reviewed 2026-04-28

Daily transfer volume
40-80M / day
Combined System Program + SPL Token + Token-2022 transfer instructions
Verified 2026-04-28
Wallets you can watch concurrently
Unbounded
accountRequired list size has no hard cap; sustained tests at 50k+ wallets
Verified 2026-04-28
Stream uptime SLO
99.95%
Pro and Ultra plans, monthly rolling

System Program Transfer vs SPL Token Transfer

The first thing most newcomers to Solana get wrong is treating “a transfer” as one thing. It isn't. SOL and SPL tokens move through different programs with different account conventions and different instruction shapes.

PropertySystem (SOL)SPL Token
Program11111111111111111111111111111111TokenkegQ...VQ5DA
SourceWallet address directlyATA owned by wallet
DestinationWallet address directlyATA owned by wallet
Amount unitlamports (1e-9 SOL)raw mint units
Decimalsfixed at 9per-mint, fetch separately
Recommended ixTransferTransferChecked

The SPL side has the extra step of resolving Associated Token Accounts back to their wallet owners. The Token program transfer instruction names the source ATA, the destination ATA, the authority, and the amount, but it doesn't name the human wallets. That mapping lives in the transaction's preTokenBalances and postTokenBalances metadata, which the validator emits alongside the instruction list. Our parsed event resolves the ATA-to-owner walk for you, so the field you read is fromOwner, not fromATA.

Why one unified stream beats two separate ones

Real wallet activity blends SOL and SPL flows in the same transaction routinely. The most common case: you send USDC to a wallet that doesn't have a USDC ATA. The sender pays ~0.00204 SOL via System Program Transfer to fund the new ATA's rent, and then the SPL TransferChecked moves the USDC. Both instructions land in one signature.

If you subscribe to the two programs separately, you see those as two unrelated events arriving on different sockets. Reconciling them after the fact is annoying, error-prone at scale, and adds latency. A single subscription that includes both programs and parses transfers from both into a uniform shape lets you treat the transaction as one event with two legs.

Other patterns where the merge matters:

  • Bot fee + token swap. A trading bot wraps SOL, swaps via Jupiter, and unwraps SOL all in one signature; the wrap and unwrap are System Program transfers, the swap leg is SPL.
  • NFT purchase. SOL flows to the seller, SPL transfers move the NFT mint and any royalty token; both inside one tx.
  • Stablecoin payouts. Some payroll programs settle SOL gas reimbursement and USDC salary in the same tx for efficiency.

The unified stream surfaces these as a single event with both legs attached. You decide downstream whether to dedupe by signature, group by sender, or count each leg as its own movement.

Filtering by destination wallet (and why exchange-deposit detection works)

Yellowstone gRPC supports two filter axes that matter here: accountInclude (which programs the tx must touch) and accountRequired (which addresses must appear in the tx, in any role). Combine them and you've got a precise per-wallet feed.

For exchange deposit detection, the pattern is one subscription with accountInclude set to System and SPL Token, plus accountRequired set to the list of exchange hot-wallet addresses you care about. We've sustained tests at 50,000+ wallets in the required list on a single subscription with no measurable latency hit; accountRequired is OR'd at the validator level, so the cost is mostly fixed.

The same pattern works for whale tracking, treasury monitoring, smart-contract treasury accounts, and protocol fee accounts. Subscribe once, get only the transactions touching addresses you care about, decode the transfer leg.

A common gotcha: if you put a wallet in accountRequired but forget the SPL Token program in accountInclude, you'll only see SOL movements, not token movements. Always include both programs when watching wallet activity.

SOL fan-out patterns and what they tell you

The same address spraying SOL to many destinations in one tx is a high-signal pattern. The interpretation depends on context, but the shape is usually one of these:

Sniper farm prep

One funder wallet sends a small amount of SOL to many fresh wallets, often with sequential gas amounts. Those fresh wallets are about to spawn parallel sniper bots on a launch. Catch this pattern and you can warn for a coordinated entry before the launch tx lands.

Wash-trading prep

Same shape, different goal: the funder is seeding wallets that will trade against each other in a target token to manufacture volume. Common in low-liquidity memecoins.

Airdrop or payout

Legitimate fan-out: a project wallet distributing rewards or an exchange paying out withdrawals. Distinguishable by the destination diversity (long-tail wallets, not fresh ones) and the funder's history.

Pre-rug funding

Token creator splitting future-rug proceeds across a tree of wallets ahead of the actual liquidity pull. Pair this with the Token Creations stream and you get the strongest pre-rug signal available on chain.

The stream gives you the events; the classifier is yours. We don't score wallets for you because the right scoring is domain-specific (a sniper-detection product wants different weights than a compliance product).

What teams build with the wallet-transfers stream

We see five durable categories of consumer for this feed.

Whale trackers and copy traders. Watch a curated set of high-PnL wallets, post their swaps and transfers to a Discord, copy the trades on a separate execution wallet. Latency matters: most of the alpha decays inside 30 seconds. gRPC.

Exchange flow analytics. Net deposits to / from CEX hot wallets, tracked in real time, charted alongside price. Useful internally for trading desks; useful as a public dashboard for engagement.

Compliance and AML. Sanctioned wallet monitoring, mixer-output tracking, sanctions-list deposits to exchanges. The stream is the ingestion layer; the rules engine sits downstream.

Wallet apps. In-app push notifications for incoming transfers. The stream lets a wallet provider notify a user before the transaction even shows up in their explorer of choice.

Treasury monitoring. DAO treasuries, protocol fee accounts, foundation wallets. Real-time visibility on every movement, with optional Slack/email alerts for thresholds.

Frequently asked questions

Subscribe to the System Program (11111111111111111111111111111111) and add the destination wallet to your accountRequired filter. Every transaction touching that wallet on the System Program lands in your stream. The Transfer instruction itself carries source, destination, and lamports. For real-time detection, use Yellowstone gRPC; logsSubscribe over WebSocket works for prototypes but won't keep up at scale.
SPL transfers move between Associated Token Accounts (ATAs), not directly between wallets. Subscribe to the SPL Token program (TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA) and add the recipient's wallet to accountRequired. The TransferChecked instruction carries amount and decimals; map the destination ATA back to its owner via the Token Balance metadata in the transaction. Our parsed event includes ownerPostBalance and ownerPreBalance so you don't have to do the ATA-to-owner walk yourself.
Solana charges rent for accounts. When you send a token to a wallet that doesn't have an ATA for that mint yet, the sender funds the rent-exempt minimum (~0.00203928 SOL) into a fresh ATA via the System Program, then the SPL TransferChecked moves the actual token. Both instructions land in the same transaction. A unified stream makes that one event from the user's perspective; two separate subscriptions would make it look like two unrelated movements.
Transfer takes a raw amount and trusts the caller to know the mint's decimals. TransferChecked takes the amount, the mint, and the expected decimals; the program verifies that the mint matches. TransferChecked is the recommended instruction for any new code; it eliminates a class of bugs where a wallet UI displays the wrong amount because it guessed decimals incorrectly. Token-2022 with active extensions (transfer fees, transfer hooks) requires TransferChecked.
Yes. The pattern is: maintain a list of known exchange hot-wallet addresses (Binance, Coinbase, Kraken, OKX, Bybit, etc), subscribe to the System Program and SPL Token program, and put those addresses in accountRequired. Any tx touching the addresses comes through. For larger deposits, decoding the inbound Transfer or TransferChecked gives you the exact amount and the source wallet, which is the input to most CEX-flow analytics dashboards.
Filter on System Program transactions where your watched wallet is the source. Group by signature; a single transaction emitting 5+ Transfer instructions, each to a different destination, is the canonical fan-out pattern. Often a precursor to a wash-trading run, a token distribution, or a pre-rug move. The stream gives you each Transfer; the pattern logic lives in your code.
Free RPC and WebSocket access on the free tier. The parsed gRPC stream is on Pro ($49/mo, 2 streams) or Ultra ($199/mo, 20 streams). One Wallet Transfers subscription covers System + SPL + Token-2022. With accountRequired, you can watch tens of thousands of wallets in a single stream without a per-wallet surcharge.
Helius enhanced transactions are great if you want post-processed labeled data on a webhook; the meter is per-event, which adds up at high wallet counts. QuickNode is similar in shape and pricing. Bitquery's GraphQL is the right tool for backfilled wallet history queries. We ship parsed gRPC with the unified SOL+SPL feed in one subscription, flat pricing, and a 10x price guarantee against any like-for-like quote.

Related products

Solana System Events stream

Full System Program coverage including account creation, allocate, and assign, beyond just Transfer.

Token Creations stream

Pair with wallet transfers to catch creator pre-mines and rug-precursor flows.

Program streams catalog

Every decoded Solana program we expose, including System, SPL Token, Token-2022, and ATA.

Yellowstone gRPC nodes

The streaming layer behind every NoLimitNodes wallet-transfer subscription.

EZ Wallet hosted service

A turnkey wallet-tracking product built on this same stream, with a managed UI and alerts.

All Enhanced Streams

18 curated topics across DEXes, lifecycle, and system events. The catalog hub.

Start streaming wallet activity in under 60 seconds

Pro plan from $49/mo includes 2 parsed streams. Wallet Transfers counts as one stream and merges System Program, SPL Token, and Token-2022 transfers in a single feed. Ultra adds 20 streams.

See pricingTalk to sales

Ready to get started?

Get your free API key and start building in under 30 seconds.

Talk to Sales
NoLimitNodes

Solana RPC infrastructure built for performance and scale.

RPC Access
  • HTTP RPC
  • WebSocket
  • gRPC
Infrastructure
  • Compute Platform
  • VPS
  • VDS
  • Bare Metal
  • Geyser Plugin Hosting
Enhanced Streams
  • PumpFun
  • PumpSwap
  • Raydium
  • Orca
  • Meteora
  • System Events
  • Browse All →
Program Streams
  • PumpFun
  • PumpSwap
  • Raydium CLMM
  • Orca Whirlpool
  • Meteora DLMM
  • Jupiter Swap
  • Jupiter Perps
  • Kamino Lending
  • Browse All 37 →
Trading
  • EZWallet
Analytics
  • Historical Datasets
  • Historical Raw Blocks
Company
  • About
Resources
  • Pricing
  • Custom Development
  • Documentation
  • Blog
  • Support
  • Contact Sales
Compare
  • Yellowstone gRPC vs LaserStream
  • Triton vs Helius
  • Raydium API vs Helius
  • PumpSwap API vs Bitquery
  • QuickNode Streams vs NLN
  • All comparisons →
Legal
  • Terms & Conditions
  • Privacy Policy
© 2026 CLR3 Inc., operating as NoLimitNodes. Registered in Ontario, Canada. All rights reserved.solana mainnet