Appearance
Purchase Status
GET /api/v1/merchant/purchase/status
Retrieves the current status of a purchase. Look up by internal id or your merchant_tx_id.
Request
Headers
| Header | Required | Description |
|---|---|---|
X-Api-Key | ✅ | Your merchant API key |
Accept | — | application/json |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | ✅* | Purchase ID |
merchant_tx_id | string | ✅* | Your transaction ID |
* At least one of id or merchant_tx_id is required.
Response
json
{
"success": true,
"message": "Purchase status fetched successfully",
"data": {
"id": 178,
"merchant_tx_id": "order-12345",
"status": "completed",
"steam_id": "76561198338314767",
"steam_name": "PlayerOne",
"steam_avatar_url": "https://avatars.steamstatic.com/...",
"amount": 45.99,
"trade_offer_id": "6912345678",
"date": "2026-03-24T10:30:00Z",
"item": {
"id": "38029384123",
"name": "AK-47 | Redline (Field-Tested)",
"price": 45.99,
"image_url": "https://steamcommunity-a.akamaihd.net/economy/image/class/730/..."
}
}
}Response Fields
| Field | Type | Description |
|---|---|---|
id | integer | Purchase ID |
merchant_tx_id | string | Your transaction ID (only present if provided at creation) |
status | string | Current purchase status |
fail_reason | string | Failure reason (only present when status is failed) |
steam_id | string | User's Steam ID (64-bit, as string) |
steam_name | string | User's Steam display name (only present if available) |
steam_avatar_url | string | User's Steam avatar URL (only present if available) |
amount | number | Purchase amount (USD) |
trade_offer_id | string | Steam trade offer ID (only present if available) |
date | string | Purchase creation timestamp (ISO 8601) |
item | object | Purchased item details (only present if available) |
item.id | string | Asset ID |
item.name | string | Item market name |
item.price | number | Item price (USD) |
item.image_url | string | Steam 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.
Examples
By merchant_tx_id
bash
curl "https://api.skinslink.com/api/v1/merchant/purchase/status?merchant_tx_id=order-12345" \
-H "X-Api-Key: your-api-key" \
-H "Accept: application/json"By internal ID
bash
curl "https://api.skinslink.com/api/v1/merchant/purchase/status?id=178" \
-H "X-Api-Key: your-api-key" \
-H "Accept: application/json"Purchase Statuses
| Status | Description | Final? |
|---|---|---|
new | Purchase created, not yet processed | No |
pending | Processing, awaiting trade offer creation | No |
active | Trade offer sent, waiting for user to accept | No |
hold | Items on Steam trade hold (7-day hold). Rust items may enter hold for up to 1 hour before completing. | No |
completed | Purchase successful, item delivered ✅ | Yes |
failed | Purchase failed (see fail_reason) ❌ | Yes |
canceled | Purchase canceled | Yes |
reverted | Previously held purchase was reversed | Yes |
TIP
For real-time updates, use Webhooks instead of polling.
Errors
| Status | Message | Cause |
|---|---|---|
400 | validation error | Neither id nor merchant_tx_id provided |
401 | missing authorization header | X-Api-Key header not provided |
401 | invalid API key | API key not found or inactive |
403 | merchant account is disabled | Merchant account deactivated |
403 | invalid IP: <ip> | Request IP not in whitelist |
404 | not found error | No purchase matches the given ID |
