Skip to main content

Documentation Index

Fetch the complete documentation index at: https://www.dynamic.xyz/docs/llms.txt

Use this file to discover all available pages before exploring further.

Jettons are TON’s native token standard, similar in role to ERC-20 on EVM. Each Jetton has a master contract address; user balances live in per-user Jetton wallet contracts derived from that master. dynamicClient.ton.sendJetton builds and broadcasts the necessary message to transfer a Jetton without requiring you to look up the user’s Jetton wallet contract yourself — the SDK does that on the WebView side.

Parameters

ParameterTypeNotes
walletIdstringThe id of a wallet whose chain === 'TON'.
jettonMasterAddressstringThe Jetton master contract address (e.g. the USDT-on-TON master).
recipientAddressstringFinal recipient (the SDK resolves the recipient’s Jetton wallet internally).
jettonAmountstringAmount in the Jetton’s smallest unit, encoded as a string. Apply the Jetton’s decimals yourself.
forwardTonAmountstring (optional)Amount of nanotons forwarded with the transfer notification (default is connector-specific; typical value is 1 to allow notification but minimize cost).
forwardPayloadstring (optional)Base64-encoded payload to attach to the transfer notification, used by some Jetton-aware contracts.

Return value

{ boc: string; hash: string }
Same shape as sendTon.

Example

React Native
import { dynamicClient } from '<path to client file>';

const wallet = dynamicClient.wallets.userWallets.find((w) => w.chain === 'TON');
if (!wallet) {
  throw new Error('No TON wallet');
}

// Example: send 10 USDT (USDT on TON has 6 decimals)
const decimals = 6;
const human = '10';
const jettonAmount = (Number(human) * 10 ** decimals).toString();

const { hash } = await dynamicClient.ton.sendJetton({
  walletId: wallet.id,
  jettonMasterAddress: 'EQ...usdt-master',
  recipientAddress: 'EQ...recipient',
  jettonAmount,
  forwardTonAmount: '1', // 1 nanoton — enough to trigger the notification
});

console.log('Broadcasted:', hash);

Notes

  • jettonAmount must be in the Jetton’s smallest unit. The decimals are defined by the Jetton master contract (typically 6 or 9). Apply them on the client side; the SDK does not auto-convert.
  • The user’s Jetton wallet contract for a given master must have enough Toncoin to pay for the forward fee. If forwardTonAmount is too small, the transfer notification may be dropped (transfer still succeeds, but recipient-side bookkeeping won’t be triggered).
  • The bridge call surfaces the underlying connector’s errors verbatim — typical failure modes are insufficient Jetton balance, the recipient address being malformed, or the user cancelling the prompt.