Transactions/tx_version

Which transaction version is this?

$0.01per call after 25 free a day

Says whether a transaction is legacy, version 0 or version 1, and which readers (RPC settings and library versions) can read it.

Run when code can't find or read a transaction that is on chain, or before relying on code that reads other people's transactions.

Saves money. About 45% of Solana transactions are version 1 since September 15, 2026, and apps that read with version 0 silently miss them: payments rejected, trades not copied, burns not credited.

Call it

TransportHow
HTTPPOST /api/tools/tx_version with a JSON body of the inputs below.
MCPtools/call with name tx_version on /mcp.

Inputs

NameWhat it's looking forWhere to get it
tx_id
string (base58), optional
A landed transaction's signature. Give this or tx.Returned when it was sent, or from history. Never make one up.
tx
string (base64), optional
A raw transaction, signed or not. Give this or tx_id.The bytes a wallet or builder gave you, base64-encoded.
network
"mainnet-beta" | "devnet", optional
Default "mainnet-beta" (real money)."devnet" only for test wallets.

Returned fields

Every field the tool returns, what it is, and exactly how it's worked out.

FieldWhat it isHow it's worked out
version
"legacy" | "0" | "1" | "unknown"
The transaction's format.tx_id: the version the RPC reports, asked with maxSupportedTransactionVersion 1. tx: read from the first bytes (see notes).
readable_with_max_version_0
boolean | null
Whether code asking with maxSupportedTransactionVersion: 0 can read it. null when the version is unknown.True for legacy and 0, false for 1.
who_can_read_it
string
Which RPC settings and library versions can read this format.Fixed text per version, from mainnet tests of each library version (2026-10-30).
fix
string | null
What to change so code reads it. null when nothing needs changing.Given for version 1.
found / slot / time
boolean / number | null / string | null
For tx_id: whether the transaction was found, and where and when it landed.From getTransaction (finalized or confirmed).
source
string
Where the version came from."rpc getTransaction" or "transaction bytes".

Limits

  • Version 1 transactions start with the byte 0x81, before the signatures; legacy and version 0 start with the signature count. Code that parses raw bytes the old way breaks on version 1 too.
  • Version 1 went live on mainnet on 2026-09-15; the first one we found is in slot 447120004.