Skip to main content
This page collects the diagnostics for failed Solana intent transactions. It assumes you know the program surface — see Solana programs — and focuses on turning a raw error back into a cause.

Fill errors

A failed Solana fill usually surfaces as a numeric error with no message. The table below maps the common codes for the current deployment (Anchor 0.31.1). Treat each row as a likely cause, not a definitive diagnosis. Before interpreting a code, identify which program and instruction actually failed: errors from inner CPIs — the System Program, SPL Token, or intents_protocol — are reported through the same channel.

Settlement and refund errors

These come from input_settler_escrow, or from intents_protocol when the escrow consumes an attestation through CPI.

Input-first settlement errors

An input-first settlement fails as one transaction. These six errors come from input_settler_escrow. output_settler_simple has its own NotTopLevel (6507, 0x196b) for a compact fill invoked by a program.

Proof, non-fill, and rent errors

Each program now has its own error range: CommonErrors 6000–6022 (shared), intents_protocol 61xx, input settler 62xx–63xx, output settler 64xx–65xx, oracles 66xx–68xx. A shared CommonErrors code can still come from any of the programs, and SPL Token, the System Program, and Anchor itself use their own numbers. Read the failing program id from the logs before reading the code, then look it up in errors.json — see Events and errors.

Reading raw errors

Anchor error numbers are decimal, while raw logs use hex (3007 = 0xbbf). Map “Instruction N” against the complete transaction. Wallets and builders may prepend ComputeBudget instructions and shift the index.

Preflight and RPC behavior

When a transaction fails in preflight, there is no on-chain transaction and getTransaction/getLogs have nothing to show. Read the simulation logs from the error object itself (error.logs in web3.js), or re-simulate the signed transaction. Two more RPC realities:
  • TransactionExpiredBlockheightExceededError is a client-side timeout, never a verdict — the transaction may still have landed. Check the signature status before rebuilding and retrying, or you may pay twice.
  • A confirmed transaction can still be rolled back in rare cases; use finalized where finality matters.

Next steps

Solana fills

The fill instructions and their validation rules

Solana programs

The program reference behind these errors