Skip to main content
Tonkeeper is a self‑custodial mobile wallet available on iOS and Android. It supports regular wallets, Jettons, NFTs, and TON Connect. Its github repository can be found here.
Tonkeeper main interfaceTonkeeper main interface
  • 🟡 Account balance displays the total amount of Toncoin and other tokens held on account.
  • 🔴 Account address is shown as a base64-encoded string. It can be shared to receive TON, jettons, or NFTs.
  • 🟢 Send/Receive/Scan buttons are used to transfer TON or jettons to another account, receive TON or jettons to the wallet, and scan QR codes to confirm transactions, respectively.

Create a wallet

A wallet is required to do any transactions on a public global network. It is the primary way to interact with the blockchain. This step-by-step guide explains how to use Tonkeeper app to create a testnet wallet account. Testnet is used instead of mainnet, because it is more suitable for development and experimentation, and test coins can be obtained for free on testnet. The procedure works the same way on mainnet, except funds will have to be procured in a different way. Overall procedure is:
  • Generate a mnemonic (a key). It uniquely determines wallet’s address, but the wallet doesn’t exist on blockchain yet, i.e. is in nonexist status.
  • Send some funds to the wallet’s account. Now it will be in uninit status, i.e. already with some balance on it, but without any code yet.
  • Deploy wallet’s code to this address. Some of these funds will be used to pay for the deploy process. Now the wallet is in active status, and can be used for any purpose.
Funds at riskAddresses of both mainnet and testnet accounts can be derived from the same mnemonic, i.e. the same key might be used for both wallets. Beware these accounts exist only in their corresponding networks.It’s possible to forget switching to testnet, and accidentally spend real funds on mainnet.It’s possible to accidentally transfer funds to a testnet wallet address on mainnet. These funds will be impossible to recover.Verify which network is used before any funds are sent.
Bug!There is a bug in Tonkeeper. Mainnet subwallet ID is used to generate the address of testnet account.If an address from Tonkeeper doesn’t match an address computed with @ton/ton or some other library, this might be the reason.

Generate a key

  1. Install Tonkeeper on iOS or Android.
  2. Click Create New Wallet
    Create a walletCreate a wallet
  3. Create a passcode and re-enter it. Passcode is used to encrypt the mnemonic.
    Create a passcodeCreate a passcodeConfirm the passcodeConfirm the passcode
  4. Click Back up your recovery phrase and Back Up Manually.
    Back upBack upConfirm the passcodeConfirm the passcode
  5. Save 24 words of the mnemonic.
    Funds at riskMnemonic is the text representation of wallet’s secret key. Losing it is the same as losing access to the wallet.
    Anyone who has access to the mnemonic can take control of the wallet and move funds. If compromise is suspected, create a new wallet and transfer all funds immediately. Prefer not to store recovery words digitally; write them down and keep them offline.
    Recovery phraseRecovery phrase
  6. Pass the check that the mnemonic was saved.
    Recovery phraseRecovery phrase
  7. The main interface of the app should now appear.

Switch to testnet

  1. Click wallet to open the Add Wallet pop-up.
    Add testnetAdd testnet
  2. In the “Add Wallet” window, scroll down to the “For developers” section. Click the “Testnet Account” card.
    Testnet accountTestnet account
  3. Enter the recovery phrase that was provided when the wallet was created on Mainnet, then click Confirm.
    Recovery phrase for testnetRecovery phrase for testnet
  4. The main interface of the app should now appear, indicating that the testnet is used. Also address of the testnet wallet in the user-friendly format starts with k or 0.
    Main interface with testnet noteMain interface with testnet note

Add funds into the wallet

  1. Message @testgiver_ton_bot in Telegram.
  2. Press the Start or send /start message.
  3. Pass the captcha test.
  4. Enter and send the testnet wallet address displayed by wallet.ton.org.
  5. Soon after the “Request added to the queue” response, 2 TON will be sent to the wallet.
  6. There won’t be any other message that the transfer happened. Use an explorer to check the request status.
  7. The account should be in the uninit status now.
Account status: uninitAccount status: uninit For a detailed step-by-step guide, see How to get Toncoin on testnet.

Deploy the code

Funds at riskOn-chain transfers are irreversible — verify the recipient and amount before confirming. Use testnet for practice; use mainnet only for real transfers.
To deploy the code, send any transaction from the wallet. The recipient can be any address, including the wallet itself.
  1. Click Send on the main interface, enter wallet address in “Address or name”, and the “Amount” of TON. Click Continue.
    Send TONSend TON
  2. Verify the transaction details and swipe if correct. Otherwise, tap < in the top-left corner to edit.
    Verify transactionVerify transaction
  3. After confirmation, enter the passcode. Then, the “History” page displays the sent transaction.
  4. Use an explorer to check wallet’s status. It should be active now.

Check the account state

Use a blockchain explorer to inspect the account. For Testnet, use Tonviewer Testnet.
  1. Paste the wallet address into the search bar.
    Insert address in Tonviewer searchInsert address in Tonviewer search
  2. The account details will appear. In a newly created wallet, the status is nonexist, indicating the wallet is not deployed.
    Account status: nonexistAccount status: nonexist

Verify wallet’s version

By default, Tonkeeper creates wallets with the Wallet v5 code deployed on them. To switch wallet contract version to v4:
  1. On the main menu, tap the gear icon in the upper-right corner.
  2. In “Settings”, select Wallet v4R2 and enter the passcode.
    V4R2V4R2
  3. The wallet v4r2 is auto-generated and the app returns to the main menu.
    • If v5 is highlighted, v4 has no visual indicator.
    • To check, tap the wallet name — wallet v4r2 — v5 is highlighted, while v4 is not.
V4R2V4R2