Start with status and fee
A failed transaction still consumed fees if it reached execution. Note the fee payer debit — this confirms the transaction was processed rather than rejected at ingress for a stale blockhash.
Find the failing instruction index
Explorer error panels usually state something like "Instruction #2 failed." Count instructions from zero in the instruction list. Inner instruction failures reference the outer instruction that invoked them.
Read program logs
Logs appear in execution order. Program-specific log lines often precede the generic error. Token Program errors, for example, may mention insufficient funds or invalid mint before the final code.
Common categories
- Account constraints — wrong owner, not enough keys, not signer when required
- Compute budget — exceeded compute unit limit
- Custom program errors — require the program's IDL or source to decode fully
When to dig deeper
If logs are sparse, simulate the same transaction against the RPC with identical accounts and data. Simulation returns richer error context without spending fees.
For hands-on practice, bring a failed signature to our Transaction Anatomy Workshop.