Deep links
Deep links allow directing users from a dApp to a meaningful location within a TON wallet and invoking corresponding actions.
Issue wallet invoices using deep links. See transaction link formats for popular explorers.
TON Connect invoices
tc://<TON_CONNECT_LINK_BODY>Best for dApps that require multiple transactions within a session or a persistent wallet connection.
Advantages
- Permanent communication channel with the wallet.
- Users only scan a QR code once.
- Can track transaction confirmation via the returned BoC.
- Ready-made SDKs and UI kits for various platforms.
Disadvantages
- If only one payment is needed, users must connect the wallet and confirm the transaction.
- More complex integration than a
ton://link.
Explore TON Connect.
Deep links invoices
The ton:// link is less common in the ecosystem than tc://, but it may be useful for a simple, one-time payment flow.
ton://<LINK-BODY>Advantages
- Easy integration.
- No need to connect a wallet.
Disadvantages
- Users must scan a new QR code for each payment.
- Cannot track if the user signed the transaction.
- No information about the user’s address.
- Requires workarounds for platforms where links are not clickable (e.g., Telegram Desktop bots).
The ton:// scheme is part of the broader TON blockchain standard, enabling interoperability across different TON-based wallets and services.
Example workflows
- Quick payments: Integrate payment requests directly from your website, allowing users to complete transactions with a single tap using
ton://transfer links. - In-app transactions: Use deep links to facilitate seamless transfers between users within your application.
- Link to specific transfers: Provide support or history review by linking directly to specific transactions or transfers.
GRAM transfer
Opens the pre-filled Send screen and prompts the user to enter the missing data.
ton://transfer/<ADDRESS>?amount=<AMOUNT>&text=<TEXT>| Parameter | Description | Required |
|---|---|---|
<ADDRESS> | The recipient's TON address. | required |
<AMOUNT> | The amount of GRAM to send, in nanograms. | optional |
<TEXT> | A URL-encoded UTF-8 text message to attach to the transfer. | optional |
GRAM transfer to address
ton://transfer/<ADDRESS>ton://transfer/UQDYzZmfsrGzhObKJUw4gzdeIxEai3jAFbiGKGwxvxHinf4KGRAM transfer with amount
ton://transfer/<ADDRESS>?amount=<AMOUNT>ton://transfer/UQDYzZmfsrGzhObKJUw4gzdeIxEai3jAFbiGKGwxvxHinf4K?amount=5000000
GRAM transfer with text comment
ton://transfer/<ADDRESS>?text=<TEXT>ton://transfer/UQDYzZmfsrGzhObKJUw4gzdeIxEai3jAFbiGKGwxvxHinf4K?text=helloGRAM Transfer with amount and text comment
ton://transfer/<ADDRESS>?amount=<AMOUNT>&text=<TEXT>ton://transfer/UQDYzZmfsrGzhObKJUw4gzdeIxEai3jAFbiGKGwxvxHinf4K?amount=5000000&text=helloTransfer with expiry timestamp
Opens the Send screen with an expiry timestamp for the transaction.
ton://transfer/<ADDRESS>?amount=<AMOUNT>&text=<TEXT>&exp=<EXPIRY_TIMESTAMP>| Parameter | Description | Required |
|---|---|---|
<ADDRESS> | The recipient's TON address. | required |
<AMOUNT> | The amount of GRAM to send, in nanograms. | optional |
<TEXT> | A URL-encoded UTF-8 text message to attach to the transfer. | optional |
<EXPIRY_TIMESTAMP> | Expiry timestamp in seconds since the Unix epoch. | optional |
The exp parameter, like other parameters, must be included when constructing the message to ensure the blockchain rejects transactions with an expired exp.
GRAM transfer with expiry timestamp
ton://transfer/<ADDRESS>?amount=<AMOUNT>&text=<TEXT>&exp=<EXPIRY_TIMESTAMP>ton://transfer/EQD2NmD_lH5f5u1Kj3KfGyTvhZSX0Eg6qp2a5IQUKXxOG21n?amount=100000&text=test&exp=2147483647Jetton transfer
Opens the Send screen with a jetton transfer. Jetton is a standard for TON assets, like USDT, USDC and e.t.c.
ton://transfer/<ADDRESS>?jetton=<JETTON_ADDRESS>&amount=<AMOUNT>&text=<TEXT>| Parameter | Description | Required |
|---|---|---|
<ADDRESS> | The recipient's TON wallet address. | required |
<JETTON_ADDRESS> | The jetton master address. | required |
<AMOUNT> | The amount of jettons to send. | optional |
<TEXT> | A URL-encoded UTF-8 text message to attach to the transfer. | optional |
<EXPIRY_TIMESTAMP> | Expiry timestamp in seconds since the Unix epoch. | optional |
One whole Jetton for <AMOUNT> is defined by
decimalsthe number of fractional digitsunitthat represents the smallest indivisible amount of the token (similar to satoshi in Bitcoin).
Transfer default jetton
Typically, jetton decimals in amount are equal 9 and evaluation same as for Gram.
ton://transfer/<ADDRESS>?jetton=<JETTON_ADDRESS>&amount=<AMOUNT>&text=<TEXT>ton://transfer/UQDYzZmfsrGzhObKJUw4gzdeIxEai3jAFbiGKGwxvxHinf4K?jetton=EQBlqsm144Dq6SjbPI4jjZvA1hqTIP3CvHovbIfW_t-SCALE&amount=5000000&text=helloTransfer USDT
While Gram requires nine decimal places and 1 Gram equals 1 billion () nanograms, USDT only uses six decimal places. This means that 1 USDT unit stands for 1 million () microUSDT units. The AMOUNT below requires the microUSDT format.
ton://transfer/<ADDRESS>?jetton=<JETTON_ADDRESS>&amount=<AMOUNT>&text=<TEXT>ton://transfer/UQDYzZmfsrGzhObKJUw4gzdeIxEai3jAFbiGKGwxvxHinf4K?jetton=EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs&amount=5000&text=helloTransfer with binary data
Opens the emulation screen or screen with alert about blind signing transactions with amount and destination.
ton://transfer/<ADDRESS>?amount=<AMOUNT>&bin=<BINARY_DATA>| Parameter | Description | Required |
|---|---|---|
<ADDRESS> | The recipient's TON address. | required |
<AMOUNT> | The amount of GRAM to send, in nanograms. | optional |
<BINARY_DATA> | A URL-encoded base64 BoC which will be attached as a body to internal message. | optional |
ton://transfer/UQDYzZmfsrGzhObKJUw4gzdeIxEai3jAFbiGKGwxvxHinf4K?amount=5000000&bin=te6cckECBQEAARUAAUWIAMEY4jHsfgXgPZLLJhtH/oPEOBKZZb6Y4/RJaJnbXc4GDAEBnBSf8D7P51eitphXHiTNAS6WXVDOgcxIxFWf7JICcG9ooFRNCDzTZbHg0mlW6782P8huKd5wzYK3huSVDMGTrQgpqaMXaMF9SAAAACsAAwIBaGIAV+9GxkYnezSj7VSw9vtlmc5RJ5lsyyItoKd5rFDpJZUgL68IAAAAAAAAAAAAAAAAAAEDAaFfzD0Ug3czLfk9/4aAArAmxHNbYrurO/IYyD89+mJZ/XDMnkMemHy/nTsrzYDwAYIxxGPY/AvAeyWWTDaP/QeIcCUyy30xx+iS0TO2u5wMIDgEACIAAAAAUmVmI05PTmQxZ0pCUK4fW14=Wallet-specific invoices
Use specific links for each wallet to initiate jetton and Gram transfers. The format usually resembles ton://transfer links, but make sure to consult the documentation for each wallet.
Example: transferring 1 USDT to EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs:
https://my.tt/transfer/UQDYzZmfsrGzhObKJUw4gzdeIxEai3jAFbiGKGwxvxHinf4K?amount=1000000&jetton=EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDsExplorer links
Actonscan links can open accounts, transactions, and blocks by providing their respective values:
<ADDRESS>is a raw or user-friendly TON address,<TRANSACTION_HASH>is a hexadecimal transaction hash,- and
<WORKCHAIN>,<SHARD>, and<SEQNO>identify a block.
The low-level TON Explorer only provides direct links to transactions — they require an account address, logical time (lt), and a transaction hash. Obtain these values by calling the getTransactions API endpoint. Convert the hexadecimal transaction hash to uppercase before composing a link.
Mainnet
https://actonscan.com/address/<ADDRESS>?network=mainnet
https://actonscan.com/tx/<TRANSACTION_HASH>?network=mainnet
https://actonscan.com/block/<WORKCHAIN>/<SHARD>/<SEQNO>?network=mainnethttps://actonscan.com/tx/47d0989633fc03ff3fdca05880ab5760d0321c196501a6a4cbb5578dea2624cb?network=mainnethttps://explorer.toncoin.org/transaction?account=<ADDRESS><=<LT>&hash=<TRANSACTION_HASH>https://explorer.toncoin.org/transaction?account=Ef8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0vF<=63333243000002&hash=AEE8D185A0C8F73C787BF1872EE9659AC53CE11A90B16B384856A7821EFF8C29Testnet
https://actonscan.com/address/<ADDRESS>?network=testnet
https://actonscan.com/tx/<TRANSACTION_HASH>?network=testnet
https://actonscan.com/block/<WORKCHAIN>/<SHARD>/<SEQNO>?network=testnethttps://actonscan.com/tx/59ac226ac63ba4ecfcf4b9da1a02510fc787cc1f52fdfddb3a2b8f1bf54bbd77?network=testnethttps://test-explorer.toncoin.org/transaction?account=<ADDRESS><=<LT>&hash=<TRANSACTION_HASH>https://test-explorer.toncoin.org/transaction?account=Ef8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0vF<=40988257000002&hash=61EF8FAC43EDF408FCC041AA8AFAEC14AC2C4F68FAAFE6EB18C50A921697D2F6