Deposits
A deposit is when a user sells their skin to your platform. The user sends their item via a Steam trade offer, and you receive the value as balance.The Deposit Flow
Fetch inventory
Call
GET /client/inventory to get the user’s tradeable items with current offer prices.Trade offer sent
AssetPay sends a Steam trade offer to the user. The trade moves to
active — sitting in the user’s Steam inbox awaiting acceptance.Hold period (CS2 only)
For CS2, Steam enforces a 7-day trade protection period. The trade stays in
hold until it ends. Rust trades skip this step entirely and transition active → completed directly.Single-Item Deposit
Multi-Item Deposit
You can deposit multiple items in a single trade. Pass them all in theitems array:
amount:
Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array | Yes | Array of items to deposit (min 1, max 250) |
items[].itemId | string | Yes | Item ID from the inventory response |
items[].price | number | Yes | Offer price in USD. Must match the current offer price returned by /client/inventory. |
items[].amount | number | No | Quantity for stackable items (default: 1, max: 10000) |
game | string | No | "730" (CS2) or "252490" (Rust). Defaults to "730". |
externalId | string | No | Your unique tracking ID (max 128 chars). Stored as externalId on the trade. |
isInstant | boolean | No | Whether to request instant credit (default: true). |
Rate Limits
Two layers apply to/client/trading/deposit:
- Per-merchant tier throttle (shared across all clients): 500 req/min verified, 5 req/min unverified.
- Per-client guard (scoped per merchant + client Steam ID):
- Max 5 concurrent active deposits (not-yet-accepted:
initiated | active) —TOO_MANY_ACTIVE_TRADES(HTTP 429). - Max 10 deposits per 5-minute rolling window —
RATE_LIMITED(HTTP 429).
- Max 5 concurrent active deposits (not-yet-accepted:
Response
The response contains the full trade object:Instant Deposits
By default,isInstant is true. When enabled, AssetPay calculates how much of the deposit value can be credited instantly based on collateral, rather than waiting for the full 7-day hold period.
When a deposit enters hold status, the trade object includes:
preCredit- the amount credited instantly (USD)pendingCredit- the remaining amount held until the hold period endscollateral- breakdown of collateral sources
isInstant is set to false, the entire amount waits until completed.
The collateral field in the inventory response tells you the total instant credit available for that user before they start depositing.
External ID
TheexternalId field is your own tracking identifier. Use it to link AssetPay trades back to records in your system.
Balance Handling for Deposits
When to credit:| Event | Action |
|---|---|
hold | Credit preCredit amount (if using instant deposits) |
completed | Credit pendingCredit (the remaining held amount) |
reverted | Reverse any instant credit that was applied |
| Event | Action |
|---|---|
initiated | Just acknowledge |
active | Just acknowledge — Steam offer sent, awaiting user acceptance |
failed | No credit needed |
canceled | No credit needed |
declined | No credit needed (user declined the offer) |