This article was originally published on PayIn Blog. Visit for more articles about x402 and stablecoin payments.
While ERC-3009 powers x402 payments on EVM chains, Solana takes a fundamentally different approach. Its native architecture already solves many problems that ERC-3009 was designed to address.
Why Solana Doesn't Need ERC-3009
On Ethereum, ERC-3009 exists to solve two major pain points:
-
Two-step approval: The
approve+transferFrompattern requires two transactions - Gas payment: Users must hold ETH to pay for gas
Solana's architecture inherently addresses both:
Atomic Multi-Instruction Transactions
A single Solana transaction can contain multiple instructions that execute atomically:
const transaction = new Transaction()
.add(createApproveInstruction(...)) // Approve
.add(createTransferInstruction(...)); // Transfer
// Both execute in ONE atomic transaction
await sendAndConfirmTransaction(connection, transaction, [payer]);
Fee Payer Abstraction
On Solana, any account can pay the transaction fee:
const transaction = new Transaction();
transaction.feePayer = sponsorPublicKey; // Sponsor pays gas
transaction.add(transferInstruction);
This enables "gasless" experiences where users never need to hold SOL.
Solana's Token Authorization Model
SPL Token Program Basics
| Concept | Description |
|---|---|
| Mint | The token contract (e.g., USDC mint) |
| Token Account | A user's balance for a specific token |
| Associated Token Account (ATA) | The canonical token account derived from wallet + mint |
| Authority | The account that can authorize transfers |
Comparing EVM (ERC-3009) vs Solana
| Aspect | EVM + ERC-3009 | Solana |
|---|---|---|
| Approval pattern | Off-chain signature | Built into transaction |
| Gas payment | Facilitator pays | Configurable fee payer |
| Nonce handling | Random bytes32 | Recent blockhash |
| Transaction atomicity | Single operation | Multi-instruction |
| Meta-transaction support | Requires ERC-3009 | Native |
Why Both Approaches Work for x402
Despite architectural differences, both achieve the same x402 goals:
- User doesn't pay gas: Facilitator covers fees
- Single user action: One signature/approval
- Trustless verification: Cryptographic proof of intent
- Atomic settlement: All-or-nothing execution
Gasless Transfers on Solana
1. Fee Payer Sponsorship (Native)
const transaction = new Transaction();
transaction.feePayer = facilitatorPublicKey;
transaction.add(usdcTransferInstruction);
2. Kora Protocol
A service that converts SPL token fees to SOL—users pay in USDC and never touch SOL.
3. Octane
Open-source gasless transaction relayer for token-based fee payment.
USDC on Solana
| Property | Value |
|---|---|
| Mint Address | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
| Decimals | 6 |
| Program | SPL Token |
| Issuer | Circle |
Related Articles
- ERC-3009: The Protocol Behind x402 Payments - The EVM equivalent
- x402 Facilitators - Multi-chain settlement infrastructure
- x402 Developer's Guide - Build your first paid API
- Why x402 Doesn't Support USDT - Token compatibility explained
References
Solana's architecture makes gasless, authorized transfers a first-class feature. While EVM chains need ERC-3009 to achieve similar functionality, Solana delivers it natively—making it an excellent fit for x402 payments.

Top comments (0)