The pieces
| Piece | What it is | Where it runs |
|---|---|---|
| TON Connect | Protocol and SDK for connecting wallets and requesting signatures | Mini App (frontend) |
| Telegram Wallet | Telegram’s built-in wallet (TON, USDT, others) | Inside Telegram |
| Tonkeeper, MyTonWallet | Popular external wallets | Separate apps, deep-linked |
| TON API / indexers | Services to read balances, transactions and events | Your backend |
| Jettons | Fungible tokens (USDT on TON is a Jetton) | Smart contracts |
| NFT collections | Non-fungible items | Smart contracts |
| Tact / FunC | Contract languages | Blockchain |
Step 1: Connect a wallet
Install @tonconnect/ui-react (or the vanilla SDK), host a tonconnect-manifest.json with your app’s name and icon, and render the connect button. The user picks the Telegram Wallet or another wallet; you receive the address and a proof you can verify on the backend (ton_proof) to bind the address to the Telegram user from initData.
Step 2: Send a payment
For plain TON, build a transaction with the recipient address, amount in nanotons and a comment or payload that identifies the order. For USDT and other Jettons, the transaction is a transfer message to the user’s Jetton wallet contract; the SDKs and libraries (@ton/ton, @ton/core) handle the encoding. The wallet shows the user the amount and asks for confirmation.
Step 3: Confirm on the backend
The client’s “success” callback is not proof. Your backend watches the destination address (or the Jetton wallet) through an indexer, matches the incoming transfer by amount and payload to the order, waits for finality and then releases the product. Handle underpayments, overpayments, duplicates and late payments with explicit rules and refund tooling.
Step 4: Tokens and ownership
- Jettons: deploy with a minter contract; distribute via claim contracts (Merkle proofs) or direct transfers; track balances through indexers.
- NFTs: a collection contract plus item contracts; metadata hosted off-chain; marketplaces take royalties on resale.
- Game items: mint on withdrawal rather than on every in-game event; keep gameplay off-chain.
UX rules that keep users
- Default to the Telegram Wallet; it is already installed and funded for many users.
- Show amounts in TON and the user’s currency; explain gas in one line.
- Show a pending state with the expected time, and a clear recovery path if the wallet closes mid-flow.
- Offer Stars or cards as alternatives for users who do not want to use crypto, where Telegram’s rules allow.
Security checklist
- Verify
ton_proofandinitDataon the backend; bind wallet to user. - Validate every payload server-side; never trust amounts from the client.
- Confirm transactions via indexer with finality rules.
- Keep keys in a vault; use separate hot and treasury wallets with limits.
- Audit contracts before mainnet; monitor balances and failed transactions.
We implement all of this in TON blockchain development and as part of payments integration.
* All prices and ranges on this page are indicative. The final cost is calculated for each project individually and depends on the complexity of the task, the number of developers and specialists required, and the delivery timeline you set. Use the ranges to understand the typical bracket, not as a fixed offer; the fixed price is confirmed in writing after scoping. Read our pricing terms.