Max Chunks
The max chunks setting defines the maximum number of chunks into which a given message can be split. The default value is 20 chunks, meaning a message can consist of up to 20 chunks by default. This value can be modified using thesetMaxChunks method.
Max Chunk Size
🚨 NOTE: Max size of an HCS message: 1024 bytes (1 kb).
setChunkSize method.
Custom Fee Payment
If a topic has custom fees enabled, users submitting messages must pay the required fee in HBAR or HTS fungible tokens. IfsetCustomFees is not specified in the transaction, the user would need to pay any fee associated with that topic ID. The transaction will only fail if the user does not have sufficient assets to cover the fee.
Recommendation: To avoid unexpected fees, it is strongly recommended to use setCustomFees when submitting a message. This ensures that only the intended fee structure is applied, providing a safeguard against unintended charges.
Transaction Signing Requirements
- Anyone can submit a message to a public topic.
- The
submitKeyis required to sign the transaction for a private topic.
Transaction Fees
⚠️ Upcoming Price Change – ConsensusSubmitMessage
Starting January 2026, the price for the ConsensusSubmitMessage transaction will increase from 0.0008 USD. This change will take effect with the v0.69 mainnet release and applies only toConsensusSubmitMessage transactions. This update improves the long-term economic sustainability of the Hedera network while preserving predictable and USD-fixed pricing for developers. Read this blog article for more information.- Each transaction incurs a standard Hedera network fee based on network resource usage.
- If a custom fee is set for a topic, users submitting messages must pay this fee in HBAR or HTS tokens.
- The Fee Schedule Key allows authorized users to update fee structures. If set, it must sign transactions modifying fees.
- If the topic has custom fees, the sender must have sufficient balance to cover the fees unless they are exempt via the Fee Exempt Key List. It is recommended to use
setCustomFeeson theTopicMessageSubmitTransactionto ensure the expected fee structure is applied and avoid unexpected transaction failures due to insufficient funds. - If you submit a message to a topic with a custom fee, the cost changes from the baseline 0.05 USD per
TopicMessageSubmitTransaction. - Use the query fees table for the base transaction fee and the Hedera Fee Estimator to estimate standard network fees.
⚠️ Upcoming Price Change – ConsensusSubmitMessageStarting January 2026, the price for the ConsensusSubmitMessage transaction will increase from
$0.0001 to $0.0008 USD. This change will take effect with the v0.69 mainnet release and applies only to ConsensusSubmitMessage transactions. This update improves the long-term economic sustainability of the Hedera network while preserving predictable and USD-fixed pricing for developers. Read this blog article for more information.Methods
| Method | Type | Description | Requirement |
|---|---|---|---|
setTopicId(<topicId>) | TopicId | The topic ID to submit the message to | Required |
setMessage(<message>) | String | The message in a String format | Optional |
setMessage(<message>) | byte [ ] | The message in a byte array format | Optional |
setMessage(<message>) | ByteString | The message in a ByteString format | Optional |
setChunkSize() | int | The max size of individual chunk for a given message. Default: 1024 bytes | Optional |
setMaxChunks() | int | The max number of chunks a given message can be split into. Default: 20 | Optional |
setCustomFeeLimits() | List<CustomFeeLimit> | The maximum custom fees the sender is willing to pay | Optional |
addCustomFeeLimit() | CustomFeeLimit | Adds a custom fee limit | Optional |
Get transaction values
| Method | Type | Description |
|---|---|---|
getTopicId() | TopicId | The topic ID to submit the message to |
getMessage() | ByteString | The message being submitted |
getCustomFeeLimits() | Fee[] | Extract the custom fee limits of the transaction |