Skip to content

Deposit Preview

POST /api/v1/merchant/deposit-preview

Returns the prices we currently pay for the items in a user's Steam inventory — a lightweight quote surface for building a deposit cart. No records are created, nothing is reserved, and the call has no side effects, so it is safe to call as often as your UI needs.

Compared to Get Inventory, the preview responds faster and does not start the 5-minute pricing snapshot: it is a display quote. To credit a deposit at exactly these prices, create it with from_preview.

Access on request

This endpoint is enabled per merchant account. Until we enable it for yours, the call answers 403 and from_preview on Create Deposit is ignored. Ask your account manager to turn it on.

Request

Headers

HeaderRequiredDescription
X-Api-KeyYour merchant API key
Content-Typeapplication/json

Body

ParameterTypeRequiredDescription
gamestringGame code: csgo, rust, dota2, tf2
partnerintegerunless itemsSteam trade partner ID
tokenstringunless itemsSteam trade token
itemsarrayunless partner+tokenQuote this exact list instead of the user's whole inventory. Up to 1000 entries. See Pricing a known cart
items[].asset_idstringSteam asset ID, returned unchanged as items[].id
items[].namestringSteam market_hash_name
items[].icon_urlstringSteam icon_url

Pricing a known cart (items)

If you already know which items the user holds, send them in items instead of the trade link and we quote exactly that list.

json
{
  "game": "csgo",
  "items": [
    {
      "asset_id": "38029384123",
      "name": "AK-47 | Redline (Field-Tested)",
      "icon_url": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpout6..."
    }
  ]
}

All three fields are required. asset_id is not used for pricing — we return it unchanged so you can match our prices back to your cart.

image_url, exterior, rarity and rarity_color are not returned in this mode — you get back id, name, price and, on phased items, phase. With a trade link the response is the full item card, same as Get Inventory.

Response

json
{
  "success": true,
  "message": "Deposit preview fetched successfully",
  "data": {
    "items": [
      {
        "id": "38029384123",
        "name": "AK-47 | Redline (Field-Tested)",
        "price": 12.45,
        "image_url": "https://community.cloudflare.steamstatic.com/economy/image/...",
        "exterior": "Field-Tested",
        "rarity": "Classified",
        "rarity_color": "#d32ce6"
      }
    ],
    "total": 47,
    "sum": 284.90,
    "game": "csgo",
    "max_items": 50
  }
}
FieldTypeDescription
itemsarrayItems we currently accept, with the price paid for each. Items we do not accept right now are omitted
items[].idstringSteam asset ID — pass these to Create Deposit as asset_ids
items[].phasestringDoppler phase, present on phased items
totalintegerNumber of quotable items
sumnumberTotal value of all quotable items
max_itemsintegerPer-deposit item limit — a deposit with more items is rejected with too_many_items

Price freshness

Preview prices are refreshed periodically (typically every ~10 minutes) and are stable in between. If the user takes long to decide, prices may update; a deposit created with from_preview verifies this for you and answers with the current prices when they have changed — see Deposit at Preview Prices.

Preview coverage can differ from Get Inventory

The preview is a fast display quote. The set of quotable items and their prices can occasionally differ from a Get Inventory response for the same account — the deposit itself always settles the final amount.