Skip to main content

Fee administration

Set transaction and management fee rates and recipients, freeze either rate for the life of its feature instance, and collect accrued management fees.
Open it fromAssetsAll assetsActionsSet management fee rateRole:GovernanceConsole address: /token/assetClassSlug/templateSlug/tokenAddress/manage/action

Fee administration sets the rates and recipients of an asset's transaction fee and management fee, freezes either rate, and collects accrued management fees. Seven controls in the asset's “Actions” menu do this. To read the current rates, the recipient or the frozen state, open the asset's Features tab and read the “Transaction fee” or “Management fee” card.

Transaction fee sets three rates, mint, burn, and transfer, each in basis points, where one basis point equals 0.01% of the operation's value. The token collects that fee automatically: every operation it applies to splits the moment it runs into the amount the recipient receives, the net leg, and the fee, the fee leg, which lands directly in the fee recipient's balance. A zero-value operation, an operation that involves the fee recipient, a custodian forced transfer, forced burn or wallet recovery, a booked movement, and an operation whose fee rounds down to zero pass through without a split.

Management fee works differently. It sets a single annual rate that accrues continuously against the token's time-weighted average supply, the average amount outstanding since the last collection, weighted by how long each amount stayed outstanding. Nothing moves until someone runs Collect management fee, which mints the amount accrued so far straight to the recipient. The external transaction fee and the transaction fee accounting feature have their own controls on their own feature card or page, and the token features catalogue describes both.

Six of the seven controls check the Governance role. Collect management fee checks no role: any account can run it, and the caller cannot choose the amount or the recipient, which follow the accrual. Visibility is separate from permission. None of the seven appear in “Actions” until an operator attaches the corresponding feature, transaction fee or management fee, to the asset and its configuration finishes indexing. The six governance controls then show only to a user who holds at least one role on the asset, on any of their wallets, and the menu disables any of them that the signed-in wallet cannot run. “Collect management fee” shows to every user. The role gates changes to the configuration. A rate, a recipient and a frozen flag are stored in the fee feature attached to the token, and each stays in force after the Governance role changes hands.

Freezing transaction fee rates and freezing the management fee rate each set a one-way flag on that fee's feature contract. The fee features define no function that clears the flag, so rate-setting on that feature instance stops for every Governance holder. Replacing the feature starts a fresh, unfrozen instance with a rate that can change again, so a freeze binds only the instance it was set on. An account with the Governance role, together with Supply management and Custodian or the admin role, replaces it with Replace in the fee's section menu on the Features tab, or through the Platform API. The freeze does not reach the same controls on both fees. A transaction fee freeze locks the three rates only: setting the transaction fee recipient keeps working. A management fee freeze locks the rate and the recipient: the contract refuses a recipient change, and the Console disables “Set management fee recipient” with “The management fee is frozen”. Collecting management fees keeps working after either freeze. After a management fee freeze the recipient cannot change, even if its key is lost, until an account that can set the feature list replaces the whole feature. Confirm the recipient before you freeze. No fee control reopens a frozen fee.

The “Set management fee rate” page at its “Details” step.

The page explains that the rate is annual, in basis points, and that 100 basis points equals 1%. Its “Details” step asks for one field, “Fee rate (basis points)”, which starts at 0 rather than the current rate.

Steps

Open the fee control

Open “All assets”, select the asset, and open Actions. Each fee action opens on its own page under the asset, with a breadcrumb back to the asset, and “Cancel” returns you to where you came from. The menu lists up to seven fee controls, grouped by mechanism:

  • “Set transaction fee rates”, “Set transaction fee recipient” and “Freeze transaction fee rates” for the per-operation mechanism.
  • “Set management fee rate”, “Set management fee recipient”, “Freeze management fee rate” and “Collect management fee” for the accrual mechanism.

The same controls sit on each fee's own page. Open it with View transaction fee details or “View management fee details” on the fee's card on the Features tab. The transaction fee page has “Set transaction fee rates”, an “Edit” button on the “Fee recipient” row, and “Freeze transaction fee rates”. The management fee page has an “Edit” button on the “Annual rate” and “Fee recipient” rows, “Collect management fee” in its title row, and “Freeze management fee rate” at its foot. A page hides a control when none of your wallets holds its role. It greys the control out, naming the wallet, when another of your wallets holds the role, and greys out a frozen fee's controls with the frozen message.

Pick a rate-setting or recipient-setting control for routine configuration changes. Both are reversible for as long as the fee stays unfrozen. Reach for Freeze transaction fee rates or “Freeze management fee rate” only when the rate is meant to stop changing forever, since neither this page nor any other control in the Console reopens a frozen rate. Use “Collect management fee” whenever accrued value needs to reach the recipient now, since nothing collects it automatically the way transaction fee does.

The “Actions” menu of an asset with the management fee feature, showing its four management fee controls.

The menu lists “Set management fee rate”, “Set management fee recipient”, “Freeze management fee rate” and “Collect management fee” among the other controls. The transaction fee controls show the same way on an asset with the transaction fee feature.

Enter the rates, recipient or symbol

