Appearance
Balance
GET /api/v1/merchant/balance
Returns your merchant account balance: what you can spend right now and what is still held.
Request
Headers
| Header | Required | Description |
|---|---|---|
X-Api-Key | ✅ | Your merchant API key |
Accept | — | application/json |
No query parameters — the account is identified by your API key.
Response
json
{
"success": true,
"data": {
"total": 1250.75,
"hold": 320.50,
"available": 930.25
}
}Response Fields
| Field | Type | Description |
|---|---|---|
available | number | Funds you can spend right now. Purchases and withdrawals draw from this |
hold | number | Value of deposits sitting on a Steam trade hold. Becomes available when the deposit completes, and is dropped if it reverts |
total | number | available + hold |
All amounts are in USD.
What moves the balance
| Event | Effect |
|---|---|
Deposit reaches hold | hold grows by the deposit amount |
Deposit reaches completed | The amount moves from hold to available (a deposit that completes without a hold lands in available directly) |
Held deposit is reverted | hold drops by the amount — nothing is credited |
| Purchase is created | available drops immediately: the item's price is reserved |
Purchase ends as canceled, failed or reverted | The reserved amount returns to available |
| Withdrawal from the merchant dashboard | available drops; the amount returns if the withdrawal fails or is canceled |
| Account top-up | available grows once the top-up is confirmed |
INFO
A purchase is rejected with fail_reason: insufficient_balance when available is lower than the item's price. Deposits are not affected by your balance — they add to it.
Example
bash
curl "https://api.skinslink.com/api/v1/merchant/balance" \
-H "X-Api-Key: your-api-key" \
-H "Accept: application/json"Errors
| Status | Message | Cause |
|---|---|---|
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 | IP not whitelisted: <ip> | Request IP not in whitelist |
500 | internal error | Something went wrong on our side |
