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

# Query Wallet Balance

> Retrieve the available and frozen balance of your C2C merchant wallet.

## Overview

Returns the current balance of your merchant wallet. The merchant is identified by the API key. Your wallet changes when orders complete:

| Event | Effect on available balance |
| - | - |
| Deposit order `Completed` | **+ amount − fee** (the fee is capped at the deposit amount, so the credit is never negative) |
| Withdrawal order `Completed` | **− (amount + fee)** |
| Balance adjustment by C2C, for example a top-up or correction | As recorded by C2C |

Orders still in progress don't affect the balance until they complete.

| | |
| - | - |
| **API key** | Required |
| **Signature** | Not required. Read-only requests are authenticated by the API key alone. |

<Tip>
  This endpoint has no side effects, so it is ideal for testing your API key.
</Tip>

## Headers

<ParamField header="C2C-API-Key" type="string" required>
  `mk_live_...`, your merchant API key. `Authorization: Bearer mk_live_...` is also accepted.
</ParamField>

## Response

<ResponseField name="data" type="object">
  <Expandable title="properties" defaultOpen>
    <ResponseField name="availableBalance" type="number">
      Funds you can use now for new withdrawals (amount + fee) and settlements. Withdrawals in progress are already taken out.
    </ResponseField>

    <ResponseField name="reservedBalance" type="number">
      Amount + fee of your withdrawals still in progress. Each is debited when its payout is confirmed, or returns to `availableBalance` if it fails.
    </ResponseField>

    <ResponseField name="frozenBalance" type="number">
      Funds held for your settlement requests.
    </ResponseField>

    <ResponseField name="currency" type="string">
      Wallet currency. Merchant wallets are held in `PKR`.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url https://api.c2cpayment.net/api/merchant/orders/balance \
    --header "C2C-API-Key: $C2C_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    'https://api.c2cpayment.net/api/merchant/orders/balance',
    { headers: { 'C2C-API-Key': process.env.C2C_API_KEY } }
  );
  const { data } = await response.json();
  console.log(`Available: ${data.availableBalance} ${data.currency}`);
  ```

  ```python Python theme={null}
  import os, requests

  response = requests.get(
      "https://api.c2cpayment.net/api/merchant/orders/balance",
      headers={"C2C-API-Key": os.environ["C2C_API_KEY"]},
  )
  data = response.json()["data"]
  print(f"Available: {data['availableBalance']} {data['currency']}")
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "data": {
      "availableBalance": 48530.0000,
      "reservedBalance": 1010.0000,
      "frozenBalance": 0.0,
      "currency": "PKR"
    }
  }
  ```

  ```text 401 Invalid API key theme={null}
  HTTP/1.1 401 Unauthorized
  Content-Length: 0
  ```
</ResponseExample>

## Error responses

| Status | When | Body |
| - | - | - |
| `401` | API key missing, invalid or revoked | Empty body |
| `404` | The API key was revoked while the request was in flight | `{"error": "API key not found or inactive."}` |

## Usage tips

* Check `availableBalance` before submitting [withdrawals](/api-reference/endpoints/create-withdrawal). A new withdrawal is accepted only if `availableBalance` covers its **amount + fee**; otherwise it's rejected with `422 Insufficient merchant balance`. You don't need to subtract withdrawals in progress yourself: they are in `reservedBalance`, not in `availableBalance`.
* Fees come from fee rules C2C configures for your account, per order type and [payment method](/guides/payment-methods#fees). A rule for `JazzCash` also prices `JazzCashTillID` and `JazzCashQR` deposits that have no rule of their own, and a rule for `Easypaisa` also prices `EasypaisaQR` deposits; `TillID` keeps its own rules. The fee for an order is applied when it completes.
* For a per-transaction history, use the **Merchant Portal** (Transactions). The API exposes only the current balance.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.