Token Account

Holds a balance of one specific token for one specific owner. Associated Token Accounts (ATAs) are the standard derivation of this account.

Token Program 165 bytes

Sample: Jupiter USDC

(cached; refreshes hourly · mainnet only)

Mint Owner Amount Delegate Option Delegate (empty) State Is Native Native (reserved) Delegated Amount Close Authority Option Close Authority (empty)
0 1 2 3 4 5 6 7 8 9 A B C D E F
0000 c6 fa 7a f3 be db ad 3a 3d 65 f3 6a ab c9 74 31
0010 b1 bb e4 c2 d2 f6 e0 e4 7c a6 02 03 45 2f 5d 61
0020 04 79 d5 5b f2 31 c0 6e ee 74 c5 6e ce 68 15 07
0030 fd b1 b2 de a3 f4 8e 51 02 b1 cd a2 56 bc 13 8f
0040 27 96 6d 0c 00 00 00 00 00 00 00 00 00 00 00 00
0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0060 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00a0 00 00 00 00 00

A Token Account holds one wallet's balance of one specific token. Every SPL token balance lives in its own 165-byte account.

SPL Token deliberately separates mint metadata (the Mint account) from individual balances (Token Accounts). The same token — say USDC — exists as exactly one Mint and millions of Token Accounts, one per holder. Most wallets use Associated Token Accounts (ATAs): given a wallet pubkey and a mint, the ATA address is the deterministic PDA derived from the pair, so any tool can compute it without on-chain lookup.

You encounter Token Accounts every time a wallet holds an SPL token — in wallet UIs, transfer instructions, DEX swap routes, and balance lookups. An "account not found" on a transfer usually means the recipient's ATA hasn't been created yet.

The 165-byte layout: mint (which token, 32 bytes), owner (which wallet, 32 bytes), amount (balance in atomic units, 8 bytes), delegate (optional approved spender, 36 bytes with the Option tag), state (1 byte: Uninitialized, Initialized, or Frozen), is_native (whether this is wrapped SOL, 12 bytes including the Option), delegated_amount, and close_authority. Frozen accounts can still receive tokens but can't send them — used by issuers like Circle for compliance.