Skip to main content
Instant sell lets a user sell items from their Steam inventory immediately at the best available market price. The user picks items and a payout destination, then accepts a Steam trade offer to complete the sale. Two endpoints are involved: All responses use the standard envelope:
Errors return HTTP 300 with { "err": true, "success": false, "content": { "message": "…" } }. There are no machine-readable error codes, so match on or display the message string. Authentication: send your API JWT as Authorization: Bearer <token>. Neither route requires 2FA. Prices are integer cents. instant_sell_price is the sale price, not the amount the seller receives (see Seller fee).

Overview

1. GET /deposit/instantSell/{game}

Returns the user’s sellable inventory with an instant sell price on each row.
Response
Results are cached for up to 5 minutes. If the user’s inventory just changed, call GET /deposit/{game}?force=1 (at most once per minute), then call this endpoint again.

Row fields

Additional fields by game:
  • TF2 (440): unusual, paintcolor, craft, spell, sheen, killstreaker, class.
  • CS:GO (730): type, rarity, wear, pattern, stickers, keychains. Items with a different wear or pattern are returned as separate rows.
  • Steam (753): type, category, foil (bool). Only trading cards are returned.

Price levels

The same item can appear in several rows, each with its own count, assetid, depositkey, and instant_sell_price. This happens when a stack can’t be sold entirely at a single price. For example, a user with 5 keys may get 3 at 185¢ and 2 at 180¢, returned as two rows (as in the response above). Treat each row as a separate offer: the user can sell one row without the other.

Disabled rows

Rows with a disabled field can’t be sold. Don’t send them to the POST.
If depositkey is "", the row is not selectable. Never build or guess a key.

2. POST /deposit/trade/instant

Submits the selected assets for instant sell. On success, the user receives a Steam trade offer to complete the sale.

Body

integer
default:"440"
440, 730, 570, 252490, or 753.
object
required
Map of assetId → price in cents. Use exactly the instant_sell_price from the asset’s row.
object
required
Map of assetId → depositkey, copied from the asset’s row.
string
required
balance, or one of payoneer, tipalti, stripe_connect, payviox_cashout. See Payout destination.
string
Must be payviox when cashout_method is payviox_cashout.
string
Payout email. Required for payviox_cashout. .ru domains are not supported.
Always send the exact instant_sell_price returned by the GET. A higher price won’t find a buyer, and a lower price pays the user less. Don’t send an amount field.

Success response

Payout destination

balance

Keeps the proceeds on the user’s Mannco balance. There is no minimum or maximum, and no email is needed.

Cashout methods

payoneer, tipalti, stripe_connect, and payviox_cashout pay out to an external account. The user must have linked that account first. Call GET /user/availableCashoutMethod to see which methods are ready. The total is the sum of prices (after skipped_highstock removals). It must be strictly greater than the minimum and at most the maximum. The payout is sent once the sale completes, not when you call the POST.

Error messages

All errors are returned in content.message.

Seller fee

The seller receives the sale price minus a 5% fee, rounded in the seller’s favor. The minimum fee is 1¢, except on 1¢ items, where the seller keeps the full cent.
seller-receives.js
1

Load the inventory

Call GET /deposit/instantSell/{game}.
2

Show sellable rows

Display rows without disabled and with an object depositkey. Show instant_sell_price, and optionally sellerReceives(price) next to it.
3

Let the user choose a destination

Always offer balance. For cashouts, call GET /user/availableCashoutMethod and check the min/max against the selected total.
4

Submit the selection

POST only the selected assets, each with its own instant_sell_price and depositkey.
5

Confirm

Remove any skipped_highstock assets from the summary and tell the user to accept the Steam trade offer.
instant-sell.js

After the sale

Once the user accepts the Steam trade offer, the items are sold and the proceeds are sent to the chosen destination. For CS:GO, Steam Trade Protection holds the proceeds for about 8 days. Use GET /user/balance (pending) and GET /user/balance/waiting (details[].release_at, released) to show the user when the funds will be available.