> For the complete documentation index, see [llms.txt](https://docs-sdk.crypto-chief.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-sdk.crypto-chief.com/processing/js/guides/ton.md).

# TON: Jetton, NFT & comments

Transfer TON Jettons, NFTs, and text comments in Node.js with one call.

TON contract bodies are program-specific cells with no Solidity-style ABI, so the SDK encodes them for you behind high-level helpers (built on `@ton/core`). You never touch a cell or a BoC.

## Jetton transfer (e.g. USDT on TON)

```ts
import { humanToBase } from '@cryptochiefs/cryptochief-crypto-processing-node';

const amount = humanToBase('0.5', 6); // USDT Jetton has 6 decimals

const signed = await client.transactions.jettonTransfer({
  network: Chain.TonMainnet,
  fromAddress: 'EQYourWallet...',
  jettonMaster: 'EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs', // USDT
  recipient: 'EQRecipient...',
  amount,
  memo: 'Order #4242', // optional — shown to the receiver as a comment
});
```

The sender's Jetton wallet address and the gas budget are resolved automatically. If you've already pre-resolved them, pass `jettonWalletAddress` and `attachedTon` to skip the lookup.

## NFT transfer

```ts
import { nanoTon } from '@cryptochiefs/cryptochief-crypto-processing-node';

await client.transactions.nftTransfer({
  network: Chain.TonMainnet,
  fromAddress: 'EQYourWallet...',
  nftItem: 'EQItemAddr...',
  newOwner: 'EQRecipient...',
  attachedTon: nanoTon('0.05'),
});
```

## Text comment

```ts
await client.transactions.sendTonComment({
  network: Chain.TonMainnet,
  fromAddress: 'EQYourWallet...',
  recipient: 'EQRecipient...',
  text: 'Thanks for the coffee!',
  amountTon: nanoTon('1'),
});
```

## Arbitrary TON contracts

Build the body cell yourself with a TON library and pass the bytes to the lower-level `signTonCall`:

```ts
await client.transactions.signTonCall({
  network: Chain.TonMainnet,
  fromAddress: 'EQ...',
  contract: 'EQ...',
  value: nanoTon('0.05'), // attached TON
  bodyCell: bocBytes,     // Uint8Array
});
```

{% hint style="info" %}
For TON amounts, `nanoTon('0.05')` returns the base-unit nanoTON `bigint` the `attachedTon` / `amountTon` / `value` fields expect. `parseTonAddress` is exported for offline `EQ`/`UQ`/`workchain:hex` validation.
{% endhint %}
