> ## 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.

# Circle Gateway deposits on testnet

> Test quoted USDC deposits from Sepolia networks into Circle Gateway on Polygon Amoy.

Use testnet USDC to exercise address creation, funding, and status handling before a mainnet integration. The testnet host uses a different path scheme from the mainnet v1 API.

## Prerequisites

* A wallet funded with testnet USDC and source-chain gas
* A recipient address for Gateway on Polygon Amoy
* Node.js 22.18 or later and `viem` for the example

Get testnet USDC from [Circle's faucet](https://faucet.circle.com).

| Chain | Chain ID | Role | USDC |
| - | - | - | - |
| Base Sepolia | `84532` | Source | `0x036CbD53842c5426634e7929541eC2318f3dCF7e` |
| OP Sepolia | `11155420` | Source | `0x5fd84259d66Cd46123540766Be93DFE6D43130D7` |
| Arbitrum Sepolia | `421614` | Source | `0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d` |
| Polygon Amoy | `80002` | Destination | `0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582` |

## Create and read a deposit address

The create and lookup paths below were verified on 2026-09-16. A read-only lookup on 2026-09-30 (UTC) also returned the expected `404` for an unknown address; address creation was not repeated in that check. They do not require an API key. No requests-per-second quota is published; use bounded retries and honor `Retry-After` when present.

Set `ECO_TESTNET_DEPOSITOR` and `ECO_TESTNET_RECIPIENT` to your test wallets. This example creates an address and reads the returned record without funding it.

```typescript theme={null}
import process from 'node:process';
import { getAddress } from 'viem';

async function main(): Promise<void> {
  const depositor = process.env.ECO_TESTNET_DEPOSITOR;
  const recipient = process.env.ECO_TESTNET_RECIPIENT;
  if (!depositor || !recipient) throw new Error('Set both testnet wallet addresses');
  const baseUrl = 'https://api.testnet.eco.com/circle-gateway/api/v2/depositAddresses';

  async function request(url: string, body?: unknown): Promise<unknown> {
    const response = await fetch(url, {
      method: body === undefined ? 'GET' : 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: body === undefined ? undefined : JSON.stringify(body),
      signal: AbortSignal.timeout(30_000),
    });
    const text = await response.text();
    if (!response.ok) throw new Error(`HTTP ${response.status}: ${text}`);
    return JSON.parse(text);
  }

  const created = await request(baseUrl, {
    sourceChainId: 84532,
    amount: '1000000',
    recipient: getAddress(recipient),
    depositor: getAddress(depositor),
  }) as { data: { vaultAddress: string; amount: string; deadline: number } };
  console.log(created);
  console.log(await request(`${baseUrl}/${created.data.vaultAddress}?sourceChainId=84532`));
}

main().catch((error: unknown) => {
  console.error(error instanceof Error ? error.message : error);
  process.exitCode = 1;
});
```

The create response supplies `data.vaultAddress`, `data.amount`, and `data.deadline`. The lookup supplies the deposit state. Validation failures use `400` with the service's `validationErrors` or `details` envelope. Keep the HTTP status and response body when reporting a test failure.

## Fund and confirm delivery

Send the quoted testnet USDC amount to the returned address on the specified source chain before its deadline. Check the source transaction receipt, then read the deposit record using the same testnet host and `sourceChainId`.

`PUBLISHED` means the intent was published. Confirm the recipient's Gateway balance on Polygon Amoy separately; it does not mean that publication itself credited the balance.

Do not substitute mainnet v1 paths into this legacy testnet host. The mainnet gasless request examples are not a reference for testnet endpoint paths.

## Next steps

* [Mainnet Circle Gateway integration](/programmable-addresses/circle-gateway-deposits)
* [Mainnet funding methods](/programmable-addresses/funding-methods)
