# ERC-7439: Prevent Ticket Touting

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

| Field | Value |
| --- | --- |
| Status | Draft |
| Chain | both |
| Category | Security & Trust |
| Journey stages | Specialized Interactions |
| Detailed guide | Yes |
| Official specification | https://eips.ethereum.org/EIPS/erc-7439 |
| Discussion search | https://ethereum-magicians.org/search?q=ERC-7439 |

## UX Impact

Event tickets can only be transferred through authorized resellers — prevents scalping, enables price caps on secondary sales. Design implications: show 'Official Resale Only' indicator, direct to authorized resale channels, display ticket status (Sold/Resell/Void/Redeemed). Design decisions: how to handle unauthorized transfer attempts — educational messaging about why blocked, clear path to legitimate resale options.

## Summary

Event tickets can only be transferred through authorized resellers — prevents scalping, enables price caps on secondary sales.

## For Designers

- You can badge Official resale only on every ticket before first purchase.
- Your transfer UI can route fans to authorized resale instead of a disabled send button with no path.
- You can show ticket lifecycle status so fans know if a pass is valid, listed, or already scanned.

## Applicability

### When to Use

- Event tickets are NFTs with anti-scalping policy.
- Primary issuer controls authorized resale network.
- Transfer restrictions are enforced on-chain.

### When to Avoid

- Collectible tickets meant to trade freely on open marketplaces.
- Contract does not implement ERC-7439 transfer hooks.
- Jurisdiction forbids transfer restrictions you must disclose.

## Problems It Solves

### Scalpers arbitrage fan tickets

Impact: critical

Old way: Open transfers to highest bidder instantly

New way: Authorized resale with price caps and audit trail

### Fans buy invalid or duplicate tickets

Impact: high

Old way: Gray market with no issuer verification

New way: On-chain status shows Valid, Listed, or Redeemed

### Surprise blocks at transfer time

Impact: high

Old way: Marketplaces allow list then fail on chain

New way: Policy visible at purchase and resale entry

## Anti-Patterns

### Disabled Send with no explanation

Severity: critical

Users think wallet is broken

Instead: Official resale only label and guided resale CTA

### Allowing OpenSea list then on-chain fail

Severity: critical

Wasted gas and rage quits

Instead: Pre-check transfer rights before listing UI

### Hiding resale caps until checkout

Severity: high

Fans abandon when cap lower than expected

Instead: Show max resale price on ticket detail

## Design Decisions

### How to handle unauthorized transfer attempts?

Recommendation: Block with educational modal and official resale link, never silent disabled button.

Rationale: Fans blame the app unless policy is explained at failure moment.

### Show price caps in UI?

Recommendation: Display max resale price before listing.

Rationale: Cap surprises cause abandoned listings and support load.

### Peer-to-peer send button at all?

Recommendation: Hide or replace with Resell officially; do not show broken Send.

Rationale: Visible but disabled Send feels like a bug.

## States to Design

### Valid — not yet used

Trigger: Ticket owned, event upcoming.

User need: See date, seat, and resale options.

Design response: Valid badge with Resell officially CTA if allowed.

### Listed on official resale

Trigger: User listed through partner.

User need: Track listing without losing entry proof.

Design response: Listed for resale status with cancel listing action.

### Transfer blocked

Trigger: User attempts unauthorized send.

User need: Understand why and what to do.

Design response: Modal explaining policy with partner link.

### Redeemed at venue

Trigger: Ticket scanned.

User need: Confirm entry used; no false hope of resale.

Design response: Redeemed badge; gray card in wallet.

### Void or cancelled

Trigger: Event cancelled or ticket invalidated.

User need: Know refund or replacement path.

Design response: Void badge with issuer message and refund CTA if applicable.

## Vocabulary

- Use "Official resale" instead of "Whitelisted transfer destination": Fan-friendly policy language.

- Use "Ticket used" instead of "Redeemed state flag": Venue language over enum names.

- Use "Face-value cap" instead of "Max transfer price parameter": Policy users understand from traditional ticketing.

## What to Prototype First

### Ticket purchase with resale policy

Fans must accept resale rules before paying.

Covers: Policy summary, Authorized partners

- Official resale only badge
- Price cap explanation
- Partner marketplace links

### Blocked peer transfer

The most rage-inducing moment needs education, not silence.

Covers: Transfer blocked, Education modal

- Why blocked copy
- Go to official resale CTA
- Support link

### Official resale listing

Legitimate resale must feel easier than gray market.

Covers: List for resale, Cap enforced, Sold through partner

- Max price display
- Partner picker
- Listing confirmation

### Venue redemption scan

Door staff and fans need Redeemed vs Valid at a glance.

Covers: Valid, Redeemed, Void

- Large status badge
- QR display
- Scan timestamp

## Mental Model

### Ticket NFT

A token representing event entry with lifecycle state, not just art.

### Authorized resale

Only approved marketplaces can change ownership — caps and fees apply.

### Transfer block

Wallet-to-wallet sends revert; this is policy, not a bug.

### Redemption

Scanning at venue marks ticket used — resale typically ends.

### Void state

Cancelled or fraudulent tickets must show unusable clearly.

## Seen in the Wild

- Ticketmaster: Official resale and face-value cap patterns fans already understand. (https://www.ticketmaster.com/)

- GET Protocol: NFT ticketing with controlled secondary market. (https://www.get-protocol.io/)

- SeatGeek: Ticket status and verified resale UX reference. (https://seatgeek.com/)

- Coachella NFT: Festival NFT experiments inform redemption status display. (https://www.coachella.com/)

## On Monad

### Redemption speed

Ethereum: Scan confirmation may lag

Monad: Fast finality updates Valid → Redeemed instantly at gate

Design implication: Gate apps can show live status without refresh anxiety.

### Resale listing cost

Ethereum: Listing gas adds friction

Monad: Lower fees make official resale competitive with gray market

Design implication: Emphasize free or cheap official resale in copy.

## UX Patterns

### Official Resale Router

Replace send with partner resale flow.

Components: ResaleBadge, PartnerLink, PriceCapLabel

User flow:

- User taps Resell
- Sees cap and partner
- Lists officially
- Buyer purchases through channel

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

### Transfer Block Education

Explain policy when unauthorized send attempted.

Components: BlockModal, PolicySummary, ResaleCTA

User flow:

- User tries send
- Modal explains
- Routes to resale
- User lists instead

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

## Related Standards

- ERC-721: Ticket represented as NFT with transfer hooks

- ERC-6454: Transfer restriction detection complement

## Technical Notes

ERC-7439 is draft; surface resale policy before primary sale and pre-check transfers before marketplace listing.
