# ERC-6454: Minimal Transferable Detection

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

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

## UX Impact

Tokens can be non-transferable (soulbound) or have transfer restrictions — verifiable on-chain. Design implications: show clear 'Non-Transferable' or 'Soulbound' badges, hide/disable transfer buttons for locked tokens, differentiate mintable vs burnable vs transferable states, display restriction reason if available. Design decisions: whether to show transfer button at all for soulbound tokens, how to explain why transfer fails, visual treatment of soulbound vs tradeable tokens in same wallet.

## Summary

Tokens can be non-transferable (soulbound) or have transfer restrictions — verifiable on-chain.

## For Designers

- You can query transferability on load and badge Non-transferable on every restricted token.
- Your marketplace can hide List button entirely for soulbound items instead of disabled gray buttons.
- You can explain why transfer fails with credential, event ticket, or achievement copy.

## Applicability

### When to Use

- Wallet displays mixed transferable and soulbound NFTs.
- SBTs, credentials, or tickets block transfers.
- You want one detection hook across collections.

### When to Avoid

- All tokens in app are freely transferable.
- Collection uses custom restriction without ERC-6454 interface.
- Read-only display with no send UI.

## Problems It Solves

### Failed transfer txs on SBTs

Impact: high

Old way: User signs then reverts

New way: Pre-check hides or blocks send before wallet

### Marketplace lists unsellable items

Impact: high

Old way: Listing fails at settlement

New way: Hide list UI when non-transferable

### Inconsistent soulbound detection

Impact: medium

Old way: Per-collection hacks break

New way: ERC-6454 standard query across tokens

## Anti-Patterns

### Enabled Send on soulbound token

Severity: critical

Wasted gas and rage

Instead: Pre-check ERC-6454 and hide Send

### Generic Transfer failed after sign

Severity: critical

User paid gas for predictable revert

Instead: Block in app with soulbound explanation

### Grayed-out credential cards

Severity: medium

Implies worthless or broken

Instead: Proud display with Non-transferable badge

## Design Decisions

### Show Send button disabled or hidden?

Recommendation: Hidden for soulbound; disabled only if temporarily locked with unlock date.

Rationale: Disabled Send invites futile clicks.

### Visual treatment in grid?

Recommendation: Subtle lock icon plus Non-transferable chip, not grayed entire card.

Rationale: Soulbound credentials remain pride items.

### Filter soulbound in marketplace mode?

Recommendation: Default hide from sell flows; show in profile/credentials tab.

Rationale: Marketplace implies transferability.

## States to Design

### Transferable — normal

Trigger: isTransferable true.

User need: Send and sell freely.

Design response: Standard transfer and list actions.

### Non-transferable — soulbound

Trigger: isTransferable false.

User need: Understand cannot sell or send.

Design response: Persistent badge; hide transfer CTAs.

### Transfer attempted on soulbound

Trigger: User finds send via deep link.

User need: Clear block before wallet.

Design response: Modal before wallet; no signature prompt.

### Burnable soulbound

Trigger: Burn allowed but not transfer.

User need: Distinguish destroy from send.

Design response: Burn action separate with warning; no Send.

### Unknown restriction

Trigger: Check fails or unsupported.

User need: Safe default.

Design response: Try transfer with warning or query fallback per collection.

## Vocabulary

- Use "Non-transferable" instead of "Soulbound EIP-5192 6454": Plain restriction language.

- Use "Credential" instead of "SBT": User-facing term unless audience is web3-native.

- Use "Cannot send this item" instead of "isTransferable returned false": Outcome not API response.

## What to Prototype First

### Wallet with mixed tokens

Users compare tradeable vs locked items at a glance.

Covers: Soulbound badge, Transferable normal, Mixed grid

- Non-transferable chip
- No send on soulbound
- Filter by transferable

### Blocked transfer attempt

Edge cases still need education if user tries send.

Covers: Blocked with reason

- Cannot transfer modal
- Reason: credential/event
- No gas wasted

### Marketplace listing gate

List UI must not appear for soulbound.

Covers: List hidden, List blocked pre-check

- Pre-list transferability check
- Explanation if user deep-links

### Credential detail page

Soulbound items emphasize achievement not resale.

Covers: SBT display

- Large Non-transferable badge
- Issued by
- Earned date

## Mental Model

### Transferable

Normal NFT — can send and sell subject to other rules.

### Non-transferable

Soulbound — ownership may change via mint/burn only, not user send.

### Detection hook

Standard interface lets apps ask once instead of per-collection hacks.

### Restriction reason

Optional metadata explains ticket, diploma, or achievement context.

### Burn path

Some soulbound tokens can still be burned — separate from transfer.

## Seen in the Wild

- POAP: Soulbound attendance badges — non-transferable by design. (https://poap.xyz/)

- Gitcoin Passport: Credential stamps use soulbound patterns. (https://passport.gitcoin.co/)

- OpenSea: Transfer restrictions surfaced on collection pages. (https://opensea.io/)

## On Monad

### Pre-check cost

Ethereum: Extra read call may feel heavy on slow networks

Monad: Fast reads make transferability check on every card cheap

Design implication: Query 6454 on all NFT loads on Monad.

### Soulbound mint volume

Ethereum: Event drops congested

Monad: High throughput for mass credential mints

Design implication: Design batch mint status for large SBT drops.

## UX Patterns

### Soulbound Badge

Non-transferable chip on token card and detail.

Components: SoulboundChip, LockIcon, ReasonTooltip

User flow:

- Load token
- Query 6454
- Show badge if locked
- Hide send

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

### Transfer Gate

Block send flow before wallet for restricted tokens.

Components: TransferCheck, BlockModal, ReasonCopy

User flow:

- User taps Send
- Check fails
- Modal explains
- No wallet prompt

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

## Related Standards

- ERC-5192: Minimal soulbound NFT standard

- ERC-5484: Consensual soulbound minting

## Technical Notes

ERC-6454 minimal transfer detection; call before any Send or List UI renders.
