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

# Initiate Deposit

> Start a skin deposit for the authenticated user.

# POST /client/trading/deposit

Initiates a deposit (sell) trade. The user's items are sent via Steam trade offer and the value is credited to your merchant balance.

**Authentication:** Client Token (`Authorization` header)

## Request

```http theme={null}
POST https://api.assetpay.gg/client/trading/deposit
Content-Type: application/json
Authorization: CLIENT_TOKEN

{
  "items": [
    {
      "itemId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "price": 10.75
    }
  ],
  "game": "730",
  "externalId": "dep_unique_123",
  "isInstant": true
}
```

### Body Parameters

| Parameter        | Type    | Required | Description                                                                                                    |
| ---------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- |
| `items`          | array   | Yes      | Items to deposit (min 1, max 250)                                                                              |
| `items[].itemId` | string  | Yes      | Item ID from inventory (5–256 chars)                                                                           |
| `items[].price`  | number  | Yes      | Offer price in USD. Must equal the current offer price returned by `/client/inventory`, validated server-side. |
| `items[].amount` | number  | No       | Quantity for stackable Rust items (default: 1, max: 10000)                                                     |
| `game`           | string  | No       | `"730"` or `"252490"`. Defaults to `"730"`.                                                                    |
| `externalId`     | string  | No       | Your unique tracking ID (max 128 chars). Must be unique per trade.                                             |
| `isInstant`      | boolean | No       | Request instant credit during hold period (default: `true`)                                                    |

## Response

```json theme={null}
{
  "requestId": "...",
  "success": true,
  "data": {
    "id": "trade-uuid",
    "type": "deposit",
    "source": "client",
    "status": "initiated",
    "game": "730",
    "externalId": "dep_unique_123",
    "merchantId": "merchant-uuid",
    "clientUserId": "client-uuid",
    "clientSteamID": "76561198012345678",
    "clientTradeUrl": "https://steamcommunity.com/tradeoffer/new/?partner=...",
    "items": [
      {
        "id": "a1b2c3d4-...",
        "name": "AK-47 | Redline",
        "marketHashName": "AK-47 | Redline (Field-Tested)",
        "type": "Rifle",
        "iconUrl": "IzMF03bk9WpSBq-S-ekoE33L-iLqGFHVaU25ZzQNQcXdA3g5gMEPvUZZEfSMJ6dESN8p_2SVTY7V2N4MxGVIwXpaL3_a3Hh...",
        "appid": 730,
        "tradable": true,
        "marketPrice": 12.50,
        "offer": {
          "price": 10.75,
          "reference": "ref_abc123",
          "accepted": true
        },
        "exterior": "Field-Tested",
        "wear": "0.25432"
      }
    ],
    "totalPrice": 10.75,
    "isInstant": true,
    "createdAt": "2026-03-04T10:00:00.000Z",
    "updatedAt": "2026-03-04T10:00:00.000Z"
  }
}
```

The response is a full [Trade](/reference/types#trade) object. After creation, the trade progresses through callbacks. See [Trade Lifecycle](/guides/trade-lifecycle).

## Rate Limits

**Per-merchant tier throttle** (shared across all clients of the same merchant):

| Merchant Status | Limit              |
| --------------- | ------------------ |
| Verified        | 500 requests / min |
| Unverified      | 5 requests / min   |

**Per-client guard** (scoped per (merchant, clientSteamId)):

| Constraint                                        | Limit | Error key                           |
| ------------------------------------------------- | ----- | ----------------------------------- |
| Concurrent active deposits                        | 5     | `TOO_MANY_ACTIVE_TRADES` (HTTP 429) |
| Deposits initiated in any rolling 5-minute window | 10    | `RATE_LIMITED` (HTTP 429)           |

An "active" deposit is any not-yet-accepted trade (`initiated` or `active`). The per-client guard runs before pricing/inventory fetches, so rate-limited requests bail cheap.

## Errors

| Code | Key                         | When                                                                      |
| ---- | --------------------------- | ------------------------------------------------------------------------- |
| 1    | `EXTERNAL_ID_EXISTS`        | The `externalId` is already in use                                        |
| 2    | `MISSING_ITEMS`             | Empty items array                                                         |
| 3    | `INVENTORY_FETCH_FAILED`    | Couldn't load user's inventory                                            |
| 4    | `NO_OFFER_FOUND`            | No valid offer for this item                                              |
| 6    | `TOO_MANY_ACTIVE_TRADES`    | Client has 5+ active deposits (see Rate Limits)                           |
| 7    | `USER_NOT_TRADEABLE`        | User's Steam account can't trade                                          |
| 8    | `TOO_MANY_ITEMS`            | Too many items in one request                                             |
| 9    | `ITEMS_UNAVAILABLE`         | Items not found in inventory                                              |
| 10   | `ITEMS_NOT_ACCEPTED`        | Items not accepted for deposit                                            |
| 11   | `PRICE_CHANGED`             | Offer price has changed since fetch                                       |
| 13   | `INVALID_TRADEURL`          | User's trade URL is invalid                                               |
| 17   | `INSUFFICIENT_ITEM_AMOUNT`  | Requested amount exceeds available quantity                               |
| 18   | `EXCEEDS_MAX_AMOUNT`        | Requested amount exceeds the per-item maximum                             |
| 19   | `DEPOSIT_IN_PROGRESS`       | Another deposit is already processing for this user                       |
| 1005 | `RATE_LIMITED`              | Client exceeded 10 deposits / 5 min (see Rate Limits)                     |
| 1010 | `NO_BOTS_AVAILABLE`         | No Steam bots online; retry shortly                                       |
| 1011 | `FLEET_DEGRADED`            | Steam fleet degraded; retry shortly                                       |
| 1622 | `INSTANT_DEPOSITS_DISABLED` | Instant deposits temporarily disabled (request without `isInstant: true`) |
