Ошибка: Jetton transfer — Not enough jetton balance

Причина и решение ошибки «Not enough jetton balance» при переводе jetton на TON.

Jetton transfer: «Not enough jetton balance»

Jetton-wallet отклонил transfer: запрошенная сумма токенов больше balance этого wallet-контракта (не путать с балансом TON на обычном кошельке).


Причина

  • на jetton-wallet реально меньше jetton, чем в amount;
  • смотришь баланс master'а или чужого wallet — у каждого владельца свой jetton-wallet адрес;
  • decimals: передал 1 вместо 1 * 10^decimals;
  • предыдущий transfer ещё не подтвердился, UI показывает stale balance.

Решение

typescript
// @ton/core ^0.59, @ton/ton ^15
import { Address, beginCell, toNano, internal } from "@ton/core";

const jettonWallet = Address.parse("EQB..."); // именно jetton-wallet отправителя
const destOwner = Address.parse("EQC...");
const decimals = 9n;
const human = 1n; // 1 jetton
const amount = human * 10n ** decimals;

// 1) Проверь on-chain balance get-методом jetton-wallet (get_wallet_data)
// 2) Потом собирай transfer

const transferBody = beginCell()
  .storeUint(0xf8a7ea5, 32) // op::transfer
  .storeUint(0, 64) // query_id
  .storeCoins(amount)
  .storeAddress(destOwner)
  .storeAddress(walletAddress) // response_destination
  .storeBit(false) // no custom payload
  .storeCoins(toNano("0.01")) // forward_ton_amount
  .storeBit(false) // no forward_payload
  .endCell();

const message = internal({
  to: jettonWallet,
  value: toNano("0.05"), // TON на газ, не сумма jetton
  body: transferBody,
});
tact (fallback highlight)
// Tact — типичная проверка в jetton-wallet
receive(msg: JettonTransfer) {
    require(self.balance >= msg.amount, "Not enough jetton balance");
    self.balance = self.balance - msg.amount;
    // send internal transfer notification...
}

Как избежать в будущем

Перед transfer читай balance с своего jetton-wallet и учитывай decimals. В UI показывай on-chain значение, а не кэш индексатора старше пары блоков.

Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация