easyway
Sign inCreate free account

Accepting DeFi token payments: the token, not the position

People who use DeFi apps often hold governance tokens — UNI, AAVE, ENA and the like — and some would rather pay with them than swap first. easyway accepts 8 of these tokens on Ethereum through the same checkout and API as ETH and USDT. The catch is that a DeFi wallet is full of tokens that look related: staked versions, deposit receipts, LP shares. Only the plain token pays an invoice. This post lists which ones count, which ones don't, and what it costs.

The eight DeFi tokens that count

TokenContractTypical waitSmallest payment countedWithdrawal fee / min.
Uniswap (UNI)0x1f98…F98412 confirmations, ~3 min0.001 UNI0.25 / 0.08 UNI
Aave (AAVE)0x7Fc6…DaE912 confirmations, ~3 min0.0001 AAVE0.013 / 0.004 AAVE
Curve DAO (CRV)0xD533…cd5212 confirmations, ~3 min0.01 CRV5.5 / 1.6 CRV
Ethena (ENA)0x57e1…606112 confirmations, ~3 min0.02 ENA9 / 2.6 ENA
Ondo (ONDO)0xfAbA…9BE312 confirmations, ~3 min0.01 ONDO4.5 / 1.3 ONDO
Pendle (PENDLE)0x8085…a82712 confirmations, ~3 min0.01 PENDLE1.15 / 0.35 PENDLE
ether.fi (ETHFI)0xFe0c…c0eB12 confirmations, ~3 min0.01 ETHFI3 / 0.9 ETHFI
1inch (1INCH)0x1111…C30212 confirmations, ~3 min0.1 1INCH24 / 7 1INCH

All eight are ERC-20 tokens on Ethereum mainnet. The full addresses are on each token's page and in the API docs; each one was taken from the project's own documentation (for 1INCH, Trust Wallet's token list) and checked against CoinGecko. A payment is final after 12 blocks. A single transfer under the smallest counted amount is ignored as dust (usually a spam airdrop), while several larger transfers to the same invoice add up.

Staked, locked and LP tokens are not the token

Every DeFi protocol issues more than its governance token. When a user stakes, lends or provides liquidity, they get a receipt token back, and wallets list those receipts right next to the real thing. None of them pays an invoice for the governance token:

Token acceptedOften held next to it — not credited
UNIUniswap liquidity positions
AAVEstkAAVE (staked), aEthAAVE (deposit token)
CRVveCRV (locked, not transferable), crvUSD (stablecoin)
ENAsENA (staked), USDe and sUSDe (the dollar tokens)
ONDOUSDY, rUSDY, OUSG (Ondo's tokenized products)
PENDLEPT and YT tokens, Pendle LP tokens
ETHFIeETH and weETH (restaked ETH), eBTC
1INCHthe copy at the same address on BNB Chain

Some of these can't be sent at all (veCRV is locked by design), some are worth far more than the governance token (eETH and weETH track ETH), and some are a different asset entirely (USDe is a dollar token; easyway accepts it, but as a coin of its own). If a receipt token is sent to an invoice address, it stays there and the invoice stays open. The customer has to unstake or withdraw first and pay with the plain token.

Ethereum only

Most of these tokens also exist on layer-2 networks and other chains as bridged copies, at other addresses. Only the Ethereum mainnet contract is credited; the 1INCH token even has a copy at the very same address on BNB Chain, so the address alone does not tell you the network. Customers paying from an exchange must pick Ethereum (ERC-20) in the withdrawal menu — the guide to paying from an exchange shows where. Payments from a smart-contract wallet or a swap app are fine: the gateway watches the token balance of the invoice address, not the shape of the transaction.

Voting power doesn't matter either. Many of these are vote-carrying tokens, and a customer may have delegated their votes to someone. Delegation stays with the customer's wallet; the tokens they send arrive as ordinary tokens.

Credited in the token, priced in dollars if you want

You can price the invoice in USD — the token amount is calculated from the current rate when the customer picks the coin and stays locked until the invoice expires (see pricing an invoice in USD or in the coin) — or in the token itself, for example currency = "ETHFI_ERC20" for a community that thinks in ETHFI. Either way the payment is credited as that token: 200 ETHFI received leaves 199 ETHFI on your balance after the flat 0.5% fee. There is no automatic conversion, so later price moves are yours. If you don't want to hold governance tokens, withdraw them soon after payment (live withdrawals only go to addresses you whitelisted with two-factor authentication), or offer a stablecoin next to them.

A DeFi checkout with a stablecoin fallback

allowed_assets sets which coins the checkout offers for one invoice. A tool sold to DeFi users can show four governance tokens plus USDC and USDT, all on Ethereum, so a customer who would rather not spend their tokens still has a choice:

curl -X POST https://api.easyway.cash/v1/invoices \
  -H "Authorization: Bearer $EASYWAY_API_KEY" \
  -H "Idempotency-Key: order-7310" \
  -H "Content-Type: application/json" \
  -d '{"amount":"49","currency":"USD","order_id":"7310","allowed_assets":["UNI_ERC20","AAVE_ERC20","ENA_ERC20","ETHFI_ERC20","USDC_ERC20","USDT_ERC20"],"lifetime":30}'

Redirect the customer to the payment_url in the response and deliver when the signed invoice.paid webhook arrives. The rules and error codes are in limiting a checkout with allowed_assets, and the quickstart has the same call in Node.js, PHP and Python. A payment link does it without code.

What it costs

The customer pays the Ethereum gas of their own transfer. You pay a flat 0.5% of each confirmed payment and a fixed withdrawal fee in the token (first table), which covers the gas of one token transfer. No setup or monthly fee — the same as every coin on the pricing page.

easyway is an independent payment gateway with no link to these protocols. It lists their tokens because customers hold them, and says nothing about what they are worth.

Create free accountRead the API docsAlready have an account? Sign in
Accept DeFi token payments: UNI, AAVE, ENA, ETHFI | easyway