Skip to content
barcoder

Standards/ton-transfer-uri

TON Transfer URI

TypeQR Data Format
Completeness69%medium

Overview

The TON Transfer URI is a deep-link / universal-link payload used across The Open Network (TON) wallets to request a transfer of Toncoin or a Jetton token. It is most commonly carried in a QR Code or a clickable link; when opened, a TON wallet pre-fills the recipient, amount, and an optional message or binary payload for the user to confirm 1, 2.

Unlike a single chartered specification (such as Stellar's Stellar SEP-7 SEP or Cardano's Cardano CIP-13 (Cardano URI) CIP), the TON transfer URI is a de-facto convention documented and implemented by the major TON wallets — Tonkeeper and Tonhub chief among them — with a shared structure across three interchangeable scheme prefixes 1, 2.

The canonical form is <prefix>transfer/<address>?<params>, e.g. ton://transfer/<address>?amount=<nano> 1, 2.

History

TON deep links emerged from the wallets built on TON after the network's transition to community stewardship (the TON Foundation), rather than from a numbered standards process. The format is documented in wallet vendor docs — Tonkeeper's deep-linking reference and Tonhub's transfer-link reference — which serve as the practical specification that other apps follow 1, 2. Jetton (fungible-token) transfers ride on TON's TEP-74 token standard, so a jetton= parameter in a transfer URI targets a Jetton master contract 3.

Technical specification

Scheme prefixes

Three interchangeable prefixes carry the same payload 1:

  • ton:// — the TON blockchain deep-link scheme
  • tonkeeper:// — Tonkeeper's app-specific scheme
  • https://app.tonkeeper.com/ — a universal (web) link; Tonhub uses https://tonhub.com/transfer/ equivalently 1, 2

Transfer payload

<prefix>transfer/<ADDRESS>?amount=<NANO>&text=<TEXT>&bin=<BOC>&init=<BOC>&jetton=<MASTER>&exp=<UNIX>
Parameter Notes
<ADDRESS> (path, required) Recipient's TON address
amount Amount in nanocoins (1 TON = 10^9 nano; Jettons use their own decimals) 1, 2
text URL-encoded UTF-8 comment to attach to the transfer 1
bin URL-encoded base64 BoC (Bag/Block of Cells) attached as the internal-message body 1, 2
init URL-encoded base64 BoC state-init data (e.g. for deploying/initialising a contract) 2
jetton Jetton master contract address; selects token transfer instead of native Toncoin 1, 2
exp Expiry as a Unix epoch-seconds timestamp 1

When jetton is present, the wallet performs a TEP-74 Jetton transfer and the init/bin parameters are ignored; amount is then interpreted in the Jetton's units 2, 3. The bin parameter is what makes the transfer URI more than a payment request: it can carry an arbitrary message body, enabling smart-contract calls, while init can carry contract code/data for deployment 1, 2.

Example (native transfer with comment) 2:

https://tonhub.com/transfer/EQD2NmD_lH5f5u1Kj3KfGyTvhZSX0Eg6qp2a5IQUKXxOG21n?amount=10000&text=just%20message

Example (Jetton transfer) 1:

https://app.tonkeeper.com/transfer/<address>?jetton=<master>&amount=<units>&text=<text>

Other deep links

The same wallet scheme also defines non-transfer links such as buy-ton, staking, pool/<address>, swap, exchange, battery, action, and dapp/<url>; these are outside the transfer payload but share the prefix family 1.

Use cases

  • Merchant / peer QR payments: encode a transfer/<address>?amount= link in a QR Code; any TON wallet pre-fills the payment for confirmation 1, 2.
  • Token payments: request a specific Jetton (e.g. USDT on TON) via jetton= 1, 3.
  • Contract interaction: attach a bin body (and init for deployment) so a link can trigger a smart-contract call, not just a value transfer 1, 2.
  • Telegram-native flows: TON's tight integration with Telegram makes these deep links a natural payment primitive inside chats and mini-apps 1.

Implementations

  • Tonkeeper — supports ton://, tonkeeper://, and https://app.tonkeeper.com/ transfer deep links per its deep-linking docs 1.
  • Tonhub — supports https://tonhub.com/transfer/ and ton://transfer (plus ton-test:// on sandbox) with the same parameter set 2.
  • ton-org/ton — the official TypeScript SDK used to construct the BoC payloads (bin, init) and Jetton transfer bodies referenced by these URIs 4.

Comparison

Versus a bare TON address QR, the transfer URI adds amount, comment, expiry, token selection, and an arbitrary binary body — making it closer in power to a transaction request than a simple payment address 1, 2. The bin/init capability parallels Stellar SEP-7's tx operation (Stellar SEP-7) and XRPL's payload request type (XRPL Request URI) in that the link can convey an arbitrary on-chain action, not just a payment 1. Unlike SEP-7, however, TON transfer URIs carry no requester-authentication (signed-origin) mechanism, so trust rests entirely on the wallet's confirmation UI 1, 2. The amount-in-nanocoins convention differs from Cardano CIP-13's decimal-ADA convention (Cardano CIP-13 (Cardano URI)) 1, 2.

Status

Active (de-facto). The transfer URI is in everyday production use across TON wallets, but it is governed by wallet-vendor documentation rather than a single ratified protocol standard, which is why some parameters and prefixes vary slightly between Tonkeeper and Tonhub 1, 2.

Sources

1 Deep Linking into Tonkeeper — Ton Console, 2026 2 Transfer link — Tonhub Developers, 2026 3 Jetton transfer — The Open Network, 2026 4 ton-org/ton — GitHub, 2026

Deployments

No country reports mention this standard by name.

Regions / aggregations not mapped to a single country

  • Universal
source · content/standards/ton-transfer-uri/index.md