EIP-3009 (Transfer With Authorization) lets a token holder sign an authorization to transfer their tokens without paying gas themselves. Anyone (a relayer, a merchant, the recipient) can broadcast the authorization and pay the gas.
How it differs from Permit (EIP-2612)
- Permit. Signs an approval. Spender then calls
transferFrom. - 3009 TransferWithAuthorization. Signs a specific transfer directly. No intermediate approval.
3009 is atomic: one signature, one transfer, no lingering approval.
USDC support
Circle added 3009 to USDC across all chains. This is why USDC-based gasless payments are possible: merchant collects a signed authorization from the payer, relays it, and gets paid without the payer touching ETH for gas.
Real use cases
- Point-of-sale. Merchant kiosk accepts a signed USDC transfer, relays to chain.
- Subscriptions. Service pre-authorizes recurring transfers with expiration timestamps.
- Meta-transactions. Relayers pay gas on user's behalf.
Comparison with account abstraction
- 3009 works with any wallet today, without smart contracts on the user side.
- ERC-4337 needs a smart account.
- For simple stablecoin transfers, 3009 is often the cleaner path.
Security notes
- Authorization is bound to a specific nonce, recipient, amount, and time window.
- Replay is prevented by the nonce.
- User signature is EIP-712 formatted, so wallets show what is being authorized.
Koinlytics