Skip to content
SkinsNodeDocumentation
Create withdrawal
Docs/Withdrawals

Create withdrawal

Accept an order request for asynchronous processing and validate expected price.

POST/v1/orders

Client credentials. Returns 202.

Request body

FieldTypeDescription
catalogItemIdUUIDRequired. The exact item id from a fresh catalog response.
expectedPriceintegerRequired. The displayed catalog price in USD cents; protects against price changes.
externalIdstringRequired. Your stable order identifier, unique within your client account.
webhookUrlstringRequired. Your HTTPS receiver for order.updated callbacks.
tradeUrlstringRequired. The recipient's Steam trade URL.

Request

cURL
curl -X POST 'https://api.skinsnode.com/v1/orders' \
  -H "x-client-id: client_live_abc123" \
  -H "x-client-secret: sk_live_replace_me" \
  -H "content-type: application/json" \
  -d '{
  "catalogItemId": "8d15e82b-21fe-4ec1-a37f-1e2e5edeb1fd",
  "expectedPrice": 1840,
  "externalId": "order_100042",
  "webhookUrl": "https://store.example/webhooks/orders",
  "tradeUrl": "https://steamcommunity.com/tradeoffer/new/?partner=123&token=abc"
}'

Response 202 Accepted

JSON response
{
  "externalId": "order_100042",
  "status": "accepted",
  "acceptedAt": "2026-04-25T12:30:00.000Z"
}

Integration rules

A 202 response means the order was accepted for background processing, not delivered. Persist the order, then process signed callbacks and use lookup as a fallback.

The recipient has 10 minutes to accept the trade. Handle price changes or unavailable items by refreshing the catalog, not repeatedly submitting a new order.