> ## Documentation Index
> Fetch the complete documentation index at: https://docs.skinloop.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Balances

> Read ledger-derived merchant balances.

## Purpose

Skinloop provides separate balance endpoints for merchant servers and the
first-party dashboard. Both return the same ledger-derived USD fields. Do not
calculate a balance by adding webhook deliveries.

Only posted, verified completed-trade credits become available. Pending,
active, and CS2 Steam-hold funds remain excluded until completion is verified.
A reversal or payout reservation can reduce what is available.

## Merchant server

Use a server-side merchant API key with `payouts:read`:

```http theme={null}
GET /v1/merchant-api/balance
Authorization: Bearer YOUR_MERCHANT_API_KEY
```

Do not expose this API key to a browser or mobile client.

## First-party dashboard

Skinloop's signed-in dashboard uses the merchant user's Clerk session:

```http theme={null}
GET /v1/dashboard/balance
Authorization: Bearer YOUR_DASHBOARD_SESSION_TOKEN
```

Merchant integrations should not obtain or manage Clerk session tokens. Use the
API-key endpoint for unattended server access.

## Response

All amount fields are integer USD cents encoded as strings:

```json theme={null}
{
  "currency": "USD",
  "availableMinor": "4999",
  "pendingMinor": "2500",
  "heldMinor": "1000",
  "payoutReadyMinor": "4999",
  "pendingPayoutMinor": "0"
}
```

* `availableMinor` is the posted balance currently available.
* `pendingMinor` contains initiated, pending, and active payments.
* `heldMinor` contains payments in provider hold.
* `payoutReadyMinor` is eligible to enter the payout flow.
* `pendingPayoutMinor` is reserved in payout clearing.

**Expected result:** use `availableMinor` as a displayed ledger value, not as a
promise of payout completion. See [Payouts](/payouts) for eligibility and fees.
