Accept crypto payments with just your ENS name records. Any token, any chain.
ENSIO - ENS Native Payment Infrastructure
ENSIO turns your ENS name into a universal payment endpoint. Share ensiopay.vercel.app/pay/yourname.eth and receive payments from anyone, in any token, from any chain. Payments are automatically converted to your preferred currency and can optionally be deposited into a yield earning vault.
The Problem
Receiving crypto payments today is fragmented.
You need to share different addresses for different chains
Payers must already hold the exact token you want
Cross chain transfers require manual bridging
Idle funds earn nothing while sitting in your wallet
The Solution
ENSIO uses your ENS name as the single source of truth for payment preferences. When you set up ENSIO, your configuration is stored directly in your ENS text records under com.pay.config.
Example configuration:
{ "version": "1.0", "receive": { "token": "USDC", "chain": 8453, "vault": "0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A" } }
What this enables:
No centralized database. Your preferences live on chain and are controlled by you
Portable identity. Any app can read your ENS records and route payments correctly
One link forever. yourname.eth never changes even if preferences are updated
How Payments Work
A payer visits ensio-pay.vercel.app/pay/alice.eth
ENSIO resolves Alice's ENS records to fetch her payment configuration
The payer sends any token from any supported chain such as ETH, USDC, or USDT
LI.FI routes the payment by swapping tokens and bridging chains if needed
Alice receives her preferred token USDC on her preferred chain Base
Optional: funds are automatically deposited into a Morpho Spark vault earning about 5 percent APY
The payer does not need to know which chain Alice prefers or handle bridging manually. ENSIO handles everything.
Key Features
Universal Payment Links Every ENS name becomes a payment link. No registration and no API keys. If you own an ENS name, you already have a payment endpoint.
Cross Chain by Default Powered by LI.FI. Payments can originate from more than nine chains including Ethereum, Base, Arbitrum, Optimism, Polygon, and BSC. ENSIO automatically finds the optimal route.
Yield Earning Option Recipients can opt in to automatically deposit payments into the Morpho Spark USDC vault on Base. Funds start earning yield immediately instead of sitting idle.
On Chain Configuration Payment preferences live in ENS text records, not in a database controlled by ENSIO. You fully own and control your configuration and can update it anytime.
Receiver Dashboard
QR code and shareable payment link
Real time balance and yield tracking
Payment history including sender, amount, chain, and token
Scattered balance view across multiple chains
One click controls to update token, chain, and yield preferences
Technical Architecture
Payer on any chain using any token flows into LI.FI Aggregator which aggregates DEXs and bridges and finds the optimal swap and bridge route then into Destination Router which follows the ENS configuration and either performs a direct transfer or deposits into a vault finally reaching The recipient wallet or vault position
Why ENS
ENS is more than a naming system. It is a decentralized key value store for identity data. By storing payment configuration in ENS:
Decentralized with no single point of failure or censorship
User controlled since only the owner can update records
Interoperable because any app can read and respect the configuration
Human readable such as alice.eth instead of a long hex address
Use Cases
Freelancers: one payment link for all clients regardless of chain or token
Creators: add a payment link to bios and accept tips in any currency
DAOs: treasury receives payments auto converted into a preferred stablecoin
Anyone: replace send to 0x... with pay yourname.eth
Frontend
Built with Next.js 16 using the App Router. RainbowKit is used for wallet connection and wagmi for Ethereum interactions. The UI is intentionally minimal with only two surfaces: a receiver dashboard and a payer page. Both read from the same ENS based source of truth.
ENS Integration
Payment preferences are stored in a single ENS text record called com.pay.config, encoded as JSON. When a payer visits /pay/alice.eth, the app resolves the ENS name using viem ENS utilities, fetches the text record, and parses the configuration to determine the preferred token, destination chain, and optional yield vault address.
There is no backend database for user preferences. Everything lives on chain inside the user’s own ENS name. For writing records, we use the ENS Public Resolver on Ethereum mainnet at address 0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63 via setText transactions.
LI.FI Integration
Cross chain execution is handled through the LI.FI SDK. When a payer selects a source token and chain, we call the LI.FI quote endpoint with the receiver’s ENS derived preferences as the destination. LI.FI aggregates more than 30 DEXs and bridges to find the optimal route.
For yield deposits, we use a notable workaround. Instead of routing to USDC first and then depositing into a vault in a second transaction, we pass the ERC 4626 vault address directly as the toToken parameter. LI.FI Composer recognizes this pattern and executes an atomic swap, bridge, and vault deposit in a single transaction.
To support this, gas estimates were increased to around 600k since the default was too low for vault zaps, and USDC approvals are pre granted to the LI.FI Diamond contract.
Yield Layer
The default yield option is the Morpho Spark USDC vault on Base at address 0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A. This is an ERC 4626 vault, so deposits mint shares proportional to the underlying USDC.
We also deployed a VaultRouter contract at 0x949F88b804Fae2b09A1Be919998255587F7A15fB for receivers who prefer to manually deposit after receiving funds.
Hacky Bits Worth Mentioning
Using vault addresses as the toToken parameter in LI.FI quotes. This is undocumented but enables fully atomic yield deposits.
Using ENS text records as a database. The receiver configuration literally lives inside their ENS name, making it portable and censorship resistant.
Client side ENS resolution with caching. ENS resolution happens on the frontend to avoid server round trips, with a five minute cache to reduce RPC calls.
Contracts on Base Mainnet
VaultRouter contract for manual deposits. Integration with Uniswap v4 PoolManager at 0x498581fF718922c3f8e6A244956aF099B2652b2b for same chain swaps.
Stack Summary
Next.js, viem, wagmi, RainbowKit, LI.FI SDK, ENS text records, Morpho ERC 4626 vaults. No traditional backend. ENS acts as the data layer and LI.FI acts as the execution layer.

