Skip to content

Staking

Access prerequisites

  • Permission (module): manageToken
  • License/Feature: STAKING_TOKENS enabled in the tenant license (Vault).
  • Menu container: GENERAL → Products group → Staking

What it is / when to use

Staking allows the operator to configure yield products on tokens: the user locks (stakes) a quantity of a token and, periodically, receives yield payments in another token (or the same one). This screen manages staking configurations (StakingConfig) — the "product rules" — not the individual user applications (those are found in Staking Applications).

Use this to create a new staking product, adjust rates/terms, activate/deactivate, or open a product dashboard to monitor applications.

Prerequisites

  • Permission: manageToken (CPM static enum + dynamic module in the DB).
  • License/Feature: STAKING_TOKENS enabled. If disabled, the menu item does not appear at all.
  • Dependencies: the stake token (unit_of_money) and the payment token (unit_to_pay) must already exist on the platform.

Step by step

  1. Go to Products → Staking.
  2. The list shows products by name, stake token, payment token, and status (active/inactive).
  3. Use Create to open the configuration modal.
  4. Fill in the fields and save.
  5. On each row, use Edit, Dashboard (monitor applications), or Delete.

Fields (configuration modal)

FieldWhat it isRequired?System/backend effect
Name (name)Name of the staking productYesIdentifies the configuration.
Stake token (unit_of_money)Token the user locksYesDefines the asset accepted for staking.
Payment token (unit_to_pay)Token in which yield is paidYesDefines the payout asset.
Term (stakingLength)Duration of the stakingYesMust be > 0 (BigNumber). Combined with periodType.
Period type (periodType)M (months) or Y (years)YesDefault M.
Value to apply (valueToApply)Yield rate/percentageYesMust be > 0. Together with method (always P = percentage) and thresholdToApply, governs the payout calculation.
Threshold (thresholdToApply)Minimum value for yield to applyNoRange from which yield is applied.
Exit fee (exit_fee)Penalty for early withdrawalNoApplied when there is a withdrawal before the term ends.
Monthly payments (monthlyPayments)Pays yield month by monthNoPersisted as 1 (on) or -1 (off).
Allow early withdrawal (allowEarlyWithdraw)Allows redemption before the termNoEnables early withdrawal (subject to exit_fee).
Hold (hold)Additional retention/lockNoProduct behavior flag.
Terms (terms, upload)Product terms documentNoUpload via files API (max 30 MB); stores the URL.
Active (is_active)Product available for new stakesNoDefault true on creation. Deactivating does not cancel existing applications; it only prevents new ones.

Actions and modals

  • Create / Edit: opens the StakeTokensModalComponent modal. Save is disabled while name, tokens, term > 0, and value > 0 are missing.
  • Dashboard: navigates to manage-stakes/dashboard/:id to monitor the product's applications.
  • Delete: removes the configuration (with confirmation) and reloads.
  • Help: troubleshooting button opens the built-in staking guide.

Business rules / considerations

Attention

  • Term and value to apply must be > 0 (validated as BigNumber); otherwise the save button remains blocked.
  • Deactivating a product does not affect already-made applications — it only prevents new enrollments.
  • method is fixed to P (percentage) on save, even if the model allows other methods.
  • Idempotency: staking payouts are idempotent — reprocessing a payment (after retry/crash) is safe; the FinLib errorCode E00021 "already processed" means success.
  • Financial values: value, threshold, exit fee, and term are all treated as BigNumber — no rounding.

Examples

Scenario 1 — 12-month staking with monthly payments
  1. Create a product: stake token = AXT, payment token = tBRL.
  2. Term 12, period M (months), value to apply 1.5 (percentage), monthly payments on.
  3. No early withdrawal (allowEarlyWithdraw off).
  4. The user who enrolls locks AXT and receives tBRL every month according to the percentage.
Scenario 2 — Annual product with early withdrawal and penalty
  1. Term 1, period Y (year), value to apply 18 (percentage per year).
  2. allowEarlyWithdraw on, exit_fee 5.
  3. The user can withdraw before 1 year, but pays an exit penalty of 5.
Scenario 3 — Pause enrollments without affecting existing stakers
  1. Edit the product and uncheck Active.
  2. New enrollments are blocked; ongoing applications continue to yield and pay normally.