Manual

How to use BuyCS2 trade server

Read this manual before asking support. Most questions are answered here.

First things first

  1. How much does it cost?
  2. You just got access — how do you start?
  3. What are proxies and why do you need them?
  4. How do you add accounts?
  5. You added an account — what next?
  6. How do you list items for sale?

More detail

  1. How do you automate BuyCS2 trade server with an API key?
  2. What can you do from the account context menu?
  3. How do you open Steam or a third-party site without typing the password?
  4. Can min/max be set automatically?
  5. Where do you see trades and sales?

Typical flow: configure fees → import accounts + unique proxies → wait for Steam/marketplace login → set min/max → workers list and compete → collect balance to the main account.

Pricing

BuyCS2-only is free. Paid slots apply when you also use the integrated marketplaces.

BuyCS2 only

Free. No extra charge if you only use BuyCS2.

CSGOTM / WhiteMarket / ShadowPay

Paid when you also use any of the three integrated marketplaces.

Accounts Price
50$75
200$120
400$160
600$200
800$240
1000$280

+$40 per additional 200 slots

Initial configuration

After you log in, open Settings from the top-right user menu. Do these steps once before importing accounts.

Path: Settings → Marketplace & automation

Drop this screenshot into public/assets/guide/

settings-marketplace.png
Settings → Marketplace & automation

1. Marketplace fees

  • CSGOTM default: sell 5% · withdraw 5%
  • WhiteMarket default: sell 5% · withdraw 1%
  • ShadowPay default: sell 5% · withdraw 5%

Defaults are compatible starting points. Change them if the marketplace fee changed.

2. CSGOTM pay passwords

On the same tab, fill CSGOTM Pay Passwords — 6-digit codes, one per line or comma-separated. BuyCS2 trade server installs a password from this list on each CSGOTM account so it can transfer balance to your main account later.

Invent any 6-digit codes. They are not your Steam password.

3. ShadowPay merchant API key

If you sell on ShadowPay, paste the Merchant API key that manages all SubSellers. One key per manager.

4. BuyCS2 ID

Nothing to ask for. The BuyCS2 Panel ID is filled in automatically when an admin enables BuyCS2 selling for your user. Once it appears here, BuyCS2 sell history and wallet balance sync on their own (about every 15 minutes).

5. Users not to compete with

By default other users compete on price. Your own listings never undercut each other. Enter usernames (one per line) to skip competing with those users. Leave empty to compete with everyone else.

6. Collect money to main

Optional. Every 30 minutes BuyCS2 trade server can send available CSGOTM / WhiteMarket balance from sub-accounts to your main account.

7. Telegram bot (recommended)

Path: Settings → Telegram

  1. Open @BotFather in Telegram, send /newbot, copy the bot token, and click Save token.
  2. Click Create bind link and open it in Telegram. The link expires in about 10 minutes.
  3. Wait until status becomes Linked. Account ZIP downloads go only to this chat.

When the bot is linked, it also sends an alert for every login attempt — success or failure (wrong password, 2FA, blocked IP).

Set a ZIP password (at least 8 characters) so a stolen Telegram session cannot read exported accounts. Open the ZIP with 7-Zip or WinRAR.

8. Security

Path: Settings → Security

Change the default password and enable 2FA. Save backup codes once — they are shown only at setup. API keys are created on this same tab (see API documentation).

What is a proxy

A unique HTTP proxy is required for every account. Without it BuyCS2 trade server will not import the account.

Each account must talk to Steam from its own IP. If many accounts share one IP, Steam can link them and ban the whole group when one account looks suspicious.

Rule: 1 proxy = 1 account. Do not reuse a proxy across accounts.

Format

BuyCS2 trade server accepts HTTP proxies only, in this form:

host:port:user:pass

Examples:

1.2.3.4:8080:myuser:mypass
proxy.example.com:8080:user:pass

SOCKS, user@host, or missing user/pass lines are rejected.

Where to buy

Buy the cheapest HTTP IPv4 proxies that work, for example at webshare.io. One unique proxy per account is enough.

  • Protocol: HTTP (not SOCKS-only)
  • Type: IPv4, one dedicated IP per account
  • Export as host:port:user:pass and paste into Import or the proxy column

How to assign later

  • Double-click the proxy cell on an account, or
  • Right-click → Change proxy (bulk editor if several rows are selected)

The proxy column shows live/die and latency after the worker checks it. A dead proxy stops Steam jobs for that account until you replace it.

API documentation

Everything you do in the browser can be done programmatically. The website uses a login cookie that expires. An API key does not — send it on every request.

Path: Settings → Security → API Key

