Failed, bounced, executed: TON transaction statuses
Executed means the transaction ran on this account and neither the compute phase nor the action phase reported failure, and the transaction was not aborted. Failed means at least one of those did fail; the exit code, when non-zero, is shown as its own line.
Bounced is a property of a message, not of a transaction. When a message cannot be processed at its destination, the network returns its remaining value to the sender in a bounce message. Tongram marks such messages with "bounced" in the Messages list.
In every case fees are still charged. Tongram displays these fields as reported by Toncenter and does not interpret what happened inside a contract.
What this covers
- This guide covers the status label, exit code and bounced mark shown on a transaction view in the Tongram explorer, and the failed badge in the collectible transfer feed.
- It covers TON mainnet. Statuses are read per account transaction; the other side of a transfer is a separate transaction with its own status.
- It does not explain individual exit codes of specific contracts.
Steps in Tongram
- Search the transaction hash from the Tongram home page and open the transaction view.
- Read the label on the card: Executed or Failed.
- If it says Failed, look for the Exit code line. It appears only when the compute phase returned a non-zero code. A Failed label without an exit code means the action phase failed or the transaction was aborted.
- Scroll to Messages. A row ending in "bounced" is a message the indexer flagged as a bounce; its value is what came back to the sender, minus fees.
- Check the Fee line. It is charged whether the label says Executed or Failed.
- To see the other side of a transfer, tap the message row: it opens the peer account, where the corresponding transaction has its own status.
What you see and where it comes from
- The label is computed from three Toncenter v3 fields on the transaction description: compute_ph.success, action.success and aborted. Executed requires none of them to indicate failure.
- The exit code is compute_ph.exit_code from the same record and is shown only when it is present and not zero.
- The bounced mark is the bounced flag the indexer sets on a message. Tongram does not derive it itself.
- In the collectible transfer feed on the dashboard, a "failed" badge reflects the indexer field transaction_aborted for that transfer.
- The account history list also marks a row as not ok when the compute or action phase failed; that flag is parsed from the transaction returned by the Toncenter v2 client.
Freshness and limits
- A Failed label says that execution on this account did not succeed. It does not say why; the exit code is a number whose meaning depends on the contract.
- Executed on the sender’s transaction does not mean the recipient received the value. If the recipient side bounced, that shows on the recipient’s transaction and on the bounce message.
- Not every failed delivery bounces. A message sent with the non-bounceable flag to an address that cannot process it is not returned.
- Fields shown are what the indexer returned at the time. A very recent transaction may not be indexed yet.
Common mistakes
- Treating Failed as "nothing happened". Fees were charged and state may have changed partially, depending on the contract.
- Assuming a bounce refunds the full amount. The forwarded value comes back minus the fees spent on the way.
- Judging a transfer by the sender’s transaction alone. The recipient’s transaction has its own status.
- Sending to a fresh, undeployed wallet with a bounceable address and then reading the bounce as a network error. Wallet apps and Tongram’s search show the non-bounceable form for a reason.