Skip to main content

Fees

Overview

Fees on Polymesh are paid in the networks native token, POLYX.

There are two types of network fee:

  • Transaction Fees - always paid whether or not the transaction is successful
  • Protocol Fees - only paid for successful transactions

Transaction Fees

Every on-chain transaction in Polymesh must be paid for using POLYX. The cost of the operation is proportional to the computational and storage complexity of the action being performed and is set directly by the network.

In order to execute an on-chain transaction, a user must have sufficient POLYX associated with the key which is signing and submitting the transaction. If there isn't a sufficient balance, the network will fail the transaction.

Transaction fees go to the operator that produced the block containing the associated transaction. This means that operators are incentivised to help increase adoption of the network (as they receive a percentage of transaction fees from on-chain activity) whilst allowing the treasury to grow its funds which can then be disbursed via the governance process as grants to further increase the adoption or development of the network.

All transactions in Polymesh have a transaction fee associated with them. The magnitude of the fee is determined by the compute / memory cost of executing the transaction, and the size (in bytes) of the transaction input. The transaction fee is paid regardless of whether the transaction is successful or not.

As of Polymesh 4.1.1 sample fees for common transaction types are shown below.

ModuleTransactionFee
assetaccept_asset_ownership_transfer0.1205
assetaccept_ticker_transfer0.1126
assetadd_documents0.0889
assetcreate_asset0.1899
assetfreeze0.0705
assetissue0.1294
assetregister_custom_asset_type0.0809
assetregister_ticker0.0941
assetrename_asset0.0696
assetset_funding_round0.0661
assetunfreeze0.0706
balancestransfer0.0943
balancestransfer_with_memo0.0978
capitaldistributionclaim0.2562
capitaldistributiondistribute0.1035
checkpointcreate_checkpoint0.0927
checkpointcreate_schedule0.1476
compliancemanageradd_compliance_requirement0.0787
compliancemanageradd_default_trusted_claim_issuer0.0774
compliancemanagerpause_asset_compliance0.0686
compliancemanagerremove_default_trusted_claim_issuer0.0712
compliancemanagerreset_asset_compliance0.0654
compliancemanagerresume_asset_compliance0.0682
corporateactioninitiate_corporate_action0.1816
corporateactionset_default_targets0.0719
corporateactionset_default_withholding_tax0.0684
corporateactionset_did_withholding_tax0.0839
externalagentsaccept_become_agent0.1107
externalagentscreate_group0.0781
identityaccept_primary_key0.1332
identityadd_authorization0.0818
identityadd_claim0.0761
identitycdd_register_did0.1003
identityjoin_identity_as_key0.1187
identityrevoke_claim0.0669
identityset_permission_to_signer0.2575
portfoliocreate_portfolio0.0812
portfoliodelete_portfolio0.0938
portfoliomove_portfolio_funds0.1110
portfoliorename_portfolio0.0724
settlementadd_and_affirm_instruction0.6079
settlementaffirm_instruction0.1115
settlementcreate_venue0.0911
settlementreject_instruction0.1559
stakingbond0.1017
stakingbond_extra0.0765
stakingnominate0.0978
stakingrebond0.0814
statisticsadd_exempted_entities0.0687
statisticsadd_transfer_manager0.0688
statisticsremove_exempted_entities0.0699
statisticsremove_transfer_manager0.0691
stocreate_fundraiser0.1261
stofreeze_fundraiser0.0703
stoinvest0.7040
stostop0.0816

Protocol Fees

In addition to transaction fees, certain on-chain transactions carry additional fixed fees.

The transactions that carry these additional protocol fees are configurable and can be updated via the governance process - modifying both the transactions that carry these fees, as well as the fee amounts for each transaction.

Currently only one types of transaction carries additional fees - this is:

  • registering a new ticker: this has a 1000 POLYX fee. Note this fee is also charged if directly creating an asset without first registering a ticker in a separate transaction.

Both transaction and protocol fees are paid to the operator that produces a block that includes the relevant transactions.

Protocol fees are only paid by a user if their action is successful - for example if you try and register a ticker that has already been registered, you won't be charged the 1000 POLYX protocol fee.