# Fee features

Source: https://docs.settlemint.com/docs/concepts/modeling-assets/token-features/fees
Reference for the token features that charge or record fees: management fee, transaction fee, transaction fee accounting and external transaction fee.

Four token features charge or record fees, and they differ in who pays and what moves. The management fee mints new tokens to a recipient and dilutes holders. The transaction fee takes a percentage of each operation in the same token. Transaction fee accounting records that percentage and moves nothing. The external transaction fee pulls a fixed amount of a second token from the payer. The [side-by-side comparison on the Token features page](https://docs.settlemint.com/docs/concepts/modeling-assets/token-features) shows one transfer under each fee.

A [token feature](https://docs.settlemint.com/docs/concepts/modeling-assets/token-features) is a module attached to one token. An account with the token's governance role attaches, detaches and configures it after issuance where the feature allows it, and each entry names any other role an action needs. The DALP Library is the catalogue of [instrument templates](https://docs.settlemint.com/docs/concepts/modeling-assets/instrument-templates) that ship with the platform, and each entry says which of them include the feature.

## Management fee [#management-fee]

Accrues an annual management fee on the token's time-weighted average supply and mints it to the fee recipient when someone collects it. It never touches a transfer, a mint, or a burn. It dilutes holders instead: every holder's share of supply shrinks by the amount minted, and the recipient gains it. The accrued fee is the average supply since the last collection, multiplied by the yearly rate and the elapsed time, divided by 365 days, and rounded down. Choose it for a fund-style fee that must not change any holder's balance or any transfer. The DALP Library includes it on five templates: Mutual Fund, ETF, Money Market Fund, Private Equity Fund, and Commercial Real Estate.

| Parameter | Description |
| --- | --- |
| Management fee (BPS) | The yearly rate in basis points, 0 to 10,000. 100 basis points equal 1%. |
| Management fee recipient | The account that receives each collection. |

After issuance, an account with the governance role sets the rate, sets the recipient, and freezes both. Changing the rate first settles the fees accrued so far at the old rate, when the old rate and the accrued amount are both greater than zero. The second generation, the newer feature implementation that [Token features](https://docs.settlemint.com/docs/concepts/modeling-assets/token-features) describes, settles the same way when the recipient changes, paying the old recipient. Only an accrual that rounds down to zero carries over to the new recipient. On that generation, a recipient change fails while the token refuses the payment, for example while it is halted, or while the old recipient's address is frozen on the token or no longer eligible to hold it. In the first generation, changing the recipient settles nothing, so earlier accruals go to the new recipient at the next collection. A management fee moves to the second generation when a Permission manager or System manager runs [System updates](https://docs.settlemint.com/docs/console/organisation-settings/system-updates) on the asset's network, once the platform runs DALP 3.2. A freeze locks the rate and the recipient of this feature instance and cannot be undone. It does not bind the token: the governance role can replace or detach the frozen feature and attach a new one with other terms. Any account can collect, and the collection pays the accrued fee to the recipient in force at that moment. Collection continues after a freeze. The how-to [Fee administration](https://docs.settlemint.com/docs/console/asset-management/manage/fee-administration) covers the screens.

With a constant supply of 1,000,000 tokens and a 1% rate, a full year accrues 10,000 tokens. The supply becomes 1,010,000, and a holder of 100,000 tokens falls from 10% to 9.901% of supply. The next period starts from 1,010,000. When the supply changes during the period, the average decides the fee. A supply of 1,000,000 tokens for 180 days and 1,500,000 tokens for the next 185 days averages 1,253,424.66 tokens, so the fee is about 12,534.25 tokens. The closing supply would give 15,000. A fee that rounds down to zero does not reset the window, so the accrual keeps growing until it produces a whole base unit.

In the second generation, the fee mint is a booked movement, a movement the token executes outside the fee and rewrite features. A transaction fee on the same token does not split it, transaction fee accounting does not record it, and an external transaction fee is not charged on it. Compliance and identity checks still apply to the recipient.

## Transaction fee [#transaction-fee]

Takes a fee as a percentage of each mint, burn, or transfer and splits the operation into two legs, the balance movements it settles into: a net leg to the receiver and a fee leg to the recipient. The second generation rounds the fee up to the next base unit, so any non-zero amount at a non-zero rate pays at least one base unit. The first generation rounds it down. The amount the user asked to move is always the total. A transfer of V sends V less the fee to the receiver, and the fee from the sender to the recipient. A mint of V mints V less the fee to the target and the fee to the recipient. A burn of V sends the fee from the holder to the recipient and burns the rest. The fee is not dilutive: supply changes only by the mint or burn the user asked for. No fee applies to a zero-value operation, to an operation that involves the fee recipient, to a custodian forced update, to a zero rate, to a first-generation fee that rounds down to zero, or to a booked movement such as a management fee mint. With a rate of 10,000 basis points, the whole amount goes to the recipient. The DALP Library includes it on one template, Mutual Fund.

| Parameter | Description |
| --- | --- |
| Mint fee (BPS) | The fee on a mint in basis points, 0 to 10,000. The default is 0. |
| Burn fee (BPS) | The fee on a burn in basis points, 0 to 10,000. The default is 0. |
| Transfer fee (BPS) | The fee on a transfer in basis points, 0 to 10,000. The default is 0. |
| Fee recipient | The account that receives the fees. |

After issuance, an account with the governance role sets all three rates together, sets the recipient, and freezes the rates. A freeze locks the rates of this feature instance only and cannot be undone, and governance can still replace or detach the feature. Setting the recipient still works after a freeze, and the change applies to the next operation. The fee leg runs the full pipeline, so an ineligible recipient blocks the whole operation. [Fee administration](https://docs.settlemint.com/docs/console/asset-management/manage/fee-administration) covers the screens.

A transfer of 100 tokens with a 250 basis point fee gives the receiver 97.5 and the recipient 2.5, and the sender pays 100. A mint of 100 at 100 basis points gives the target 99 and the recipient 1, and supply rises by 100. A burn of 100 at 100 basis points costs the holder 100, pays the recipient 1, and lowers supply by 99. On a 6-decimal token, 33.333333 tokens is 33,333,333 base units. At 150 basis points the second generation takes 500,000 base units, so the net is 32,833,333. An amount of 99 base units at 100 basis points has a fee of 1 and a net of 98, so splitting a transfer into small pieces no longer avoids the fee. The first generation takes 0 on that amount and passes it through unsplit.

A maturity redemption of a second-generation bond is refused when the burn fee takes the whole amount, for example 1 unit on a 0-decimal token with a non-zero burn fee. A batch redemption reports that holder as a skip.

In the second generation, a forced or booked movement emits no fee event. The first generation emitted an event even though it took no fee. Transaction fee cannot sit beside transaction fee accounting.

## Transaction fee accounting [#transaction-fee-accounting]

Applies the same percentage math as the transaction fee, including rounding up in the second generation, and records the result without collecting anything. On each mint, burn, or transfer, it computes the fee on the gross amount, adds it to a running total, and emits a fee event. Balances, supply, and transfers are untouched, and the recipient receives nothing on chain. Use it for off-chain invoicing and reporting. The DALP Library includes it on two templates, ETF and Asset-Backed Token. It cannot sit beside the transaction fee, because the two would account for the same transfer.

| Parameter | Description |
| --- | --- |
| Accounting fee on mint (BPS) | The recorded fee on a mint, 0 to 10,000. The default is 0. |
| Accounting fee on burn (BPS) | The recorded fee on a burn, 0 to 10,000. The default is 0. |
| Accounting fee on transfer (BPS) | The recorded fee on a transfer, 0 to 10,000. The default is 0. |
| Accounting fee recipient | The account named in the records. |

After issuance, an account with the governance role sets the rates and the recipient, freezes both, sets a per-account fee exemption, and reconciles. Reconcile reads the running total, sets it to zero, and emits a record. It moves no tokens and distributes nothing, because the actual collection happens off chain. A second reconcile with a zero total is rejected with `NoFeesToReconcile` ([DALP-1070](https://docs.settlemint.com/docs/api-reference/errors)). Reconcile and the exemption work after a freeze. An exempt account is skipped when it is on either side of an operation. Only transaction fee accounting has a per-account exemption. The other three fee features do not. A redemption accrues once at the burn rate.

A transfer of 100 tokens at 250 basis points records a fee of 2.5, and the receiver still gets all 100. After a reconcile of 1, the total reads 0, and no balance changes. The second generation skips booked movements, so a management fee mint no longer inflates the total.

## External transaction fee [#external-transaction-fee]

Charges a fixed fee for each mint, burn, or transfer, pulled in a second token. The token amount moves in full, and the fee does not depend on the amount. The payer is the account that receives a mint, or the sender of a transfer or a burn. The feature pulls the fee from the payer to the fee recipient with an ERC-20 transfer, so the payer must hold the fee token and must have approved the feature contract to spend it. That approval is an allowance, the amount of a token that one account lets another account spend. A payer without balance or allowance makes the whole token operation revert. The fee recipient is not exempt: when the recipient pays, it pays itself and still needs the allowance. Custodian forced updates, zero-value operations, and a fee token of zero charge nothing. The DALP Library includes it on one template, Asset-Backed Token.

| Parameter | Description |
| --- | --- |
| Fee token address | The ERC-20 token that pays the fee. It cannot be the token itself or the feature contract. A zero address charges nothing, whatever the fee amounts. |
| External fee recipient | The account that receives the fees. |
| External mint fee | The fixed fee for a mint. |
| External burn fee | The fixed fee for a burn. |
| External transfer fee | The fixed fee for a transfer. |

The issuance form takes the three fee amounts in base units of the fee token. After issuance, the "Set external fee amounts" sheet takes decimal units and scales them by the fee token's decimals, so 2.5 in the form is 2.5 base units and 2.5 in the sheet is 2.5 tokens. A zero fee token means the feature collects nothing.

After issuance, an account with the governance role sets the amounts, the recipient, and the token, and freezes them. A freeze locks the amounts, the recipient, and the token of this feature instance, and cannot be undone. Governance can still replace or detach the feature. Collection continues after a freeze. Payers approve the feature, not the recipient. With a fee of 2,500,000 base units of a 6-decimal fee token, a 100-token transfer costs the sender 100 tokens plus 2.5 fee tokens, and a 200-token transfer costs the same 2.5. A mint of 100 tokens charges the account that receives the mint, even when the issuer submits it. A redemption is charged at the burn fee.

In the second generation, a booked movement such as a management fee mint is not charged. See [Fee administration](https://docs.settlemint.com/docs/console/asset-management/manage/fee-administration) for the neighbouring fee screens.
