---
updatedAt: 2026-07-21T06:39:12.000Z
agentTools:
  projectIndex: https://developers.tron.network/llms.txt
---

# TRC-1155

TRC-1155 is the TRON multi-token standard — a single contract can manage fungible, non-fungible, and semi-fungible tokens with batch transfers and approvals.

> 📘 **Prerequisites**
>
> * [Token standards overview](https://developers.tron.network/docs/token-standards-overview)
> * [TRC-20](https://developers.tron.network/docs/trc20)
> * [TRC-721](https://developers.tron.network/docs/trc-721)

TRC-1155 is the multi-token standard on TRON. A single TRC-1155 contract can represent and manage many tokens at once — fungible (like TRC-20), non-fungible (like TRC-721), and semi-fungible. It also supports batch operations for transfers, approvals, and balance queries.

TRC-1155 is fully compatible with Ethereum's ERC-1155 standard at the interface level, including the receiver hook selectors. ERC-1155 contracts port to TRON without changes to the receiver hook return values — see the compatibility callout below.

## When to use TRC-1155 vs TRC-20 / TRC-721

| Scenario                                                  | Best fit |
| :-------------------------------------------------------- | :------- |
| Single fungible token (USDT-like, governance, utility)    | TRC-20   |
| NFT collection where every token is unique                | TRC-721  |
| Game items where some are unique and others are stackable | TRC-1155 |
| Many fungible tokens issued by one project                | TRC-1155 |
| Reducing on-chain redundancy for many similar token types | TRC-1155 |

## Key features

### Multiple token types in one contract

A single TRC-1155 contract can hold many token types, identified by `id`. Compared to deploying one TRC-20 contract per fungible token, this dramatically reduces on-chain space. Compared to TRC-721 (where every NFT in a collection shares the same configuration), TRC-1155 lets each `id` have its own metadata, supply, and properties.

When the supply of a given `id` is exactly 1, that token is effectively an NFT.

### Batch transfer

In addition to single-token `safeTransferFrom`, TRC-1155 provides `safeBatchTransferFrom` — transfer multiple different tokens to a destination in one call, saving resource consumption.

### Batch approval

TRC-1155 does not support per-amount approvals. Instead, `setApprovalForAll(operator, true|false)` authorizes (or revokes authorization for) an operator to manage every token under the contract on the caller's behalf.

### Batch balance query

`balanceOfBatch` queries the balance of multiple tokens across multiple accounts in a single call.

### Receive hooks

TRC-1155 contracts that receive tokens must implement the `TRC1155TokenReceiver` interface, and the hook function must return the predefined 4-byte selector. See [TRC-1155 receive hooks](https://developers.tron.network/docs/trc-1155-protocol-interface#receive-hooks).

```solidity
interface TRC1155TokenReceiver {
  function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _value, bytes calldata _data) external returns (bytes4);
  function onERC1155BatchReceived(address _operator, address _from, uint256[] calldata _ids, uint256[] calldata _values, bytes calldata _data) external returns (bytes4);
}
```

When TRC-1155 tokens are transferred to a contract, the matching hook function is called. If the hook returns the correct value, the contract receives the tokens normally; otherwise the transfer reverts. The hook is what makes safe transfer safe.

> 📘 ERC-1155 compatibility
>
> TRC-1155 uses the same hook function names and selectors as Ethereum's ERC-1155: `onERC1155Received` returns `0xf23a6e61`, and `onERC1155BatchReceived` returns `0xbc197c81`. **This is different from TRC-721**, which uses a TRON-specific receiver hook selector. ERC-1155 contracts can be ported to TRON without changing the receiver hook implementation.

### Safe transfer rules

The TRC-1155 standard defines safe-transfer requirements for each interface. For the full specification, see [TIP-1155](https://github.com/tronprotocol/tips/issues/404).

***

## In this section

* [TRC-1155 protocol interfaces](https://developers.tron.network/docs/trc-1155-protocol-interface) — full function and event reference

## Related resources

* [Token standards overview](https://developers.tron.network/docs/token-standards-overview)
* [TRC-20](https://developers.tron.network/docs/trc20) — for fungible-only contracts
* [TRC-721](https://developers.tron.network/docs/trc-721) — for NFT-only contracts