Create an API key

  1. Open Settings → Security.
  2. Click Create API key. The full key is shown once — copy it immediately.
  3. Later you can Show key (password required), Regenerate (old key dies), or Revoke.
  4. Optional: fill Allowed IPs (one IP or hostname per line) and save. Empty allowlist = any IP. A request from a non-listed IP returns 403.

Send x-api-key and x-username

Add x-api-key to every call. Also send x-username with your login username when the request goes through the hub. The hub returns 400 if that header is missing. Do not put the key in the query string. A call straight to your own server still works with only x-api-key.

x-api-key: your-api-key-here
x-username: your-username

Example:

curl -s -H "x-api-key: YOUR_KEY" -H "x-username: YOUR_USERNAME" "https://YOUR_HOST/api/Wallet/GetBalance"

Successful JSON looks like:

{
  "success": true,
  "msg": null,
  "data": { }
}

On error: success: false, msg is the reason, HTTP status is 4xx/5xx.

Rate limit

Each username and each IP address can send 600 requests per minute. Past that, the API responds 429 and does not run the request. msg says how many seconds to wait.

{
  "success": false,
  "msg": "Too many attempts. Try again in 12 seconds",
  "data": null
}

How to learn any method

There is no need to memorize every route. Repeat the action in the UI and copy the request:

  1. Press F12 (or right-click → Inspect) and open the Network tab.
  2. Do the action in BuyCS2 trade server (refresh inventory, set min/max, import, …).
  3. Click the /api/... row. Note method (GET/POST), URL, and Payload (JSON body).
  4. Replay that URL + body with the x-api-key and x-username headers instead of the session cookie.

Import accounts

Add accounts only with Import account on Accounts → Steam Manage. Single or bulk.

Path: Accounts → Steam Manage → Import account

BuyCS2 trade server can import thousands of accounts easily. Buy accounts from the Telegram bot @Steam_Account_Seller_bot. Need proxies? Buy cheap HTTP proxies at webshare.io in host:port:user:pass format.

Drop this screenshot into public/assets/guide/

import-single.png
Import → Single account

Single account

Pick one of four modes at the top of the form. The server does not store the mode; it works out what the account can do from the data you gave it.

  1. User/Pass + maFile — login, password and .maFile. Full automation: the worker logs in by itself, renews the session when the token dies and confirms trades with SDA.
  2. Refresh token + maFile — login, a MobileApp refresh token and .maFile; password optional. Trades are confirmed automatically. Without a password the worker cannot log in again once the token expires or is revoked — paste a new token from the context menu.
  3. Refresh token only — login and refresh token, no maFile. The worker keeps the session, syncs inventory, lists and sends trades, but you confirm each trade yourself in the Steam mobile app. The maFile column shows —. After you confirm an offer, your tool can call POST /api/trades/mark-confirmed with {"items":[{"tradeOfferId":"…"}]} so the SDA column turns green. To automate later: right-click → Action with Steam → Change maFile secrets and Change DB password.
  4. Move from phone — login and password, no existing maFile. Steam Guard must already be on the phone, and the account needs a verified phone number. Click Move; Steam texts a code to that number. Enter the code to replace the phone authenticator with a new maFile and import the account. Download the maFile and keep the revocation code — it is not stored. Trade hold is about 2 days, and the authenticator on the old phone stops working. After that, the worker can log in and confirm trades the same way as User/Pass + maFile. Single account only — this mode is not in the bulk paste.

Required in every mode:

  • Steam login
  • Proxy host:port:user:pass

maFile — for User/Pass + maFile and Refresh token + maFile, choose a .maFile / JSON. Shared secret and Identity secret fill automatically; you may paste them by hand instead. Both secrets must be base64 of 20 bytes, and you need both or none. Move from phone creates the maFile for you. Refresh token only does not use one.

Optional: reminder (short label in the table). The refresh token must be a MobileApp refresh token (not a web/client token, not an access token) and must not be close to expiry. The SteamID is read from the token, so inventory and trade jobs can start right away.

Pick a pool color at the bottom. Color groups accounts for filters and for auto min/max.

Multiple accounts

Drop this screenshot into public/assets/guide/

import-bulk.png
Import → Multiple accounts

One account per line. Proxies bind 1:1 in the same order — line 1 of proxies goes to line 1 of accounts.

Account line format (fields separated by :::). Each line picks its own mode; a refresh token, when present, is always the last field:

login:password:::shared_secret:::identity_secret
login:password:::shared:::identity:::::steamid:::::tradeurl
login:::shared_secret:::identity_secret:::refresh_token
login:password:::shared_secret:::identity_secret:::refresh_token
login:::refresh_token
login:password:::refresh_token

