Skip to main content
Merchant-facing equivalent of POST /client/trading/withdraw/{tradeId}/cancel. Requests cancellation of every still-cancellable item in one of your own self-trade buys, rather than one item at a time: a single call replaces a loop over POST /secure/buy/{tradeId}/items/{itemId}/cancel. Authentication: Merchant API Key (api-key header) Scope: CORE_ACCESS
CS2 (Assetpay) items only. Rust buys and internal-sourced items have no supplier cancel API. If every item in the trade is in one of those lanes the call fails with TRADE_CANCEL_UNSUPPORTED (44); if only some are, they are simply left out of the result. Only self-trade buys (source: "self") are cancellable through this endpoint.

Request

Path Parameters

Best effort, not all-or-nothing

The supplier decides which items still qualify, so a partial result is still a 200. Read the body, not the status code:
  • requested: how many items the supplier considered cancellable at all
  • cancelled / failed: how those split
  • items[]: one row per item the supplier reported on
Items the supplier never considered (already delivered, in Steam hold, Rust, internal-sourced) do not appear in items[] at all. A refused item comes back as failed with a reason: a stable-looking key reported by the supplier, for example TRADE_CANCEL_TOO_SOON for an item it considers too young to cancel. The exact value is not guaranteed.

Response

A cancelled row only confirms the marketplace accepted the cancellation. AssetPay does not change item state inline. The refund and the transition to canceled arrive asynchronously through the standard trade.* callback. Poll GET /secure/trades/{tradeId} or rely on callbacks for the final state.
A cancel lands on canceled, not reverted. reverted is for a delivered item that came back afterwards.

Rate Limits

Errors