For Set transaction fee rates, the mint, burn, and transfer fields open with the current rates. Change the rates you need as whole basis points, each from 0 to 10000, where 10000 equals 100%. At 10000 the whole amount of a transfer goes to the fee recipient. The burn rate also applies when a holder redeems at maturity, and the holder is paid only for the units that burn. The confirm step shows each changed rate as old → new and each unchanged rate as its current value. Review all three before submitting, since one submission updates all three rates at once.

For Set management fee rate, enter a single annual rate as whole basis points, again 0 to 10000. The field starts at 0 rather than the current rate, unless the page opens from a draft that carries a rate, so enter the full rate you want. The rate accrues against time-weighted average supply, so a change applies to value that accrues from this point. When the old rate is above zero and fees have accrued, changing the rate first settles them: the contract mints that amount to the current recipient, as “Collect management fee” does, and “Total collected” can therefore increase. When the accrued amount still rounds down to zero, nothing settles and the carried accrual is charged at the new rate. Submitting the rate that is already set settles nothing.

For Set transaction fee recipient or “Set management fee recipient”, pick the recipient address from the same eligibility-checked picker ordinary transfer uses. That check filters a fee recipient exactly as it filters an ordinary transfer recipient: an address that cannot receive this token does not appear as a choice, and the token checks the recipient again whenever a fee leg moves value to it. If the recipient later loses eligibility, the next operation that owes a fee to it fails, instead of the fee quietly not arriving.

On the second generation of the management fee feature, which Fees describes, a recipient change first settles the fees accrued so far, as a rate change does: the contract mints them to the old recipient, and fees accrued after the change go to the new recipient. When the accrued amount still rounds down to zero, nothing settles, and that amount keeps growing and goes to the new recipient at the next collection. The first generation switches without settling, so its next collection mints everything accrued since the last one to the new recipient. An organisation moves its management fees to the second generation when a Permission manager or System manager runs System updates, once the platform runs DALP 3.2. The Console shows no generation badge, so when the old recipient is owed the fees, run “Collect management fee” before the change. That pays the old recipient on either generation.

Freezing cannot be undone on the feature instance, so confirm the rate and, for the management fee, the recipient first. For “Freeze transaction fee rates” or “Freeze management fee rate”, there is no rate or recipient to enter. Each page states what the freeze locks. The transaction fee page says the rates “stay as they are forever. Nobody can change them again. The fee recipient can still be changed.” The management fee page says the rate and fee recipient “stay as they are forever. Nobody can change them again.” Both pages then ask you to type the asset's symbol to confirm. Only an exact, case-sensitive match of the symbol, ignoring leading and trailing spaces, lets you continue to Freeze permanently and wallet verification.

Collect management fee has no fields at all. Confirming submits directly to wallet verification, and the amount collected is whatever has accrued since the last collection. Collecting mints that amount as new tokens straight to the recipient, so every holder's proportional share of the asset shrinks. The collection mint is booked as a fee movement: a transaction fee on the same token does not split it, and an external transaction fee does not charge it, but identity and compliance checks still run. If the recipient has lost eligibility since it was set, the mint fails the same eligibility check an ordinary mint to that address would fail, and the whole collection reverts instead of partially completing.

Confirm with wallet verification

Confirm with wallet verification, the same as any other Console admin change. A rate, recipient or freeze change waits for a second person only while the Administration row under “Approvals” on General protects the “Token administration” group. “Collect management fee” never waits.

A rate or recipient change that fails a check reverts and leaves the configuration unchanged. A management fee change that first pays out accrued fees fails when the asset refuses that payment: for example while the asset is halted, or while the recipient set before the change is frozen on the token or no longer eligible to hold it. A rate change pays out first when fees have accrued at a rate greater than zero, and on the second generation a recipient change does too. Once a rate change lands, it applies to whatever runs after it, not to the rate that was live when someone submitted a transaction. A mint, burn, or transfer already sent but not confirmed still charges whichever rate is live the instant it executes, so a rate change can alter the fee on an operation a holder already signed. Freezing cannot be undone, and each freeze sheet says so in its description: “Permanently freeze the transaction fee rates. This action is irreversible.” for the transaction fee control, “Permanently freeze the management fee rate. This action cannot be undone.” for the management fee control.

Collecting management fees is not reversible either. Once a collection mints tokens to the recipient, those tokens exist like any other holding, and the Console has no control to reverse a collection.

Freezing locks the rate lever outright. The transaction fee recipient and management fee collection stay available regardlessSix of the seven fee controls require the Governance role, and "Collect management fee" requires none. Once a rate is frozen, no function on that feature instance reverses it, so rate-setting for that fee is blocked for every Governance holder. Setting the transaction fee recipient and collecting management fees are unaffected by frozen state. Setting the management fee recipient does not appear in either lane here: freezing the management fee blocks it too.Freeze needs Governance roleRate leverSet fee ratesFreeze fee ratesNo function anywherereverses a freeze.Recipient and collectSet tx fee recipientCollect management feeFrozen state on either fee'srate never changes what thesetwo controls are allowed to do.Rate lockedpermanentlyStays availableWhat remains available after a fee freeze.Freezing requires the Governance role and is permanent on that feature instance. A transaction fee freeze locks the mint, burn, and transfer rates but allows the recipient to change. A management fee freeze locks both its rate and recipient, while collection remains available.

