dupetheduck.com

Why Did My TON Transfer Fail With "Exit Code 35" and How Do I Fix It?

The "Exit Code 35" error on TON means your wallet tried to execute a transaction that its smart contract logic rejected - typically because you attempted to send a token or interact with a contract in a way the wallet version does not support, or because the transaction tried to spend more value than the contract allows in a single operation. The fix usually involves switching to a compatible wallet version, splitting the transaction into smaller steps, or using a different interface like a Telegram bot or Tonkeeper that handles the logic correctly.

What "Exit Code 35" Actually Means

TON smart contracts run on the TON Virtual Machine (TVM). When a transaction fails, the TVM returns an exit code. Exit code 35 is a generic "contract logic error." It does not mean your funds were lost - the transaction simply did not execute, and your TON remains in your wallet. The error is a signal that the contract refused the operation based on its internal rules.

Common triggers for exit code 35 include:

Step-by-Step Fixes

1. check your wallet version

Open your wallet (Tonkeeper, Wallet Bot, or another interface) and look for the wallet version. In Tonkeeper, go to Settings > Wallet and you will see "v4" or "v5" next to your address. In Wallet Bot on Telegram, the bot usually uses a v5 contract by default. If you are unsure, export your public key and check it on a TON explorer like tonscan.org or dton.io - the wallet contract type is displayed.

If you are using a dApp that expects v5, and your wallet is v4, the transaction may fail with exit code 35. The fix: use a wallet that matches. For example, if you are trying to swap tokens on Ston.fi via Tonkeeper, and Tonkeeper is set to v4, switch to a v5 wallet or use the Ston.fi web interface with a v4-compatible connection.

2. Verify the Recipient Address for Jetton Transfers

When sending Jettons, confirm the recipient address is a wallet contract (starts with "UQ..." or "EQ..." for mainnet). Do not send Jettons to a raw address like "0:..." unless you know it belongs to a wallet. If you accidentally sent to a non-wallet address, the transaction will fail with exit code 35. To fix: obtain the correct wallet address from the recipient, then retry.

3. Increase Your TON Balance for Gas

Gas fees on TON are paid in TON. If your wallet has exactly the amount you want to send plus the gas fee, but the gas fee calculation is off by a fraction, exit code 35 can occur. Add at least 0.1 TON of buffer to your wallet balance before retrying. The exact gas fee varies by transaction type (see "What Are Gas Fees on TON and How to Calculate Them Before Sending" on this site). A simple transfer costs about 0.005 TON; a Jetton transfer or contract interaction may cost 0.01 - 0.05 TON.

4. Retry Using a Different Interface

Sometimes the interface you are using (a Mini App, a web dApp, or a bot) sends malformed data to the wallet contract. Switch to a different method: - If you are using a Telegram Mini App, open the same dApp in a browser with Tonkeeper or a web wallet. - If you are using Tonkeeper, try Wallet Bot on Telegram (or vice versa). - For Jetton swaps, use the DEX's own swap interface instead of a third-party aggregator.

5. Reset the Wallet Session

If you are using a dApp via TON Connect, the session may have expired or become out of sync. Disconnect the dApp from your wallet, then reconnect and try again. In Tonkeeper, go to Settings > Connected Sites and remove the dApp. In Wallet Bot, use the "Disconnect" command.

When to seek help

If you have tried all the steps above and the error persists, check the transaction on a TON explorer. Look up your wallet address and find the failed transaction. The explorer will show the exact exit code and often a "comment" field with additional details. Paste the error into a search engine or ask in the TON community forums (like the official TON Telegram group). Be cautious about sharing your address or seed phrase - no legitimate support will ask for those.

The Short Version

Exit code 35 is a contract logic error, not a loss of funds. Fix it by matching your wallet version to the dApp, ensuring the recipient address is a wallet, adding a small TON buffer for gas, or switching to a different interface. If all else fails, look up the transaction on an explorer for more clues.

Not financial advice. dupetheduck.com publishes market data and general information about digital assets. Crypto assets are volatile and you can lose everything you put in. Nothing here is a recommendation to buy, sell or hold, and we make no price predictions.

Prices are sourced from third parties and may be delayed or wrong. Verify anything you intend to act on against a primary source.

Back to ton