Lines 1–2 are User/Pass + maFile, lines 3–4 are Refresh token + maFile, lines 5–6 are Refresh token only. You can mix modes in one paste. If a line has both a SteamID and a token, they must match. Export writes the same formats back, so a backup can be re-imported as is.

Proxy lines:

host:port:user:pass

The counters turn green when lines parse. Red/warn means a line has no password and no token, only one of the two secrets, or an invalid proxy. Bad tokens or secrets are reported per line after you click Import. Extra proxy lines are ignored; missing proxies block those accounts.

After you import an account

Do not log in manually. Workers pick up the new row and run the bootstrap: Steam session, trade URL, inventory, then marketplace registration when that marketplace is granted to you.

What to watch in the table

  • Proxy — live (green) vs die. Fix die proxies first.
  • Session / Steam — logged in, trade URL present, maFile OK, no Steam/trade ban.
  • CSGOTM / WhiteMarket / ShadowPay tabs — API key or JWT, online, can sell. Enable/disable sales from the context menu.
  • Message column — last Steam or worker error (expired token, bad proxy, need password, …).

Marketplace sales start enabled after a successful bootstrap if your user was granted that marketplace. You can turn a site off per account without disabling the Steam account.

Inventory appears on Inventory after the first inventory sync. Items are not listed until you set min and max.

Turn on Accept gift trade from the Steam context menu if you want incoming marketplace trades auto-accepted.

Context menu

On Accounts, right-click a row. If several rows are checked, the menu applies to the selection. Some actions work only on a single account and appear disabled when many are selected.

Path: Accounts → right-click row

Drop this screenshot into public/assets/guide/

accounts-context.png
Account context menu

Drop this screenshot into public/assets/guide/

steam-actions.png
Action with Steam

Action with Steam

The most useful items live under Action with Steam. Opening Steam in the browser and logging into other sites are explained in Steam session & 3rd-party login.

Other Steam actions

  • Copy Guard code, refresh token, access token
  • Confirm all in SDA (mobile confirmations)
  • Send item to a trade link (pick items from this inventory and optionally the partner)
  • Open this account on the Inventory page
  • Re-run trade protection acknowledged / public steam inventory
  • Enable / disable accept gift trade
  • Random name + avatar
  • Change password / refresh token / maFile secrets stored in BuyCS2 trade server (not a Steam password reset unless a worker does that later)
  • Force sync — run the full Steam job now

CSGOTM / WhiteMarket / ShadowPay

Each submenu: enable or disable sales on that site, force sync, and (single account) copy CSGOTM API key, send CSGOTM balance, or copy WhiteMarket JWT. A greyed-out marketplace means your user was not granted that site — ask an admin.

Common actions

  • Copy SteamID, Trade URL, or proxy
  • Change proxy (bulk editor keeps login ↔ line alignment)
  • Change color (palette)
  • Download account ZIP to the bound Telegram chat
  • Disable account — jobs stop; the row moves to the Disabled tab. You can enable it again or delete it there.

Double-click Reminder, Note, or Proxy cells to edit without the menu. Paste several reminder lines to fill consecutive visible rows.

Inventory context menu

Right-click an item to highlight/unhighlight it, copy the inspect link, or open the same item on CSGOTM / WhiteMarket / ShadowPay.

Open Steam and log into other sites

You never type the Steam password in the browser. BuyCS2 trade server opens a live Steam session through that account’s proxy — Store, inventory, or any site that supports “Sign in through Steam”.

Path: Accounts → right-click → Action with Steam → Action with Steam session

These actions need exactly one selected account. If several rows are checked, the session items stay disabled.

Drop this screenshot into public/assets/guide/

steam-session.png
Action with Steam session

Open Steam already logged in

A new tab opens a Steam page as that account. Every request goes through the account proxy, so Steam sees the same IP the workers use. Use this to check inventory, trade history, warnings, or support without logging in by hand.

  1. Right-click one account → Action with Steam → Action with Steam session.
  2. Pick the page you need:
  • Open Store via session — store.steampowered.com
  • Open inventory page (session) — that account’s CS2 inventory
  • View trade history — Steam trade history
  • View account warnings — open Steam warnings if the account is Steam-banned or restricted
  • Open Steam support page — help.steampowered.com
  • Open Steam profile — community profile

You can keep browsing Steam in that tab: links stay inside the session.

Log into any site via Steam

Works on marketplaces, bots, and tools that have a Sign in through Steam button. BuyCS2 trade server finishes the OpenID login as the selected account — you do not enter login or password on that site.

  1. On the other site, click Sign in through Steam (or the Steam icon).
  2. The browser jumps to a Steam OpenID URL. It usually starts with https://steamcommunity.com/openid/login?.... Copy the full URL from the address bar before you click Sign In on Steam.
  3. Back in BuyCS2 trade server: right-click the account → Action with Steam → Action with Steam session → Login to third-party site.
  4. Paste the OpenID URL and confirm. A new tab opens already authorized as that Steam account.

