# ERC-5725: Transferable Vesting NFT

Source: https://www.eipsfordesigners.com/standards/ERC-5725
Agent brief: https://www.eipsfordesigners.com/standards/ERC-5725/agent.md
Machine-readable JSON: https://www.eipsfordesigners.com/api/standards/ERC-5725
Last reviewed: 2026-04-05
Last updated: 2026-04-05

| Field | Value |
| --- | --- |
| Status | Final |
| Chain | both |
| Category | DeFi Patterns |
| Journey stages | Asset Management |
| Detailed guide | Yes |
| Official specification | https://eips.ethereum.org/EIPS/eip-5725 |
| Discussion search | https://ethereum-magicians.org/search?q=ERC-5725 |

## UX Impact

Users hold NFTs representing vesting schedules that can be traded — unlocking liquidity for locked tokens. Design implications: show vesting curve visualization (linear/cliff/exponential), display claimable vs locked amounts, add 'Claim' action for vested tokens, show vesting end date and total allocation, enable NFT transfer/listing while maintaining vesting data. Design decisions: pricing display for secondary markets (discount to fully-vested value), whether to show implied discount rate, how to communicate that buying a vesting NFT means inheriting the vesting schedule.

## Summary

ERC-5725 turns vesting schedules into tradeable NFTs. Your employee token grant, investor allocation, or airdrop vesting becomes a transferable position—sell your future tokens now at a discount, or buy someone's unvested allocation for a deal.

## For Designers

- You can design UI that delivers sell vesting NFT for immediate liquidity.
- You can design UI that delivers secondary market for vesting positions.
- You can design UI that delivers nFT shows total, vested, claimable clearly.

## Applicability

### When to Use

- Your product addresses: vesting tokens locked until schedule complete.
- Your product must handle: can't trade unvested allocations.
- The flow should deliver: sell vesting NFT for immediate liquidity.
- You are designing a vesting nft dashboard experience with visible states and recovery paths.

### When to Avoid

- Clearly show cliff date and whether it's passed.
- Show both: "Vested: X | Claimable: Y".
- Show market value and % discount.
- No token balances, swaps, lending, or yield flows appear in the product.

## Problems It Solves

### Vesting tokens locked until schedule complete

Impact: critical

Old way: Wait 4 years to access full allocation

New way: Sell vesting NFT for immediate liquidity

### Can't trade unvested allocations

Impact: critical

Old way: No market for future tokens

New way: Secondary market for vesting positions

### Vesting progress not visible

Impact: high

Old way: Check protocol, do math for unlocked amount

New way: NFT shows total, vested, claimable clearly

### Early employees need liquidity

Impact: high

Old way: Wait or borrow against promise

New way: Sell portion of vesting NFT

### Vesting terms not standardized

Impact: medium

Old way: Each protocol different interface

New way: Standard functions: claimable, vested, claim

## Anti-Patterns

### Not showing cliff status

Severity: critical

User thinks they can claim but cliff hasn't passed

Instead: Clearly show cliff date and whether it's passed

### Confusing vested vs claimable

Severity: high

Vested might not equal claimable in some schedules

Instead: Show both: "Vested: X | Claimable: Y"

### No sell discount context

Severity: high

Seller doesn't know if their price is reasonable

Instead: Show market value and % discount

### Hiding time risk for buyers

Severity: high

Buyer doesn't understand they're taking price risk

Instead: Explicit warning: "Token may decrease during vesting"

### No daily/hourly unlock rate

Severity: medium

User doesn't know how fast tokens vest

Instead: Show "~68 PROTO unlock per day"

## UI Components

### VestingProgressBar

Visual progress of vesting schedule
States: before-cliff, vesting, fully-vested
Props: total, vested, claimed, cliffDate, endDate

### VestingNFTCard

Card displaying vesting position
States: loading, active, fully-vested, transferred
Props: vestingNFT, currentPrice, onClaim, onTransfer, onSell

### UnlockScheduleChart

Graph showing tokens unlocking over time
States: loading, ready
Props: schedule, currentDate, milestones[]

### VestingMarketplace

Buy/sell vesting positions
States: loading, listings, no-listings
Props: token, listings[], onBuy, onList

### ClaimInterface

Interface for claiming vested tokens
States: nothing-claimable, claimable, claiming, claimed
Props: claimableAmount, onClaim, destinationOptions[]

## On Monad

### Claim Frequency

Ethereum: Claiming costs gas, so users batch claims

Monad: Cheap claims enable daily/hourly claiming

Design implication: Can show "Claim" button always enabled

### Real-time Vesting

Ethereum: Vested amount updates per block (~12s)

Monad: Sub-second blocks show near-continuous vesting

Design implication: Progress bar can animate smoothly

### Marketplace Trading

Ethereum: High gas discourages small trades

Monad: Active trading market viable

Design implication: Can have liquid vesting marketplaces

### Partial Claims

Ethereum: Claiming partial amounts costs same gas

Monad: Cheap partial claims for DCA-style withdrawal

Design implication: Offer flexible claim amounts

## Key Takeaways

- ERC-5725 = vesting schedules as tradeable NFTs
- Show vested, claimable, and claimed separately
- Cliff date must be prominent
- Help sellers and buyers understand discount/risk
- Display unlock rate (daily/hourly)

## UX Patterns

### Vesting NFT Dashboard

View all vesting positions as NFTs

User flow:

- User views vesting dashboard
- Sees all vesting NFTs they own
- Progress bar shows vested portion
- Claimable amount shown in tokens and USD
- Can claim vested or sell entire position

Mockup registry key: `concept/nft-gallery` (React UI on the live standard page).

### Vesting Schedule Visualization

Show unlock schedule over time

User flow:

- User opens vesting details
- Sees visual unlock curve
- Current position marked
- Key milestones highlighted
- Daily unlock rate shown

Mockup registry key: `generic/vault-deposit` (React UI on the live standard page).

### Sell Vesting Position

List vesting NFT for sale

User flow:

- User selects vesting NFT to sell
- Sees current vesting state
- Market value calculated
- Sets asking price
- Discount from market shown
- Lists for sale

Mockup registry key: `concept/nft-gallery` (React UI on the live standard page).

### Buy Vesting Position

Purchase someone's vesting NFT

User flow:

- User browses vesting marketplace
- Selects interesting position
- Sees exactly what they get
- Analyzes discount and break-even
- Understands time risk
- Purchases vesting NFT

Mockup registry key: `concept/nft-gallery` (React UI on the live standard page).

### Claim Vested Tokens

Withdraw unlocked tokens

User flow:

- User views claimable amount
- Sees when they last claimed
- Chooses amount to claim
- Selects destination
- Claims tokens to wallet

Mockup registry key: `generic/vault-position` (React UI on the live standard page).

## Technical Notes

ERC-5725 extends ERC-721 with vestedPayoutAtTime(tokenId, timestamp), pendingPayout(tokenId), and claimablePayout(tokenId). The payoutToken() specifies what's vesting. claim() withdraws to owner. Transfers move entire position. Standard enables secondary markets for unvested allocations.
