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

# List QR Pay payments

> Return a paginated list of all payments for a QR Pay session.

Returns all payments for the specified QR Pay session in descending creation-time order. The list includes every payment status, and historical payments remain available after the QR Pay session is closed or expired.

Each item in `payments` uses the same fields as the Retrieve payment API. Empty optional fields are omitted, and `id` is the payment session ID.

## Authentication and headers

Use a Bearer API Key and the three signing headers below. Sign `{timestamp}.{nonce}.{requestBody}` with HMAC-SHA256 and encode the result as lowercase hex. For GET requests, `requestBody` is an empty string.

**Authorization** `string` *required*

Bearer API Key, for example `Bearer sk_live_xxx`.

**X-StablePay-Timestamp** `string` *required*

Unix timestamp in seconds, within 5 minutes of server time.

**X-StablePay-Nonce** `string` *required*

Random replay-protection string, 16–64 characters. Use a new nonce for each request.

**X-StablePay-Signature** `string` *required*

Lowercase hexadecimal HMAC-SHA256 signature calculated with the merchant API Secret.

## Path parameter

**deposit\_session\_id** `string` *required*

QR Pay session ID.

## Query parameters

**page** `integer` (default: 1)

Page number starting at 1. Empty, non-integer, repeated, or out-of-range values return 400.

**page\_size** `integer` (default: 20)

Records per page, from 1 to 100. Empty, non-integer, repeated, or out-of-range values return 400.

## Success response

HTTP `200` returns the requested page and total record count. An empty page returns `payments: []` while `total` retains the actual count.

**payments** `object[]` *required*

Payments on the current page.

**Payment fields**

**id** `string` *required*

Payment session ID.

**amount\_total** `integer` *required*

Original order total in the smallest unit of the original order currency.

**currency** `string` *required*

Lowercase original-order currency code.

**payment\_status** `string` *required*

Allowed values: `pending`, `processing`, `paid`, `failed`, `expired`, `canceled`, `frozen`.

**created** `integer` *required*

Creation time as Unix seconds.

**expires\_at** `integer` *required*

Expiration time as Unix seconds.

**url** `string`

Payment page URL.

**line\_items** `object[]`

Line items, returned only when present.

**tax\_amount** `integer`

Tax amount in the smallest unit of the original order currency.

**shipping\_amount** `integer`

Shipping amount in the smallest unit of the original order currency.

**exchange\_rate** `string`

Exchange-rate value, returned only when conversion applies.

**target\_currency** `string`

Target payment currency.

**target\_amount\_total** `integer`

Target payment amount in the smallest unit of the target currency.

**rate\_locked\_at** `integer`

Exchange-rate lock time as Unix seconds.

**subscription\_id** `string`

Related subscription ID, returned only when present.

**invoice\_id** `string`

Related invoice ID, returned only when present.

**total** `integer` *required*

Total number of payments for this QR Pay session, independent of the requested page.

**page** `integer` *required*

Current page number.

**page\_size** `integer` *required*

Requested number of records per page.

```json theme={"system"}
{
  "payments": [
    {
      "id": "20261113110100101082920000542002",
      "amount_total": 1,
      "currency": "usdc",
      "payment_status": "paid",
      "created": 1794544360,
      "expires_at": 1794544420,
      "url": "https://checkout.example/#/pay/20261113110100101082920000542002/example-token",
      "target_currency": "USDC",
      "target_amount_total": 1
    }
  ],
  "total": 1,
  "page": 1,
  "page_size": 20
}
```

## Error responses

* `400`: Invalid pagination parameters.
* `401`: Authentication failed.
* `404 resource_not_found`: The QR Pay session does not exist or belongs to another merchant.
* `500`: Internal service error.


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