A Programmable Address is a persistent CREATE2 contract address that auto-executes a pre-programmed action when funds arrive. The sender makes a normal ERC-20 transfer; the address handles routing, swapping, or settling — whatever it’s programmed to do.Documentation Index
Fetch the complete documentation index at: https://eco.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
What ships today
| Product | Source chains | Destination | Use case |
|---|---|---|---|
| Solana deposit addresses | Base | Any Solana wallet | Bridge USDC from EVM to Solana with no bridge UI |
| Gateway Fast Deposits | Base, Optimism, Arbitrum | Circle Gateway on Polygon | Fast, gasless USDC deposits into Gateway (20–40s) |
How it works
- Address generation. Your app calls the API for a deposit address derived from
(depositor, destination, chainId)via CREATE2. The address is deterministic — same inputs always return the same address. - Token transfer. The user sends USDC to the address. First deposit triggers contract deployment automatically (no gas until funds actually arrive).
- Action execution. The contract publishes a Routes intent for the deposited amount.
- Fulfillment. Solvers compete to deliver the destination outcome.
Properties
Permissionless. Any wallet or app can generate an address via the API. No whitelisting, no KYC at the protocol level. Non-custodial. The deposit contract’s only operation iscreateIntent(). It cannot be drained, redirected, or upgraded. If the intent expires unfulfilled, an independent permissionless refund service returns the USDC to the depositor.
Immutable. The address is CREATE2-derived from the inputs. Calling the endpoint again with identical inputs always returns the same address — and the address can be shared before the contract is deployed on-chain.
Funding methods
Funds can arrive at a Programmable Address by any of:| Method | User pays gas? | When to use |
|---|---|---|
| Direct ERC-20 transfer | Yes | Sender already has source-chain gas |
ERC-3009 transferWithAuthorization | No | Recommended for gasless UX (USDC-native) |
| EIP-2612 Permit | No | Fallback for tokens that support permit() but not ERC-3009 |
Architecture
| Contract | Role |
|---|---|
| Factory | Computes deterministic addresses, deploys deposit contracts on first deposit |
| Deposit contract | Per-destination contract — receives tokens, calls createIntent() |
Roadmap
| Item | Status |
|---|---|
| EVM static deposit addresses (single address per user, multi-chain) | Coming soon |
| Additional destinations beyond Gateway/Solana | On roadmap |
| Self-serve programmable address SDK | Future |
Read next
Solana deposit addresses
Static EVM address that auto-bridges to a Solana wallet.
Gateway Fast Deposits
Gasless USDC into Circle Gateway in 20–40 seconds.
Solana API
Solana deposit address endpoints + intent queries.
Gateway API
Gateway endpoints + gasless funding + intent queries.
Funding methods
EIP-712 signing code for ERC-3009 and Permit, plus the direct-transfer path.
