Skip to main content
Requests cancellation of every still-cancellable item in a withdrawal, rather than one item at a time. Use it when a user abandons a whole order — a single call replaces a loop over POST /client/trading/withdraw/{tradeId}/items/{itemId}/cancel. Authentication: Client Token (Authorization header)
CS2 (Assetpay) items only. Rust withdrawals and autoseller-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.

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, autoseller-sourced) do not appear in items[] at all. An item must also be at least 30 minutes old and not yet terminal; younger items come back as failed with reason: "TRADE_CANCEL_TOO_SOON".

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 /client/trades/{id} or rely on callbacks for the final state, and refund the user’s balance when you receive the canceled callback.
A cancel lands on canceled, not reverted. reverted is for a delivered item that came back afterwards.

Rate Limits

Shared across all clients of the same merchant.

Errors