If the URL does not contain /openid/login, you copied the wrong page. Start the Steam login again on the third-party site and copy the address as soon as Steam’s OpenID page appears.

This is the fastest way to open CSGOTM, WhiteMarket, ShadowPay, or any other Steam-login site on a specific account without switching cookies or typing 2FA.

Min / max / buy price

Open Inventory. Workers list an item only after min and max are set. Empty or zero = not for sale.

Path: Inventory → double-click min / max / buy

Drop this screenshot into public/assets/guide/

inventory-minmax.png
Inventory — min, max, buy columns

What the columns mean

  • min (floor) — the minimum USD you want to keep after sell + withdraw fees. The bot adds fees onto the listing so your net is not below this. It never lists below min.
  • max (ceiling) — the highest USD price the bot lists first, or raises back to when nobody is cheaper. max must be ≥ min.
  • buy (cost) — what you paid for the item. Optional. It does not change the listing price; it is only for profit/loss in sales history.

Example: you want $10 net and marketplace fees (e.g. CSGOTM) total 10%. Set min = 10 — the bot lists about $11.11 so you still get $10 after fees. Set max = 12 if you want to start higher when there is no competitor, then drop toward $10 when someone is cheaper.

Quick actions

  • Edit — double-click a cell → type the number → Enter to save (Esc to cancel).
  • Filter — only changes what you see on screen. It does not change prices on other items.
  • Highlight special items — right-click → Highlight rare/expensive rows so auto min/max skips them and does not overwrite those prices.

Auto min/max by color

If you do not want to type min/max on every item, open Auto min/max by color on the Inventory toolbar. Rules apply to all items whose account color matches the row.

Path: Inventory → Auto min/max by color

Drop this screenshot into public/assets/guide/

auto-min-max.png
Auto min/max by color

How it is calculated

  1. A worker copies Buff / Youpin / C5 / Ecosteam prices (CNY) from itembuycs2 into the database about every 5 minutes.
  2. About every 10 minutes (or when you click Apply now) BuyCS2 trade server reads those DB prices, converts CNY → USD, then:
min = USD_price × (Min % / 100)
max = USD_price × (Max % / 100)

Example: Buff = ¥800, rate = 0.14 → $112. Min % = 110, Max % = 150 → min = $123.20, max = $168.00. Defaults if you never saved a row: platform Buff, min 110%, max 150%, skip highlighted items.

CNY → USD rate

The rate selector sits above the table and applies to all your colors. From API (default) pulls the live CNY → USD rate from a public exchange-rate API, caches it and refreshes it on a timer; if the API is down, the last cached rate is kept. Manual lets you type your own rate (a number greater than 0), which is then used as is until you switch back. Change it when you want a more conservative conversion than the market rate.

Columns in the modal

  • Color — account pool color (same as Import / context menu).
  • Enabled — only enabled colors are applied on the timer and on Apply now.
  • Platform — buff, youpin, c5, or ecosteam.
  • Min % / Max % — multipliers on that platform’s USD price.
  • Skip highlighted — do not overwrite min/max on items you marked. Recommended for knives / high-tier skins you price by hand.

Save stores the table. Apply now runs once immediately. Clear all min/max wipes prices (including manual ones) — confirm first.

After min/max exist, marketplace workers list the item and compete between min and max. You do not need to open each marketplace by hand.

Trades and sales

Open Trade History in the top nav. Sub-tabs cover outgoing trades, incoming trades, marketplace sales, and suspicious trades.

Path: Trade History → Send / Receive / Sell

Outgoing and incoming trades

The Send tab lists Steam trade offers BuyCS2 trade server is sending (marketplace payouts, manual send-trade). You can see item, partner, status, and whether the offer was confirmed. Receive is the same for incoming offers.

Drop this screenshot into public/assets/guide/

trade-history.png
Trade History — sent trades

Drop this screenshot into public/assets/guide/

trade-receive.png
Trade History — received trades

Sales history

The Sell tab is the marketplace sales ledger: item, platform, sale price, profit vs buy price, and hold status. Totals at the top show completed sales, profit, and per-marketplace volume.

Drop this screenshot into public/assets/guide/

sell-history.png
Trade History — sales

Profit columns need a buy price on the item (set on Inventory). Without buy price, profit stays empty.

Suspicious sales are flagged on the Suspicious tab. Examples: an item was sold but is missing from the marketplace history, or the hold is overdue and the platform has not credited the money.