SettleMint
Token features

Transaction fee

How operators configure the transaction-fee token feature for on-chain fee collection on mint, burn, and transfer operations.

The transaction-fee token feature deducts a configured fee from each mint, burn, or transfer operation and credits the fee to a configured recipient wallet. Operators configure rates, verify the recipient, and inspect collection history from the asset workspace.

For the full calculation model, invariants, and audit fields, see Transaction Fee architecture.

The transaction-fee feature is mutually exclusive with transaction-fee-accounting. Pick transaction-fee for on-chain collection; pick the accounting variant when the fee should be recorded but settled off chain.

When it attaches

The mutual-fund template (system-fund) attaches transaction-fee. Convertible-note and some custom templates also use it.

What you configure

In the Asset Designer details step, the wizard surfaces:

ParameterDescription
mintFeeBpsFee on mint operations, in basis points. 100 means 1.00% of the minted amount goes to the recipient.
burnFeeBpsFee on burn operations.
transferFeeBpsFee on holder-initiated transfers.
recipientWallet that receives the collected fees.

Any of the fee rates can be set to zero to suppress fee collection on that operation type.

Valid rate range and validation

Each fee rate is a whole number of basis points from 0 to 10,000. 100 basis points is 1%, and 10,000 basis points is 100%. The cap matches the on-chain fee contract, so any rate above 100% is rejected before submission. Fractional basis points are not accepted; enter a whole number.

The same range applies everywhere you set a rate: the Asset Designer details step at creation time, and the Set transaction fee rates sheet when you update rates later.

Enter a value outside the range and the field shows an inline message: Fee must be between 0 and 10,000 basis points (0–100%).. The form keeps Continue disabled until you correct it. The error sits next to the field that caused it, the same way the address fields validate, so you can see which rate to fix.

EntryResult
0 to 10000 (integer)Accepted. 0 suppresses collection for that operation.
Above 10000Rejected with the inline range message; Continue stays disabled.
A fractional value such as 250.5Rejected; basis points must be whole numbers.

What you operate

After deployment:

  • Review configured rates on the asset detail workspace's transaction-fee capability card.
  • Check the fee recipient before approving rate or recipient changes. The recipient receives fee balances in the asset's own units.
  • Inspect collected fees from the transaction-fee detail view when you need the collection history for reconciliation.
  • Distribute the collected balance outside DALP if the operating model converts the asset-unit fee to fiat or another asset.

Operating considerations

  • The fee is deducted from the operation amount before the holder receives the net result. A 100-unit mint with a 1% mint fee credits 99 units to the holder and 1 unit to the recipient.
  • Per-operation rates are restricted-mutable. Updates apply forward; past operations were charged at the rate active at their time.
  • The feature only moves asset units for the rate-driven deduction. Force-transfers and other administrative operations are not regulated transfers under this module.
  • The recipient is restricted-mutable. Updating mid-life requires governance approval.

Troubleshooting

What you seeWhat to check
Holder receives less than expected on mintConfirm mintFeeBps matches the operating-team approval. A 1% fee on 100 units credits 99 units to the holder.
No fee collected on transferConfirm transferFeeBps is non-zero. The feature collects only when the rate is non-zero for the operation type.
Need accounting-only fee (no on-chain deduction)Use transaction-fee-accounting instead. The two features are mutually exclusive.
Continue is disabled with an inline range error on a fee fieldThe entered rate is outside 0–10,000 basis points or is not a whole number. Enter an integer in range; the message clears and Continue re-enables.

On this page