410 response when its sunset is enabled. For a new integration, confirm availability and migration guidance with Eco; use any replacement path supplied by the service rather than assuming another product has the same behavior.
Prerequisites
- A recipient Solana wallet address
- An EVM depositor address, used as the intent’s refund recipient
- Base USDC and ETH for the sender’s transfer
- Node.js 22.18 or later and
viemfor the API example
8453) as the source. Check chain support before integrating; support in the Routes API does not imply that a deposit factory is configured for the same chain.
API conventions
Base URL:https://deposit-addresses.eco.com. No API key is required. Successful responses use a { data: ... } envelope. No requests-per-second quota is published; back off on 429 and honor Retry-After when present.
The Solana deposit API reference links to the request and response schemas. This API has a different address lifecycle from Circle Gateway deposits.
Request a deposit address
SetECO_SOLANA_RECIPIENT to the recipient wallet’s base58 address and ECO_DEPOSITOR to the EVM refund address. The example creates an address and reads its record; it does not transfer tokens.
201; a record lookup returns 200. Both return the deposit record under data, including evmDepositAddress, factoryAddress, isDeployed, and the last observed balance. The API stores solanaAddress as the hexadecimal encoding of the submitted public key.
The address is deterministic for the configured factory, destination, and depositor. It can exist as a predicted address before its contract is deployed. Keep the source chain and returned factory address with your record.
Send USDC
Transfer Base USDC (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913) to the returned evmDepositAddress. For example, 100 USDC is 100000000 base units. Estimate gas for the ERC-20 transfer and check its receipt before recording source funding as successful.
The monitoring service then detects the token balance, deploys the contract if needed, and calls createIntent(). The transfer itself does not invoke or deploy the deposit contract.
Check processing and delivery
UseGET /api/v1/depositAddresses/evmAddress/{evmAddress} to inspect processing:
These fields do not prove Solana delivery. Confirm the recipient’s USDC token-account balance and destination transaction separately. If you obtain the published intent hash, you can also query the intent status API using a v1 key.
Errors and troubleshooting
A read-only check on 2026-09-30 (UTC) received503 Service Temporarily Unavailable from this service. Confirm availability before presenting a new deposit flow to users; that response does not establish the state of any previously funded deposit.
Validation failures return 400. For example, an invalid Solana address can produce:
400 with a details envelope. An unknown deposit address uses NoSuchDepositAddress:
FactoryAddressNotConfiguredForChain (1016). Check the chain and address before retrying. On network failure, retry the same address request; do not send a second token transfer solely because processing is delayed.
