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

# Get Crypto Deposit Address

> Return the end user's permanent USDT/USDC deposit address on a chain, creating it on the first call.

Returns the deposit address of the end user identified by `steamId`. The first call creates it, and it never changes afterwards. See [Crypto Deposits & Cashouts](https://assetpay.gg/docs/guides/crypto.md) for the full flow.

**Authentication:** Merchant API Key (`api-key` header)
**Scope:** `CORE_ACCESS`

## Request

```http theme={null}
GET https://api.assetpay.gg/secure/crypto/deposit-address?steamId=76561198012345678&chain=ETH
api-key: ap_...
```

| Parameter | Type | Required | Description |
| - | - | - | - |
| `steamId` | string | Yes | SteamID64 of the end user |
| `chain` | string | Yes | `ETH`, `BSC`, `SOL` or `TRON` |
| `token` | string | No | `USDT` or `USDC`, default `USDC`. Solana only: the token whose account is opened. Ignored on other chains |

## Response

```json theme={null}
{
  "requestId": "...",
  "success": true,
  "data": {
    "steamId": "76561198012345678",
    "chain": "ETH",
    "network": "eth-mainnet",
    "testnet": false,
    "status": "active",
    "address": "0x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b",
    "tokenAccount": null,
    "tokens": [
      { "token": "USDT", "contract": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "decimals": 6 },
      { "token": "USDC", "contract": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "decimals": 6 }
    ],
    "minDepositCents": 1000,
    "minConfirmations": 12,
    "explorerUrl": "https://etherscan.io/address/0x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b"
  }
}
```

| Field | Type | Description |
| - | - | - |
| `status` | string | `active`: ready. `pending`: a Solana account is still being opened, poll again. `paused`: the address is valid, but deposits are credited only once the chain resumes |
| `address` | string \| null | The address to show the user. `null` while `pending` |
| `tokenAccount` | string \| null | Solana only: the token account behind `address`. Informational, show `address` to the user |
| `tokens` | array | The only tokens credited on this address. On Solana, the tokens whose accounts are open right now |
| `minDepositCents` | number | Deposits under this amount are not credited |
| `minConfirmations` | number | Blocks a deposit waits before it is credited |
| `explorerUrl` | string \| null | Block explorer link for the address |

> [!WARNING]
>
> On Solana each token has its own account, opened on request and closed again once emptied. Call this endpoint with the right `token` before every Solana deposit and wait for `active`.

## Rate Limits

Shared across the crypto read endpoints of all your users.

| Merchant Status | Limit |
| - | - |
| Verified | 1000 requests / min |
| Unverified | 10 requests / min |

## Errors

| Code | Key | When |
| - | - | - |
| 2522 | `ONCHAIN_MERCHANT_NOT_VERIFIED` | The merchant is not verified (HTTP 403) |
| 2523 | `ONCHAIN_ADDRESS_CAPACITY` | Too many open Solana accounts for this merchant, retry later (HTTP 503) |
| 2500 | `ONCHAIN_DISABLED` | Crypto is not available in this environment (HTTP 503) |
| 1908 | `INSUFFICIENT_SCOPE` | The key does not have the `CORE_ACCESS` scope |
| 1005 | `RATE_LIMITED` | Rate limit exceeded |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.