Transactions/tx_version
Which transaction version is this?
$0.01per call after 25 free a daySays 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
| Transport | How |
|---|---|
| HTTP | POST /api/tools/tx_version with a JSON body of the inputs below. |
| MCP | tools/call with name tx_version on /mcp. |
Inputs
| Name | What it's looking for | Where to get it |
|---|---|---|
tx_idstring (base58), optional | A landed transaction's signature. Give this or tx. | Returned when it was sent, or from history. Never make one up. |
txstring (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.
| Field | What it is | How 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_0boolean | 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_itstring | Which RPC settings and library versions can read this format. | Fixed text per version, from mainnet tests of each library version (2026-10-30). |
fixstring | null | What to change so code reads it. null when nothing needs changing. | Given for version 1. |
found / slot / timeboolean / number | null / string | null | For tx_id: whether the transaction was found, and where and when it landed. | From getTransaction (finalized or confirmed). |
sourcestring | 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.