SettleMint
Token features

Fixed treasury yield API

API reference for configuring fixed treasury yield and operating holder claims, treasury funding, allowance approval, and coverage reads for yield-bearing DALP tokens.

Fixed treasury yield accrues periodic yield for token holders and pays claims from a configured denomination asset treasury. API clients use this reference to configure the feature, read coverage, fund the treasury, approve wallet treasury allowance, and submit holder claims.

This page is a reference. For operator workflow guidance, see Fixed treasury yield how-to. For the architecture model and feature behaviour, see Fixed Treasury Yield.

Configuration during token creation

Configure the feature during token creation or through the configurable-token feature deployment flow.

{
  "fixed-treasury-yield": {
    "denominationAsset": "0x1111111111111111111111111111111111111111",
    "basisPerUnit": "1000000000000000000",
    "treasury": "0x2222222222222222222222222222222222222222",
    "startDate": "2026-01-01T00:00:00Z",
    "endDate": "2027-12-31T00:00:00Z",
    "rate": 500,
    "interval": "MONTHLY"
  }
}
ParameterTypeRequiredDescription
denominationAssetEVM addressYesERC-20 address used for yield payouts.
basisPerUnitInteger stringYesDenomination asset base units per token unit used to size yield accrual. Must be greater than zero and fit within uint256.
treasuryEVM addressYesAddress that funds yield distributions. Must not be the zero address.
startDateTimestampYesFuture timestamp when accrual begins.
endDateTimestampYesFuture timestamp when accrual stops. Must be after startDate.
rateIntegerYesPer-period rate in basis points. Must be at least 1.
intervalEnumYesDALP time interval used for accrual periods.

DALP validates the address, integer, date, rate, and interval fields before queuing feature deployment. A configuration that cannot satisfy those checks fails validation instead of entering the transaction queue.

Feature operations

Fixed treasury yield exposes token feature operations under /api/v2/tokens/{tokenAddress}/features/fixed-treasury-yield.

OperationMethod and pathUse it forCaller
Claim accrued yieldPOST /api/v2/tokens/{tokenAddress}/features/fixed-treasury-yield/claimsSubmit a holder claim for completed-period yield.Holder wallet
Update treasuryPATCH /api/v2/tokens/{tokenAddress}/features/fixed-treasury-yield/treasuryChange the treasury address used for future payouts.Governance role
Top up treasuryPOST /api/v2/tokens/{tokenAddress}/features/fixed-treasury-yield/top-upsTransfer denomination asset from the caller's wallet to the configured treasury.Funding wallet
Approve treasury allowancePOST /api/v2/tokens/{tokenAddress}/features/fixed-treasury-yield/treasury-allowanceLet the schedule contract spend denomination asset from a wallet treasury.Treasury wallet

Mutation responses use DALP's asynchronous blockchain mutation envelope and return the updated token resource when the queued operation completes.

Claim behaviour

A holder claim pays yield for completed periods that remain claimable for the effective wallet. DALP performs conservative preflight checks before queueing the claim:

  • After the schedule start date, if less than one configured interval has completed, the claim is rejected before queueing.
  • If all completed periods have already been claimed, the claim is rejected before queueing.
  • If accrued yield is zero, the claim is rejected before queueing. This can happen when accrual is closed after conversion, consumed interest offsets accrual, or the holder had no balance at completed-period boundaries.
  • If schedule or holder data is temporarily unavailable, DALP lets on-chain execution decide instead of blocking on incomplete off-chain reads.

The claim transaction still depends on the treasury payout path. For wallet treasuries, the treasury wallet must approve the schedule contract to spend the denomination asset.

Treasury allowance approval

Use POST /api/v2/tokens/{tokenAddress}/features/fixed-treasury-yield/treasury-allowance when the configured treasury is a wallet and the schedule needs ERC-20 allowance to pay holders.

{
  "amount": "1000000000000000000"
}
Body fieldTypeDescription
amountInteger stringAllowance in denomination asset base units. The treasury wallet must sign this transaction.

Do not show this action for contract treasuries. Contract treasuries use their own payout logic, and wallet allowance semantics do not apply.

Top up treasury

Use POST /api/v2/tokens/{tokenAddress}/features/fixed-treasury-yield/top-ups to move denomination asset from the caller's wallet to the configured treasury.

{
  "amount": "1000000000000000000"
}
Body fieldTypeDescription
amountInteger stringDenomination asset amount in base units.

Top-up funding and allowance approval are separate controls. A funded wallet treasury can still block holder claims when allowance is too low.

Coverage monitoring

Read coverage before prompting operators or holders:

curl "https://your-platform.example.com/api/v2/tokens/0xTOKEN/stats/yield-coverage" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"

The coverage response includes:

FieldUse it for
hasYieldScheduleDetermine whether DALP has indexed a schedule for the token.
isRunningShow whether the current time falls within the configured schedule window.
totalUnclaimedYieldDisplay outstanding claimable yield after consumed-interest adjustment.
denominationAssetBalanceCompare available denomination asset balance with outstanding claims.
denominationAssetTreasuryAllowanceRead wallet treasury allowance granted to the schedule contract.
requiredAllowanceSize the allowance prompt for wallet treasuries.
allowanceCoveredPercentageDisplay how much of the required allowance is covered.
treasuryIsContractDecide whether to show wallet allowance actions.
treasuryAddressShow the configured treasury address when indexed.
scheduleAddressIdentify the schedule contract address used as the allowance spender.

Prompt for allowance only when treasuryIsContract is false and denominationAssetTreasuryAllowance is lower than requiredAllowance. If treasuryIsContract is null, wait for indexing to classify the treasury before deciding which prompt to show.

On this page