Understanding Transaction Records – Remittances & Fees
Once a transaction has been successfully processed by the Hedera network into a consensus state or not, the network nodes create either a “record” or a “receipt,” respectively, for that transaction, indicating its status and impact. A key component of the information within a record for a transaction is how the transaction changed the balances of those Hedera accounts that were involved. An account’s balance can change due to a transaction either because of a fee (paid or received) or some other intentional transfer – which we refer to here as a ‘remittance’.Account Balances
Every transaction submitted to Hedera will cause the balances of a set of accounts to change – either because- The transaction directly directed specific balances to be changed, e.g. Alice sent 1000 hbars to Bob with a CryptoTransfer.
- The transaction indirectly caused balances to change, e.g. execution of a ContractCall caused HBARs to be sent from the Smart Contract’s account to others.
- Fees are paid for the processing of the transaction into a consensus state and the persistence of that changed state.
- A fee is paid for the persistence of a ‘record’ for that transaction for a longer period of time than the default.
- Senders – the accounts from which HBARs are being sent
- Receivers – the accounts to which HBARs are being sent
- Payer – the account that pays the fees associated with the transaction.
- Network – the Hedera account that receives the component of the fees that compensate the network for processing the transaction.
- Node – the account of whichever node submits the transaction to the network for consensus
- For any transaction, the sum of transfers out of all accounts will always be equal to the sum of all transfers into all accounts.
- The payer, in general, is different than either the sender or receiver. Nevertheless, a typical case is that the sender will also be the payer.
- Not all transactions have a sender or receiver as there is no remittance aspect to the transaction, e.g. a FileCreate or ConsensusSubmitMessage transaction will have a fee but no associated remittance.
- A single CryptoTransfer can have multiple senders and multiple receivers.
- A remittance can be the number of HBARs a CryptoTransfer directs be moved, the amount of HBARs a CryptoCreate directs be funded into the new account, or the amount of HBARs in an account to be deleted, with those funds moved into another account.
- A remittance will need to be authorized by the owner of those HBARs.
- An account owner can specify thresholds for transfers in and out of that account. If a transaction causes an account’s threshold to be triggered, then the record for that transaction will persist for 25 hours and not the default 3 minutes.
- The account owner that specified the threshold will pay a threshold fee – distinct from the fee for the transaction itself - for that extra storage time.
- It is account 0.0.98 that receives the component of the transaction fee that compensates all the nodes for their work in processing the transaction into consensus
- 0.0.98 also collects any threshold record fees
- As of early February 2024, there are 31 nodes with account numbers in the range of 0.0.3-0.0.4698971.
- While accounts 0.0.98 and the node accounts are special with respect to receiving fees, they can also send & receive HBARs and, as such, could be the sender or receiver of a transaction.
Scenarios
We explore scenarios below and how the HBARs flow between accounts for each.Case 1 - Generic
In the most generic case, a sender is making a remittance to a receiver, and a separate account pays the associated fee. The size of the fee will depend on the nature of the transaction – uploading a large file will cost more than a simple crypto transfer. The amount of that fee is split between account 0.0.98 (a special Hedera account that represents the network) and the specific node that submitted the transaction.
Case 2 - Fees only
Many transactions do not allow for an explicit remittance, for instance, a FileCreate or a ConsensusSubmitMessage. For such transactions, the only changes to account balances will be due to the fee for that transaction. As before, the fee for the transaction is split between 0.0.98 and a node.
Case 3 - Sender account pays fees
It will often be the case that the fee for a CryptoTransfer sending remittance from a sender to a receiver is paid for by the sender. In this case, the balance for the sender will decrease by the sum of the remittance and the fee. In principle, the receiver could pay the fee as well.
Case 4 - Sender account has a threshold that is crossed
Account owners can specify thresholds for their accounts so that any transfer in/out of the account that exceeds these thresholds will cause the created record to be persisted for 25 hours and not the default 3 minutes. The account that stipulated the threshold will pay a threshold fee for this prolonged storage of the record. In this example, the threshold is specified on the sending account, and so it will be that account that pays this threshold fee. That account’s balance consequently decreases by the sum of the remittance and the threshold fee. Account 98 receives the sum of the network, service, and also this threshold fee. Not shown here but if it were also the case that the sender was paying the transaction fee (as above) then the balance of the sender’s account would decrease by the sum of the remittance, the transaction fee, and this threshold fee.
Case 5 - Receiver account has a threshold that is crossed
The receiving account can also have a threshold set that, if surpassed by the amount of HBARs being transferred into the account, will cause the record to be stored for 25 hours. Threshold records can be particularly useful to receivers as a receiver may not be aware of the remittances sent to them (as they are not necessarily involved in the signing of the transaction, as is the case for the sender). The longer-lived threshold records allow an account owner to query on a daily basis for the records for any and all remittances they’ve received over the past 24 hours that they might not otherwise be aware of. The receiving account will pay the associated threshold fee for this longer storage period of the record. The net balance change of the receiving account will therefore be the remittance minus the threshold fee. Account 98 receives the sum of the network, service, and the threshold fees. The transaction fees are not impacted by the threshold fee being paid. If the value of the remittance is less than the threshold fee, the transaction will fail.
Case 6 - Node account is receiver
Nodes may receive remittances like any other Hedera account. As a specific example, clients compensate nodes for responding to a query by including within the query a CryptoTransfer that, when submitted to the network, will compensate that particular node with a suitable remittance. In this scenario, the node account’s balance will increase by the sum of the node fee it receives for processing the CryptoTransfer plus the value of the actual remittance that pays the node for the query response.
Transaction Records
After Hedera Mainnet nodes process a transaction into consensus state, the details are published to the outside world in a ‘transaction record’ that the nodes create and make available. Clients retrieve records and analyze the data within to verify the consequences of transactions, for instance the consensus timestamp that was assigned and how the associated account balances changed as a result of the transaction. When retrieved from a mirror node and not the mainnet, the transaction that resulted in a given record will also be available. It is therefore this combined data structure that provides the richest set of information for analysing and differentiating between remittances and fees. The flow of information is shown below:
- The determination of whether a threshold was exceeded for each account was made for each transfer. Consequently, a single account paying both a remittance and fees could pay for multiple threshold records if the threshold was set very low.
- The order of the transfers in the R3 format was not predictable.

