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

# List Payment Transactions — GET /merchants/transactions

> GET /merchants/transactions — fetch a paginated list of payment transactions, filtered by status, payment method, customer email, or date range.

Retrieve a paginated list of all payment transactions on your merchant account. Use the query parameters to narrow results by status, payment method, customer email, or date range. This endpoint is suitable for reconciliation dashboards and support workflows.

```http theme={null}
GET https://sandbox.lyseis-pay.com/merchants/transactions
```

<Note>
  Replace `sandbox.lyseis-pay.com` with `live.lyseis-pay.com` when moving to production.
</Note>

## Headers

| Header        | Value                                   |
| ------------- | --------------------------------------- |
| `X-Key-Id`    | Your merchant key ID                    |
| `X-Timestamp` | Unix timestamp of the request (seconds) |
| `X-Signature` | HMAC-SHA256 signature of the payload    |

## Query Parameters

<ParamField query="status" type="string">
  Filter by payment status. Accepted values: `success`, `processing`, `failed`, `abandoned`, `reversed`, `expired`. Omit to return transactions of all statuses.
</ParamField>

<ParamField query="payment_method" type="string">
  Filter by the payment method used. Accepted values: `card`, `bank_transfer`, `ussd`, `direct_debit`. Omit to include all methods.
</ParamField>

<ParamField query="customer_email" type="string">
  Filter transactions to those initiated by a specific customer email address.
</ParamField>

<ParamField query="start_date" type="string">
  ISO 8601 datetime (inclusive) for the start of the date range, e.g. `2026-09-01T00:00:00Z`. Filters on `created_at`.
</ParamField>

<ParamField query="end_date" type="string">
  ISO 8601 datetime (inclusive) for the end of the date range, e.g. `2026-09-30T23:59:59Z`. Filters on `created_at`.
</ParamField>

<ParamField query="page" type="integer" default="1">
  The page number to retrieve, starting from `1`.
</ParamField>

<ParamField query="page_size" type="integer" default="10">
  Number of records per page. Minimum `1`, maximum `100`.
</ParamField>

## Example Request

```http theme={null}
GET https://sandbox.lyseis-pay.com/merchants/transactions?status=success&start_date=2026-09-01T00:00:00Z&page=1&page_size=25
X-Key-Id: mk_sandbox_xxxxxxxxxx
X-Timestamp: 1751234567
X-Signature: <hmac-sha256-signature>
```

## Response

<ResponseField name="status" type="string">
  Top-level API response status. `"success"` means the request was processed and results are returned.
</ResponseField>

<ResponseField name="total" type="integer">
  Total number of transactions matching the applied filters, across all pages.
</ResponseField>

<ResponseField name="page" type="integer">
  The current page number returned.
</ResponseField>

<ResponseField name="pageSize" type="integer">
  Number of records included in this page.
</ResponseField>

<ResponseField name="data" type="array">
  Array of transaction objects.

  <Expandable title="Transaction object fields">
    <ResponseField name="data[].reference" type="string">
      The merchant-facing transaction reference.
    </ResponseField>

    <ResponseField name="data[].transaction_id" type="string">
      Paylink's internal unique identifier for this transaction.
    </ResponseField>

    <ResponseField name="data[].customer_email" type="string">
      Email address of the customer who initiated the transaction.
    </ResponseField>

    <ResponseField name="data[].amount" type="number">
      Transaction amount in the smallest currency unit (e.g. kobo for NGN).
    </ResponseField>

    <ResponseField name="data[].fee" type="number">
      Processing fee charged for this transaction, in the smallest currency unit.
    </ResponseField>

    <ResponseField name="data[].currency" type="string">
      ISO 4217 currency code (e.g. `NGN`).
    </ResponseField>

    <ResponseField name="data[].status" type="string">
      Payment status. See [Payment Statuses](/api-reference/payments/verify#payment-statuses) for the full list of values.
    </ResponseField>

    <ResponseField name="data[].payment_method" type="string">
      The method used for payment, e.g. `card`, `bank_transfer`, `ussd`.
    </ResponseField>

    <ResponseField name="data[].metadata" type="object">
      Metadata key-value pairs attached to the transaction at initialization.
    </ResponseField>

    <ResponseField name="data[].created_at" type="string">
      ISO 8601 timestamp when the payment session was created.
    </ResponseField>

    <ResponseField name="data[].updated_at" type="string">
      ISO 8601 timestamp of the most recent status update.
    </ResponseField>
  </Expandable>
</ResponseField>

## Example Response

```json theme={null}
{
  "status": "success",
  "total": 142,
  "page": 1,
  "pageSize": 25,
  "data": [
    {
      "reference": "order_12345",
      "transaction_id": "txn_98765abcde",
      "customer_email": "customer@example.com",
      "amount": 2500.00,
      "fee": 37.50,
      "currency": "NGN",
      "status": "success",
      "payment_method": "card",
      "metadata": { "order_id": "12345" },
      "created_at": "2026-09-15T10:22:00Z",
      "updated_at": "2026-09-15T10:23:45Z"
    },
    {
      "reference": "order_12346",
      "transaction_id": "txn_98765abcdf",
      "customer_email": "another@example.com",
      "amount": 5000.00,
      "fee": 75.00,
      "currency": "NGN",
      "status": "success",
      "payment_method": "bank_transfer",
      "metadata": {},
      "created_at": "2026-09-15T11:05:00Z",
      "updated_at": "2026-09-15T11:07:22Z"
    }
  ]
}
```
