SettleMint
ArchitectureComponentsToken Features

AUM Fee

Time-based management fee on DALPAsset. Accrues over time based on total supply and is collected by minting new tokens to the fee recipient as an inflationary mechanism.

AUM Fee charges a time-based management fee as a percentage of Assets Under Management. Collection mints new tokens to the configured recipient, so the fee is paid through dilution rather than a treasury transfer.

Related pages:


Interface (capabilities)

This feature exposes the following capabilities. Fee collection is inflationary: it mints new tokens to the configured recipient rather than transferring existing tokens.

CapabilityWho can callInputsOn-chain effectEmitsNotes
Collect accrued feeAnyoneNone (uses elapsed time + total supply)Mints tokens to fee recipientAUMFeeCollectedPermissionless trigger; accrues continuously
Set fee rateGOVERNANCE_ROLENew rate (basis points)Updates annual fee rateFeeRateUpdatedBlocked after freeze
Set fee recipientGOVERNANCE_ROLERecipient addressRedirects future collectionsFeeRecipientUpdatedEffective immediately
Freeze fee rateGOVERNANCE_ROLENonePermanently locks rateFeeRateFrozenIrreversible

Accrued fees, current rate, recipient, and freeze status are available as read-only queries.


Accrued estimate read

GET /api/v2/tokens/{tokenAddress}/aum-fee/accrued-estimate reads the token's attached AUM Fee feature and returns the current accrued fee estimate. DALP reads getAccruedFees() and getLastCollectionTime() together, then returns the estimate in token units with the annual rate, last collection time, measurement time, and feature contract address.

The response uses the standard single-resource envelope. data is null when the token has no attached AUM Fee feature or the attached feature has not been initialised. If the chain read is unavailable, treat the estimate as temporarily unavailable rather than as zero accrued fees.

Use this read when an integration needs the same accrued-fee anchor shown in the token workspace before collecting fees.


Token workspace surface

Tokens with the AUM Fee feature show an AUM Fee tile in the asset detail workspace. The tile summarizes the annual rate, fee recipient, last collection time, accrued estimate, total collected amount, and whether the rate is frozen. Use View AUM fee details to open the token's /aum-fee detail page.

The detail page separates:

  • Configuration: annual rate, fee recipient, frozen state, and last collected time.
  • Collection stats: estimated accrued fees and total collected fees.

If the token does not have the AUM Fee feature attached, the AUM Fee detail page shows an empty state instead of management controls.

Users with the matching token permissions see a Manage AUM fee menu on the detail page. Depending on their permissions, the menu can include actions to collect accrued fees, set the annual rate, set the fee recipient, and freeze the rate. Users without any of those permissions do not see the menu.


Business impact

  • Holders: Fee accrual is inflationary: new tokens are minted, diluting existing holder percentage ownership. NAV per token decreases proportionally over time.
  • Issuer / recipient: Fee collected as newly minted tokens to configured feeRecipient. No treasury drawdown required.
  • Economics: Fee accrues continuously based on time elapsed and current total supply. Collection is triggered on demand (not automatic).

Risks & abuse cases

  • Uncapped dilution: If freezeFeeRate() is not called after launch, GOVERNANCE_ROLE can raise the fee rate at any time, retroactively increasing the accrued fee on next collection.
  • Delayed collection: Accrued fees do not execute until someone triggers collection. Large time gaps between collections produce large single-mint events, which may alarm holders or analytics systems.
  • Fee recipient manipulation: setFeeRecipient() can redirect fee flow to any address. No time-lock by default.

Controls & guardrails

RoleActionsRecommended guardrail
GOVERNANCE_ROLEsetFeeBps(): set fee rate in basis pointsCall freezeFeeRate() immediately after launch to lock rate permanently
GOVERNANCE_ROLEsetFeeRecipient(): set collection destinationMulti-sig controlled; audit recipient changes
GOVERNANCE_ROLEfreezeFeeRate(): permanently lock fee rateCall at launch: prevents future rate changes

Failure modes & edge cases

  • Zero supply: If total supply is zero, no fee accrues regardless of time. Collection produces a zero-mint no-op.
  • Rate frozen at zero: If freezeFeeRate() is called with feeBps = 0, the feature remains active but never collects. Disable it entirely instead.
  • Reentrant collection: If collection is called during a lifecycle hook chain, downstream hooks see the inflated supply in the same transaction. Order analytics features after AUM Fee.

Auditability & operational signals

  • AUMFeeCollected(collector, recipient, feeAmount, timestamp): emitted on each collection. Monitor for anomalous mint sizes.
  • FeeRateUpdated(sender, oldFeeBps, newFeeBps): emitted on rate changes. Alert on any post-launch rate change.
  • FeeRateFrozen(sender): emitted once on freeze. Absence of this event after launch is a configuration risk.

Dependencies

  • No external ERC-20 dependency: fee paid in the token itself (minting).
  • No treasury contract required.
  • No other features required, but analytics features (Historical Balances) should run after AUM Fee in the hook order.

Compatibility & ordering notes

  • Run AUM Fee before Historical Balances and Voting Power in the feature array: analytics hooks must see post-fee supply.
  • No conflict with compliance modules (AUM Fee does not go through transfer compliance checks: it mints directly).
  • Compatible with Maturity Redemption: AUM Fee stops having economic impact once transfers are blocked post-maturity, but it continues accruing until collection or feature removal.

Change impact

  • Enable after launch: Retroactive accrual does not occur: accrual starts from the moment the feature is activated.
  • Disable: Accrued-but-uncollected fees are lost. Collect before removing the feature.
  • Rate change: Takes effect immediately on next collection calculation. Freeze rate to prevent future changes.
  • Recipient change: Effective immediately for all future collections.

See also

On this page