# ERC-5192: Minimal Soulbound NFTs

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

| Field | Value |
| --- | --- |
| Status | Final |
| Chain | both |
| Category | Identity & Privacy |
| Journey stages | Approving & Permissioning, Asset Management |
| Detailed guide | Yes |
| Official specification | https://eips.ethereum.org/EIPS/eip-5192 |
| Discussion search | https://ethereum-magicians.org/search?q=ERC-5192 |

## UX Impact

Tokens marked as 'locked' cannot be transferred — minimal soulbound implementation for credentials, memberships, achievements. Design implications: show 'Soulbound' or 'Non-transferable' badge, hide/disable transfer buttons, explain permanence clearly. Design decisions: whether to show soulbound tokens in trading contexts at all — filter out or display with clear 'Not for Sale' status.

## Summary

ERC-5192 defines "soulbound" NFTs — tokens that cannot be transferred once received. They're locked to your address forever. Perfect for credentials (diplomas, certifications), reputation tokens, proof of attendance, and anything that shouldn't be tradeable. The badge shows "non-transferable" and the transfer button is disabled.

## For Designers

- You can design UI that delivers soulbound = locked to recipient forever.
- You can design UI that delivers locked() function = universal check.
- You can design UI that delivers check locked(), disable transfer button.

## Applicability

### When to Use

- Your product addresses: credentials can be sold/transferred.
- Your product addresses: no standard way to mark NFTs as non-transferable.
- The flow should deliver: soulbound = locked to recipient forever.
- You are designing a soulbound badge experience with visible states and recovery paths.

### When to Avoid

- Check locked(), hide/disable transfer entirely.
- Clear 🔒 icon and "Soulbound" label.
- Explain: "This is a credential locked to your address".
- The product has no sign-in, attestation, or identity verification step.

## Problems It Solves

### Credentials can be sold/transferred

Impact: critical

Old way: Degree NFT could be sold to someone who didn't earn it

New way: Soulbound = locked to recipient forever

### No standard way to mark NFTs as non-transferable

Impact: high

Old way: Each project invented own locking mechanism

New way: locked() function = universal check

### UIs don't know to hide transfer option

Impact: high

Old way: User tries to transfer, gets confusing error

New way: Check locked(), disable transfer button

## Anti-Patterns

### Showing transfer button for soulbound NFTs

Severity: high

User clicks, gets error, confused

Instead: Check locked(), hide/disable transfer entirely

### No visual indicator of soulbound status

Severity: high

User doesn't know it can't be transferred

Instead: Clear 🔒 icon and "Soulbound" label

### Not explaining why it's soulbound

Severity: medium

Users think something is broken

Instead: Explain: "This is a credential locked to your address"

## UI Components

### SoulboundIndicator

Lock icon and label for soulbound tokens
States: locked, unlocked, checking
Props: tokenId, showLabel

### CredentialCard

Display card for non-transferable credentials
States: verified, unverified, expired
Props: metadata, issuer, issuedAt

### TransferBlockedNotice

Explanation when transfer attempted
States: hidden, shown
Props: reason, onDismiss

## On Monad

### Minting

Ethereum: Soulbound mint takes 12+ seconds

Monad: Instant credential issuance

Design implication: Real-time badge awarding at events

## Key Takeaways

- ERC-5192 = non-transferable "soulbound" NFTs
- Always check locked() before showing transfer UI
- Show clear visual indicator: 🔒 Soulbound
- Explain WHY it's non-transferable
- Perfect for credentials, attendance, reputation

## UX Patterns

### Soulbound Badge

Clear indicator that NFT is non-transferable

User flow:

- User views NFT
- App checks locked(tokenId)
- Shows soulbound indicator
- Hides/disables transfer button
- Explains why non-transferable

Mockup registry key: `concept/siwe-sign-in` (React UI on the live standard page).

### Credential Gallery

Collection of soulbound achievements

User flow:

- User views credentials
- All show soulbound lock icon
- Click to view details
- No transfer option anywhere
- Share/prove ownership options

Mockup registry key: `concept/siwe-sign-in` (React UI on the live standard page).

## Technical Notes

ERC-5192 extends ERC-721 with locked(uint256 tokenId) view function returning bool. True = cannot be transferred. Emits Locked(tokenId) and Unlocked(tokenId) events. Wallets/marketplaces check locked() before enabling transfer. Compatible with ERC-5484 for consensual binding.
