> ## 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.

# Send a Jetton

> Transfer a TON-native token (Jetton) using sendJetton

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

| Parameter             | Type                | Notes                                                                                                                                                      |
| --------------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `walletId`            | `string`            | The id of a wallet whose `chain === 'TON'`.                                                                                                                |
| `jettonMasterAddress` | `string`            | The Jetton master contract address (e.g. the USDT-on-TON master).                                                                                          |
| `recipientAddress`    | `string`            | Final recipient (the SDK resolves the recipient's Jetton wallet internally).                                                                               |
| `jettonAmount`        | `string`            | Amount **in the Jetton's smallest unit**, encoded as a string. Apply the Jetton's `decimals` yourself.                                                     |
| `forwardTonAmount`    | `string` (optional) | Amount of nanotons forwarded with the transfer notification (default is connector-specific; typical value is `1` to allow notification but minimize cost). |
| `forwardPayload`      | `string` (optional) | Base64-encoded payload to attach to the transfer notification, used by some Jetton-aware contracts.                                                        |

## Return value

```ts theme={"system"}
{ boc: string; hash: string }
```

Same shape as [`sendTon`](/react-native/wallets/using-wallets/ton/send-ton).

## Example

```ts React Native theme={"system"}
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.
