Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,7 @@
},
"hedera/core-concepts/keys-and-signatures",
"hedera/core-concepts/scheduled-transaction",
"hedera/core-concepts/fee-model",
{
"group": "Smart Contracts",
"pages": [
Expand Down Expand Up @@ -640,6 +641,12 @@
"hedera/sdks-and-apis/sdks/client",
"hedera/sdks-and-apis/sdks/set-up-your-local-network",
"hedera/sdks-and-apis/sdks/address-book",
{
"group": "Fees",
"pages": [
"hedera/sdks-and-apis/sdks/fees/fee-estimation"
]
},
{
"group": "Keys",
"pages": [
Expand Down Expand Up @@ -684,6 +691,7 @@
},
"hedera/sdks-and-apis/sdks/queries",
"hedera/sdks-and-apis/sdks/general-errors",

{
"group": "Accounts and HBAR",
"pages": [
Expand Down
377 changes: 377 additions & 0 deletions hedera/core-concepts/fee-model.mdx

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion hedera/core-concepts/smart-contracts/gas-and-fees.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ As noted in [HIP-410](https://hips.hedera.com/hip/hip-410), this maximizes compa

## Gas Schedule and Fee Calculation

Gas charges apply to `ContractCall`, `ContractCreate`, and `EthereumTransaction`. Other smart contract-related transactions (e.g., `ContractDelete`, `ContractGetInfo`) use standard Hedera network, node, and service fees in HBAR.
Gas charges apply to `ContractCall`, `ContractCreate`, and `EthereumTransaction`. Other smart contract-related transactions (e.g., `ContractDelete`, `ContractGetInfo`) use the standard [Fee Model](/hedera/core-concepts/fee-model), a base fee plus extras for node, network, and service components, paid in HBAR.

For gas-consuming transactions (`ContractCall`, `ContractCreate`, `EthereumTransaction`), gas is an "extra" in the service fee component. The gas extra covers EVM execution costs. All other fee components (node fee, network fee, and the non-gas portion of the service fee) follow the base-fee-plus-extras model.

Gas fees for EVM transactions consist of:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,11 @@ Royalty fees function as a convenience feature, but the network cannot enforce r
Understanding the difference between custom fees and standard transaction fees in HBAR is crucial for token issuers and developers working with Hedera.

* **Custom fees** are designed to enforce complex fee structures, such as royalties and fractional ownership. These fees can be fixed, fractional, or royalty-based and are usually paid in the token being transferred, although other Hedera tokens or HBAR can also be used. You can configure up to 10 custom fees to be automatically disbursed to designated fee collector accounts.
* On the other hand, **transaction fees** in HBAR serve a different purpose: they compensate network nodes for processing transactions. These fees are uniform across all transaction types and are paid exclusively in HBAR. Unlike custom fees, which can be configured by the user, transaction fees are fixed by the network.
* **Transaction fees** in HBAR serve a different purpose: they compensate the network for processing transactions. These fees follow a [base fee + extras model](/hedera/core-concepts/fee-model) defined in the network's fee schedule (system file `0.0.113`). While the fee structure varies by transaction type (each has its own base fee and applicable extras), the fee schedule is set by the network's governing authority, not by individual users. Transaction fees are paid exclusively in HBAR.

### **Key Differences**

The table below summarizes the key differences between custom fees and transaction fees.
The key differences are that custom fees offer flexibility and can be paid in various tokens to any account, while transaction fees follow a network-defined schedule and go to the network and node operators, paid only in HBAR. The table below summarizes the key differences between custom fees and transaction fees.

<table><thead><tr><th>Feature</th><th>Custom Fees</th><th>Transaction Fees</th></tr></thead><tbody><tr><td><strong>Purpose</strong></td><td>Enforce token-specific fee structures (e.g., royalties, taxes)</td><td>Compensate network nodes for transaction processing</td></tr><tr><td><strong>Who Collects?</strong></td><td>Designated fee collector(s)</td><td>Hedera network nodes</td></tr><tr><td><strong>Currency</strong></td><td>HBAR or HTS fungible tokens</td><td>HBAR only</td></tr><tr><td><strong>Configurability</strong></td><td>Fully configurable by token issuer</td><td>Fixed by the network</td></tr></tbody></table>

Expand Down
4 changes: 4 additions & 0 deletions hedera/core-concepts/transactions-and-queries.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,10 @@ The transaction fee for the child transaction is included in the record of the p

**Queries** are processed only by the single node to which they are sent. Clients send queries to retrieve some aspect of the current consensus state, like an account balance. Certain queries are free, but generally, they are subject to fees. The full list of queries can be found [here](/hedera/sdks-and-apis/sdks/queries).

<Info>
Under the [Fee Model](/hedera/core-concepts/fee-model), queries can have node, network, and service fee components. However, many common queries (e.g., `TransactionGetReceipt`, `CryptoGetAccountBalance`) are marked as **free** in the fee schedule. For non-free queries, the SDK creates a payment transaction to cover the fees.
</Info>

A query includes a header that includes a normal HBAR transfer transaction that will serve as how the client pays the node the appropriate fee. There is no way to give partial payment to a node for processing the query, meaning if a user overpaid for the query, the user will not receive a refund. The node processing the query will submit that payment transaction to the network for processing into a consensus statement to receive its fee.

A client can determine the appropriate fee for a query by asking a node for the cost, not the actual data. Such a `COST_ANSWER` query is free to the client.
Expand Down
8 changes: 4 additions & 4 deletions hedera/faqs/network-governance.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -174,9 +174,9 @@ title: "Network Governance"
</Accordion>

<Accordion title="How does the exchange rate impact transaction fees?">
Nodes calculate the fee for a transaction in USD but convert that value to HBAR using the current exchange rate before deducting that amount from the account paying for the transaction. Consequently, the fee in HBAR for the same transaction may vary from hour to hour, even as the fee in USD stays stable. If the client stipulates a max transaction fee for their transactions, a transaction may fail with an INSUFFICIENT_TX_FEE error if that stipulated max value is less than the value calculated by the nodes using the current exchange rate. Clients can protect themselves against this HBAR fee volatility by stipulating a sufficiently high max transaction fee (as they will only be charged the actual fee, not the max they stipulate) for transactions.
Fees are defined in USD as `tinycents` (`10⁸ tinycents` = 1 cent USD) in the fee schedule. Nodes convert the calculated USD fee to HBAR using the current exchange rate before charging the payer's account. This means the HBAR cost of the same transaction may vary from hour to hour as the exchange rate changes, even though the USD fee stays stable.

This applies to the payment transactions for queries as well.
If you set a `maxTransactionFee`, a transaction will fail with `INSUFFICIENT_TX_FEE` if the max is lower than the current calculated fee. To protect against volatility, set a sufficiently high max, you will only be charged the actual fee, not the maximum.
</Accordion>

<Accordion title="What does a COST_ANSWER query return?">
Expand Down Expand Up @@ -272,7 +272,7 @@ title: "Network Governance"
</Accordion>

<Accordion title="How often does pricing for transactions and queries change?">
Hedera council reviews pricing at every council meeting (once every three months), and approves all changes to the prices. The exchange rate that nodes use to determine the corresponding fees in hbars is updated frequently (currently every hour) .
The Hedera Council reviews pricing at every council meeting (approximately every three months) and approves all changes to the fee schedule. Fee updates are published to system file `0.0.113` on the network. The USD-to-HBAR exchange rate is updated frequently (currently every hour).
</Accordion>

<Accordion title="Does Hedera have variable-rate transaction pricing?">
Expand All @@ -290,7 +290,7 @@ title: "Network Governance"
</Accordion>

<Accordion title="Are Hedera transactions fees set in FIAT (USD) or HBAR?">
Hedera transaction and query fees are denominated in USD and paid in HBAR. The network regularly updates the USD-to-HBAR exchange rate based on current market rates, subject to a defined minimum exchange rate.
Hedera transaction and query fees are denominated in **USD** and paid in **HBAR**. Specifically, fees are defined in `tinycents` (`10⁸ tinycents` = 1 cent USD) in the fee schedule stored in system file `0.0.113`. The network regularly updates the USD-to-HBAR exchange rate based on current market rates, subject to a defined minimum exchange rate.

This model is designed to keep fees predictable in USD terms, even though the amount paid in HBAR may vary over time. By using a minimum exchange rate, the network limits how much the HBAR-denominated fee can increase during periods of significant price volatility.

Expand Down
14 changes: 12 additions & 2 deletions hedera/networks/mainnet.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ sidebarTitle: Overview

The Hedera mainnet (short for main network) is where applications are run in production, with transaction fees paid in [HBAR](https://www.hedera.com/hbar). Any application or retail user can submit transactions to the Hedera mainnet; they're automatically consensus-timestamped and fairly ordered.

Any Hedera account can query data associated with Hedera's services and stored on-chain. Every transaction requires payment as a **transaction fee** denominated in **tinybars** (100,000,000 tℏ = 1 ℏ). You can learn more about transaction fees and estimate your application costs [here](https://www.hedera.com/fees).
Any Hedera account can query data associated with Hedera's services and stored on-chain. Every transaction requires payment of a fee. Fees follow a [base fee + extras model](/hedera/core-concepts/fee-model) defined in the network's fee schedule (system file `0.0.113`). Fees are denominated in USD (as tinycents) and paid in HBAR at the current exchange rate (100,000,000 tℏ = 1 ℏ). You can learn more about transaction fees [here](/hedera/core-concepts/fee-model) and estimate your application costs using the [fee tables](/hedera/networks/mainnet/fees) or the `POST /api/v1/network/fees` [Mirror Node endpoint](/hedera/sdks-and-apis/rest-api/network).

If you're looking to test your application (or just experiment), please visit [Testnet Access](/hedera/networks/testnet/testnet-access). The Hedera testnet enables developers to prototype and test applications in a simulated mainnet environment that uses test *HBAR* for paying transaction fees.

Expand All @@ -18,6 +18,16 @@ Transactions on the Hedera Mainnet are currently throttled. You will receive a `

## Main Network Throttles

| Network Request Types | Throttle (TPS) |
| --- | --- |
| **Cryptocurrency Transactions** | `AccountCreateTransaction`: 2 tps<br/>`TransferTransaction` (inc. tokens): 10,000 tps<br/>`Other`: 10,000 tps |
| **Consensus Transactions** | `TopicCreateTransaction`: 5 tps<br/>`Other`: 10,000 tps |
| **Token Transactions** | `TokenMintTransaction`: 125 tps (fungible mint), 50 tps (NFT mint)<br/>`TokenAssociateTransaction`: 100 tps<br/>`TransferTransaction` (inc. tokens): 10,000 tps<br/>`Other`: 3,000 tps |
| **Schedule Transactions** | `ScheduleSignTransaction`: 100 tps<br/>`ScheduleCreateTransaction`: 100 tps |
| **File Transactions** | 10 tps |
| **Smart Contract Transactions** | `ContractExecuteTransaction`: 15 million gas per second<br/>`ContractCreateTransaction`: 15 million gas per second |
| **Queries (per node)** | `AccountBalanceQuery`: 1000 tps<br/>`ContractGetInfo`: 700 tps<br/>`ContractGetBytecode`: 700 tps<br/>`ContractCallLocal`: 700 tps<br/>`FileGetInfo`: 700 tps<br/>`FileGetContents`: 700 tps<br/>`Other`: 10,000 tps |
| **Receipts** | unlimited (no throttle) |
<table><thead><tr><th>Network Request Types</th><th>Throttle (tps)</th></tr></thead><tbody><tr><td><strong>Cryptocurrency Transactions</strong></td><td><p><code>AccountCreateTransaction</code>: 2 tps</p><p><code>TransferTransaction</code> (inc. tokens): 10,000 tps<br/><code>Other</code>: 10,000 tps</p></td></tr><tr><td><strong>Consensus Transactions</strong></td><td><p><code>TopicCreateTransaction</code>: 5 tps</p><p><code>Other</code>: 10,000 tps</p></td></tr><tr><td><strong>Token Transactions</strong></td><td><p><code>TokenMintTransaction</code>:</p><ul><li>125 TPS for fungible mint</li><li>50 TPS for NFT mint</li></ul><p><code>TokenAssociateTransaction</code>: 100 tps<br/><code>TransferTransaction</code> (inc. tokens): 10,000 tps</p><p><code>Other</code>: 3,000 tps</p></td></tr><tr><td><strong>Schedule Transactions</strong></td><td><code>ScheduleSignTransaction</code>: 100 tps<br/><code>ScheduleCreateTransaction</code>: 100 tps</td></tr><tr><td><strong>File Transactions</strong></td><td>10 tps</td></tr><tr><td><strong>Smart Contract Transactions</strong></td><td><code>ContractExecuteTransaction</code>: 15 million gas per second<br/><code>ContractCreateTransaction</code>: 15 million gas per second</td></tr><tr><td><strong>Queries (per node)</strong></td><td><p><code>AccountBalanceQuery</code>: 1000 tps</p><p></p><p><code>ContractGetInfo</code>: 700 tps<br/><code>ContractGetBytecode</code>: 700 tps<br/><code>ContractCallLocal</code>: 700 tps<br/><br/><code>FileGetInfo</code>: 700 tps<br/><code>FileGetContents</code>: 700 tps<br/><br/><code>Other</code>: 10,000 tps</p></td></tr><tr><td><strong>Receipts</strong></td><td>unlimited (no throttle)</td></tr></tbody></table>

### High-Volume Throttles
Expand All @@ -41,4 +51,4 @@ response — the same behavior as the standard throttle system.
High-volume transactions use **variable-rate pricing** that scales with utilization.
See the [High-Volume Entity Creation](/hedera/core-concepts/high-volume-entity-creation)
guide to understand how this affects your transaction fees before opting in.
</Note>
</Note>
Loading
Loading