Skip to content

Purchase History

GET /api/v1/merchant/purchase

Retrieves purchase history with pagination and filtering.

Request

Headers

HeaderRequiredDescription
X-Api-KeyYour merchant API key
Acceptapplication/json

Query Parameters

ParameterTypeRequiredDescription
limitintegerItems per page
offsetintegerPagination offset
statusstringFilter by status: new, pending, active, hold, completed, failed, canceled, reverted
date_rangeintegerDays to look back: 1, 7, 30, 90, 365
searchstringSearch query (1–100 characters)
sortstringSort field (prefix with - for descending): id, -id, merchant_tx_id, -merchant_tx_id, status, -status, amount, -amount, created_at, -created_at

Response

json
{
  "success": true,
  "message": "Purchase history retrieved successfully",
  "data": {
    "data": [
      {
        "id": 39,
        "merchant_tx_id": "order-12345",
        "status": "canceled",
        "steam_id": "76561199189424248",
        "steam_name": "PlayerOne",
        "steam_avatar_url": "https://avatars.steamstatic.com/...",
        "date": "2026-03-26T10:35:51.118731+03:00",
        "amount": 3.15,
        "trade_offer_id": "8965267962",
        "item": {
          "id": "584165445",
          "name": "Urban Camo MP5",
          "price": 3.15,
          "image_url": "https://steamcommunity-a.akamaihd.net/economy/image/class/252490/2274469358"
        }
      }
    ],
    "total": 2
  }
}

Response Fields

FieldTypeDescription
dataarrayList of purchase records
totalintegerTotal number of matching purchases
data[].idintegerPurchase ID
data[].merchant_tx_idstringYour transaction ID (only present if provided at creation)
data[].statusstringCurrent purchase status
data[].fail_reasonstringFailure reason (only present when status is failed)
data[].steam_idstringUser's Steam ID (64-bit, as string)
data[].steam_namestringUser's Steam display name (only present if available)
data[].steam_avatar_urlstringUser's Steam avatar URL (only present if available)
data[].datestringPurchase creation timestamp (ISO 8601)
data[].amountnumberPurchase amount (USD)
data[].trade_offer_idstringSteam trade offer ID (only present if available)
data[].itemobjectPurchased item details (only present if available)
data[].item.idstringAsset ID
data[].item.namestringItem market name
data[].item.pricenumberItem price (USD)
data[].item.image_urlstringSteam CDN image URL

INFO

Optional fields (merchant_tx_id, fail_reason, steam_name, steam_avatar_url, trade_offer_id, item) are omitted from the response when not available — they will not appear as null.

Example

bash
curl "https://api.skinslink.com/api/v1/merchant/purchase?limit=100" \
  -H "X-Api-Key: your-api-key" \
  -H "Accept: application/json"

With filters

bash
curl "https://api.skinslink.com/api/v1/merchant/purchase?limit=20&status=completed&date_range=30&sort=-created_at" \
  -H "X-Api-Key: your-api-key" \
  -H "Accept: application/json"

Errors

StatusMessageCause
400validation errorInvalid filter parameters
401missing authorization headerX-Api-Key header not provided
401invalid API keyAPI key not found or inactive
403merchant account is disabledMerchant account deactivated
403invalid IP: <ip>Request IP not in whitelist
500internal errorSomething went wrong on our side