> 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/python/guides/ton.md).

# TON: Jetton, NFT & comments

Transfer TON Jettons, NFTs, and text comments in Python 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 `pytoniq-core`). You never touch a cell or a BoC.

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

```python
from cryptochief import Chain, JettonTransferRequest, human_to_base

amount = human_to_base("0.5", 6)  # USDT Jetton has 6 decimals

signed = await client.transactions.jetton_transfer(JettonTransferRequest(
    network=Chain.TON_MAINNET,
    from_address="EQYourWallet...",
    jetton_master="EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs",  # USDT
    recipient="EQRecipient...",
    amount=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 `jetton_wallet_address` and `attached_ton` to skip the lookup.

## NFT transfer

```python
from cryptochief import NftTransferRequest, nano_ton

await client.transactions.nft_transfer(NftTransferRequest(
    network=Chain.TON_MAINNET,
    from_address="EQYourWallet...",
    nft_item="EQItemAddr...",
    new_owner="EQRecipient...",
    attached_ton=nano_ton("0.05"),
))
```

## Text comment

```python
from cryptochief import TonCommentRequest, nano_ton

await client.transactions.send_ton_comment(TonCommentRequest(
    network=Chain.TON_MAINNET,
    from_address="EQYourWallet...",
    recipient="EQRecipient...",
    text="Thanks for the coffee!",
    amount_ton=nano_ton("1"),
))
```

## Arbitrary TON contracts

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

```python
from cryptochief import TonCallRequest, nano_ton

await client.transactions.sign_ton_call(TonCallRequest(
    network=Chain.TON_MAINNET,
    from_address="EQ...",
    contract="EQ...",
    value=nano_ton("0.05"),  # attached TON
    body_cell=boc_bytes,     # bytes
))
```

{% hint style="info" %}
For TON amounts, `nano_ton("0.05")` returns the base-unit nanoTON `int` the `attached_ton` / `amount_ton` / `value` fields expect. `parse_ton_address` is exported for offline `EQ`/`UQ`/`workchain:hex` validation.
{% endhint %}
