Skip to content

Chain · checked 9 November 2026

Agent payment safety checks for Solana

Solana is a high-throughput L1 where an agent pays in SPL tokens through per-wallet token accounts, using short-lived blockhashes and a choice of commitment level.

What your agent needs to know about Solana

Finality
Solana switched to Alpenglow consensus on mainnet on 21 October 2026 (epoch 1064), per Chainstack's docs. Under Alpenglow the confirmed and finalized commitment levels are equivalent: both mean the transaction is permanently committed and cannot be rolled back. A block finalizes in one round when at least 80% of stake participates, or in two rounds when at least 60% participates in each. Processed still means only that a node saw the block. Under the older Tower BFT model, confirmed meant at least 66% of stake voted and finalized added 31 confirmed blocks on top. Release goods or credit a payment only at confirmed or finalized, never processed.[1],[9]
Fees
Accounts that hold tokens must stay rent exempt, which the Anza docs define as a balance covering two years of rent. A transfer to a wallet with no token account for that mint needs a new account created first. This page states no priority fee or compute unit numbers: they move with demand, so read them from the network right before signing.[2],[3]
Stablecoins
Circle lists native USDC on Solana, and Tether lists native USDT on Solana. Both are SPL mints, so the mint address is the only reliable identity; the ticker is not. Circle's USDC terms let it block addresses and freeze USDC held at Circle-custodied addresses, and Tether's terms let it freeze Tether tokens; that applies to tokens held on Solana too. Circle's own Solana CCTP domain is 5 and supports both Standard and Fast Transfer.[4],[5],[6],[10],[11]
Issuer-published contract addresses. Compare all of it, not the first and last characters.
TokenAddressSource
USDC (native mint)EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v[4]
USDT (Tether)Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB[5]

How agent payments go wrong on Solana

  1. 1. Expired blockhash

    A transaction carries a recent blockhash, and the leader accepts one only up to MAX_PROCESSING_AGE, which the SDK sets to 150. A transaction that sits in a retry loop past that age can never land, and an agent that rebuilds and resigns without checking the first one may pay twice. Track the last valid block height, and before re-signing confirm the first signature did not land.[7]

  2. 2. Treating processed as final

    Processed only means one node saw the transaction on the majority fork. It has no stake vote behind it. An agent that fulfils an order at processed can be left with an unpaid order if that fork loses. Require confirmed or finalized before fulfilment.[1]

  3. 3. Recipient has no token account

    A token transfer fails if the recipient has no token account for that mint. Anyone can create the associated token account, and the wallet owns it afterwards. Derive the recipient ATA from wallet, token program and mint, and create it in the same transaction if it is missing.[3]

  4. 4. Token-2022 mint with extensions

    The Token-2022 docs list transfer fees, transfer hook, permanent delegate, default account state and pausable as extensions. A mint with these can behave differently from a plain SPL token (in practice the received amount may differ from the sent amount, or a transfer may be blocked). Read the mint's extensions before accepting or sending an unfamiliar token, and send with the correct token program ID.[8]

  5. 5. Lookalike mint

    Any token can be named USDC or USDT. Only the mint addresses on Circle's and Tether's own pages are the issuer's tokens. Compare the mint to an allowlist before every payment, not the symbol.[4],[5]

Pre-flight checklist for a Solana agent

  • Compare the token mint to the issuer-published address, never the symbol.
  • Require confirmed or finalized commitment before fulfilling an order.
  • Record the last valid block height for each signed transaction and look up the signature before re-signing.
  • Derive the recipient ATA and create it if it does not exist, or reject the payment.
  • Read the mint account for Token-2022 extensions and reject mints with unexpected ones.
  • Check the sender wallet has enough native balance for fees and rent before building the transaction.

Run the checks now, free

The free tools run in your browser: nothing you type leaves your browser, and wallet reads go only to a public RPC.

  • The Wrong-Money Test

    Write down what happens when your agent pays the wrong amount, the wrong address or the wrong token on Solana, and see whether the answer holds up.

  • Agent Spend-Cap Stress Test

    Work out how much your agents can really move in one window once retries, parallel runs and per-key limits stack up.

  • Can Your Agent Get Back Out?

    Quotes a live round trip on Solana for the tokens your agent trades and shows whether its slippage setting would stop a bad exit.

Want a second pair of eyes on how your agent pays on Solana? Book the free 48-hour integration review (opens Cal.com in a new tab).

Explorers to confirm a payment

Sources

  1. [1] Commitment levels, Anza docs
  2. [2] Rent, Anza docs
  3. [3] Associated Token Account, Solana Program docs
  4. [4] USDC Contract Addresses, Circle
  5. [5] Supported Protocols, Tether
  6. [6] CCTP supported chains and domains, Circle
  7. [7] solana-sdk clock constants (MAX_PROCESSING_AGE), Anza GitHub
  8. [8] Token-2022, Solana Program docs
  9. [9] Solana Alpenglow consensus, Chainstack docs
  10. [10] USDC terms (Blocked Addresses), Circle
  11. [11] Tether legal terms, Tether

Checked against these sources on 9 November 2026. Networks change: confirm against the live docs before you rely on a number. This page is a checklist from public documentation. It is not a security audit, legal, compliance or investment advice.