Skip to main content

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

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

ParameterTypeRequiredDescription
itemsarrayYesItems to deposit (min 1, max 250)
items[].itemIdstringYesItem ID from inventory (5–256 chars)
items[].pricenumberYesOffer price in USD. Must equal the current offer price returned by /client/inventory, validated server-side.
items[].amountnumberNoQuantity for stackable Rust items (default: 1, max: 10000)
gamestringNo"730" or "252490". Defaults to "730".
externalIdstringNoYour unique tracking ID (max 128 chars). Must be unique per trade.
isInstantbooleanNoRequest instant credit during hold period (default: true)

Response

{
  "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 object. After creation, the trade progresses through callbacks. See Trade Lifecycle.

Rate Limits

Per-merchant tier throttle (shared across all clients of the same merchant):
Merchant StatusLimit
Verified500 requests / min
Unverified5 requests / min
Per-client guard (scoped per (merchant, clientSteamId)):
ConstraintLimitError key
Concurrent active deposits5TOO_MANY_ACTIVE_TRADES (HTTP 429)
Deposits initiated in any rolling 5-minute window10RATE_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

CodeKeyWhen
1EXTERNAL_ID_EXISTSThe externalId is already in use
2MISSING_ITEMSEmpty items array
3INVENTORY_FETCH_FAILEDCouldn’t load user’s inventory
4NO_OFFER_FOUNDNo valid offer for this item
6TOO_MANY_ACTIVE_TRADESClient has 5+ active deposits (see Rate Limits)
7USER_NOT_TRADEABLEUser’s Steam account can’t trade
8TOO_MANY_ITEMSToo many items in one request
9ITEMS_UNAVAILABLEItems not found in inventory
10ITEMS_NOT_ACCEPTEDItems not accepted for deposit
11PRICE_CHANGEDOffer price has changed since fetch
13INVALID_TRADEURLUser’s trade URL is invalid
17INSUFFICIENT_ITEM_AMOUNTRequested amount exceeds available quantity
18EXCEEDS_MAX_AMOUNTRequested amount exceeds the per-item maximum
19DEPOSIT_IN_PROGRESSAnother deposit is already processing for this user
1005RATE_LIMITEDClient exceeded 10 deposits / 5 min (see Rate Limits)
1010NO_BOTS_AVAILABLENo Steam bots online; retry shortly
1011FLEET_DEGRADEDSteam fleet degraded; retry shortly
1622INSTANT_DEPOSITS_DISABLEDInstant deposits temporarily disabled (request without isInstant: true)