> ## Documentation Index
> Fetch the complete documentation index at: https://docs.eco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gasless USDC deposits into Circle Gateway

> Create a Circle Gateway deposit address, collect an ERC-3009 signature, and track funding and delivery.

Use ERC-3009 when a user holds USDC but does not hold the source chain's gas token. The user signs a transfer authorization; Eco's service submits it onchain. Gasless funding removes the user's source-chain gas transaction, but it does not imply that a quote has no fees.

## Prerequisites

* A supported source chain and its USDC contract
* The user's wallet with enough USDC for the quoted amount
* The recipient address to credit in Circle Gateway
* A wallet client that can sign EIP-712 typed data
* A way to confirm the recipient's Gateway balance, or a v1 API key for intent tracking

## Complete the deposit

1. [Create a quoted deposit address](/programmable-addresses/circle-gateway-deposits#step-1-create-a-quoted-deposit-address). Retain the returned `vaultAddress`, `amount`, and `deadline` together.
2. Follow the [ERC-3009 signing example](/programmable-addresses/funding-methods#erc-3009-transferwithauthorization). Set `authorization.to` to the returned address and use the correct source-chain token domain.
3. Submit the signed authorization to [`POST /v1/circle-gateway/deposit-addresses/submit/erc-3009`](/api-reference/v1/gateway-submit-erc-3009). Save the exact payload and job ID for retries and tracking.
4. [Track the funding job and deposit](/programmable-addresses/circle-gateway-deposits#step-3-poll-for-completion). Confirm delivery separately from job acceptance and intent publication.

Circle Gateway endpoints do not require an API key. Use the endpoint reference for request validation, success responses, and error examples.

## Troubleshooting

* If signing fails, check the chain, USDC contract, token domain, wallet account, and authorization dates.
* If the quote has expired, request a new deposit address before collecting another signature.
* If a submit call times out, retry the identical signed payload. Do not sign a second payment without checking the original job.
* If a job fails, inspect its transaction hashes and deposit state. A failure status alone does not prove that no tokens moved.

## Next steps

* [Funding methods](/programmable-addresses/funding-methods)
* [Circle Gateway deposit states](/programmable-addresses/circle-gateway-deposits#step-3-poll-for-completion)
