Addresses break payment products
- Nobody knows who
0x71C7…F2a9is. Addresses are unreadable and impossible to confirm at a glance — the highest-friction input in consumer finance. - Wrong-address transfers are irreversible. Address poisoning targets payment behavior; tracked attempts rose from ~628,000 in November 2025 to 3.4 million in January 2026, with one user losing close to 50 million USDT. You can only prevent it, by making the destination human-readable before the user signs.
- Siloed usernames. Cash App usernames work in Cash App, Revolut usernames work in Revolut, etc. but none interoperate. The moment your user wants to pay someone outside your app, they’re back to copying and pasting a raw address.
- Your brand is invisible, but it shouldn’t be. Every external transfer shows an anonymous string. A name like
alice.yourbank.idputs your brand in the other side’s app, in explorers, and in transaction history — distribution you don’t pay for.
Why ENS usernames
Claim at signup
alice.yourapp.eth, issued automatically with the account. No transaction, no gas, no extra step for the user to understand.Send by name
The user types a name. Your app resolves it, displays the avatar and profile, and only then enables the confirm button.
Request and payment links
Share a name instead of an address. It fits in a message, a bio, an invoice, or a QR code, and it does not change when the user rotates wallets.
One name, every chain, 1,000+ apps
Store address records per chain under the same name. The sender picks a person, your app picks the rail.
Interoperable by default
Because these are ENS names, someone in a different wallet can pay your user without your app being involved at all.
Secured and verified
Resolution is verified onchain through ENS, so the name your user pays is provably the account it belongs to. Lookalike addresses and spoofed handles are attack surface.
Recommended integration
1
Issue a name during onboarding
Create a gasless offchain subname when a customer account or wallet is created. Store the customer identifier in private application data, not in public ENS records.
2
Add supported address records
Attach the wallet addresses and public profile records your product needs. Update them when the customer’s account configuration changes.
3
Resolve before a transfer
Resolve the entered name, then show the destination address and network before the customer confirms the transaction.
4
Offer onchain ownership when needed
Add onchain minting on Ethereum or an L2 chain when customers need to hold and transfer the subname as an onchain asset.
Start integrating
Issue gasless subnames
Create and manage offchain names and records with TypeScript.
Resolve ENS names
Add forward, reverse, profile, bulk, and multichain resolution.
Mint onchain subnames
Prepare and submit onchain mint transactions on Ethereum or L2 chains.
Review SDKs and APIs
Choose the integration surface that fits your backend.
Production checklist
- Keep API keys and signing credentials on the server.
- Normalize and validate labels before registration.
- Confirm the resolved address and network before a transfer.
- Handle unavailable names, resolution failures, and unsupported records explicitly.
- Define how customers update, recover, or release their names.
Getting started
Pick the issuance model that fits a regulated financial product.
Troubleshooting
Review common authentication, validation, resolver, and network failures.

