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)
Only CS2 items bought from a marketplace can be cancelled. Rust withdrawals have no supplier cancel API, and items AssetPay fills from its own stock cannot be cancelled. If every item in the trade is one of those 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, filled from AssetPay’s own stock) 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 /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