Freezing locks the rates and, for the management fee, the recipient, while setting the transaction fee recipient and collecting management fees keep working.

Troubleshooting

Fee controls are missing from Actions

Signal: none of the seven fee controls appear. Cause: the asset carries neither the transaction fee feature nor the management fee feature, or it carries one whose configuration has not finished indexing yet, in which case the Console treats it as not configured. Fix: open the Features tab. If no fee card exists, a Governance holder attaches one from “Attach a feature”. If a fee feature was just attached, wait for the configuration to finish indexing and reopen the menu.

A fee control is greyed out

Signal: a control shows in the menu, greyed out. Cause: your wallet lacks the Governance role on this specific asset, or the fee is frozen. A frozen fee shows its own message, “Fee rates are frozen and cannot be changed.” or “The management fee is frozen”, even when you also lack the role, because no role reopens it. A missing role shows “You need the Governance role on this asset to manage its fees.” When another wallet of yours holds the role, the control names that wallet instead. “Collect management fee” is never disabled for a missing role. Fix: if the card shows no “Frozen” badge, ask an administrator to grant the Governance role, scoped to this asset. If it does, someone already froze that fee for every Governance holder, and only “Replace” in the fee's section menu on the Features tab or through the Platform API starts a new, unfrozen instance.

Freeze confirmation does not continue

Signal: the freeze page does not advance to wallet verification. Cause: the typed text does not exactly match the asset's symbol. The check is case-sensitive and ignores only leading and trailing spaces. Fix: retype the symbol exactly as the field label shows it.

A mint, burn, or transfer reverts even though rates and roles look fine

Signal: an ordinary mint, burn, or transfer reverts on an asset that carries the transaction fee feature, even though the operation itself would normally succeed. Cause: the transaction fee recipient no longer passes the eligibility check that gates every operation on this token. The fee leg the token creates on every qualifying operation goes through the same check as the operation itself, so an ineligible fee recipient blocks the whole operation, not just its fee. Eligibility can change after the recipient was set, so this can surface long after that change. Fix: restore the recipient's eligibility, or use Set transaction fee recipient to point at an eligible address instead.

Collect management fee reverts instead of minting

Signal: “Collect management fee” reverts rather than completing. Cause: the asset refuses the minted fee amount. The management fee recipient no longer passes the same eligibility check as a transfer recipient, its address is frozen on the token, or the asset is halted. Fix: if the asset is halted, collect once Resume token operations has run. If the recipient's address is frozen, have a Custodian unfreeze it. If the recipient lost eligibility, restore it. Then retry the collection. On the first generation of the feature, “Set management fee recipient” can instead point at an eligible address first, and that address then receives the whole accrual. This does not work once someone has used “Freeze management fee rate”. On the second generation a recipient change pays the old recipient first, so it fails for the same reason until the old recipient can receive again.

Set management fee recipient reverts

Signal: a management fee recipient change reverts, and the Management fee card still shows the old “Fee recipient”. Cause: on the second generation of the feature, the change first mints the fees accrued so far to the old recipient, and the asset refuses that mint. The asset is halted, the old recipient's address is frozen on the token, or the old recipient is no longer eligible to hold the token. Fix: if the asset is halted, change the recipient once “Resume token operations” has run. Resuming only for this change also reopens transfers for every holder. If the old recipient's address is frozen, have a Custodian unfreeze it. If the old recipient lost eligibility, restore it. Then change the recipient. The change pays the old recipient the fees accrued so far, so a recipient you replace because it is frozen or ineligible receives those fees before the new recipient takes over. A change goes through without a payment while the rate is zero, or while the fees accrued so far round down to zero.

Collect management fee reports zero collected

Signal: “Collect management fee” completes without reverting, but the collected amount is zero and “Total collected” does not change. Cause: no time has passed since the last collection, or the accrued amount rounds down to zero at the current rate and supply. The fee formula weights supply by elapsed time, so a very short gap between collections can legitimately accrue nothing. The accrued amount is the time-weighted average supply since the last collection, multiplied by the annual rate, multiplied by the elapsed time, divided by a year. A short elapsed time or a low rate can round that product down to zero even with a healthy supply. Fix: nothing to fix. Wait longer between collections, or check the card's Accrued (est.) figure before collecting to confirm there is a meaningful amount to collect.

Frequently asked questions

What still works after a freeze?

Setting the transaction fee recipient and collecting management fees. A transaction fee freeze locks only the three rates, and no freeze stops collection. A management fee freeze also locks the recipient.

Why is there no collect control for the transaction fee?

Transaction fee pays itself out inside every mint, burn, and transfer it applies to, so there is nothing left to collect afterward. The “Transaction fee” card's “Total collected” figure and the Collections history on the transaction fee page record the fees already paid.

Was this page helpful?