---
title: "List member order payments"
method: GET
path: "/v2/loyalties/programs/{programId}/members/{memberId}/orders/payments"
tags: ["Programs"]
---

# List member order payments

`GET /v2/loyalties/programs/{programId}/members/{memberId}/orders/payments`

## Request

- Base URL: `https://api.voucherify.io`
- URL: `https://api.voucherify.io/v2/loyalties/programs/{programId}/members/{memberId}/orders/payments`
- Auth: one of:
  - API key in header `X-App-Id` and API key in header `X-App-Token`
  - HTTP bearer

Lists stored `PAY_WITH_POINTS` order transactions for the program member, with cursor pagination. Filter by `id`, `card_definition_id`, and `created_at`. Order by `id` (default `-id`, newest first). Dry-run (`SIMULATED`) results aren't stored and don't appear. Returns `404` when the program or the member doesn't exist. The program is checked first.

## Query parameters

- `limit` integer, nullable
- `order` union
  - string[]
  - '-id' | 'id'
- `cursor` string, nullable
- `filters` V2LoyaltiesProgramsMembersOrdersPaymentsListRequestQuery: Request query schema for **GET** `/v2/loyalties/programs/{programId}/members/{memberId}/orders/payments`.
  - `junction` 'AND' | 'OR', nullable: Joins the field filters. Allowed values are `AND` and `OR`. Defaults to `AND`.
  - `id` LoyaltiesProgramsMembersOrdersPaymentsListRequestQueryId: ID filter conditions for order transaction ids. Values must match pattern `^lotx_[a-f0-9]+$`. `$is`/`$is_not` accept a single value (string or 1-element array); `$in`/`$not_in` accept a string or an array of 1-100 values.
    - `conditions` object, required
      - `$is` union: Matches one value. A string or a one-element array. Format `lotx_[a-f0-9]+`.
        - string
        - string[]
      - `$is_not` union: Excludes one value. A string or a one-element array. Format `lotx_[a-f0-9]+`.
        - string
        - string[]
      - `$in` union: Matches any of the values. A string or an array of 1 to 100 values. Format `lotx_[a-f0-9]+`.
        - string
        - string[]
      - `$not_in` union: Excludes any of the values. A string or an array of 1 to 100 values. Format `lotx_[a-f0-9]+`.
        - string
        - string[]
  - `card_definition_id` LoyaltiesProgramsMembersRewardsPurchasesListRequestQueryCardDefinitionId: ID filter conditions for card definition IDs. Values must match pattern `^lcdef_[a-f0-9]+$`. `$is`/`$is_not` accept a single value (string or 1-element array); `$in`/`$not_in` accept a string or an array of 1-100 values.
    - `conditions` object, required
      - `$is` union: Matches one value. A string or a one-element array. Format `lcdef_[a-f0-9]+`.
        - string
        - string[]
      - `$is_not` union: Excludes one value. A string or a one-element array. Format `lcdef_[a-f0-9]+`.
        - string
        - string[]
      - `$in` union: Matches any of the values. A string or an array of 1 to 100 values. Format `lcdef_[a-f0-9]+`.
        - string
        - string[]
      - `$not_in` union: Excludes any of the values. A string or an array of 1 to 100 values. Format `lcdef_[a-f0-9]+`.
        - string
        - string[]
  - `created_at` TransactionFilterDateConditions: Date filter conditions. `$before`/`$after` accept an ISO date-time string. `$is`/`$more_than`/`$less_than` accept a non-negative integer number of days ago. `$has_value`/`$is_unknown` accept any single value and match rows where the field is set / not set. Single values may also be passed as 1-element arrays.
    - `conditions` object, required
      - `$before` union: Matches dates before the given value. An ISO 8601 date-time, as a string or a one-element array.
        - string
        - string[]
      - `$after` union: Matches dates after the given value. An ISO 8601 date-time, as a string or a one-element array.
        - string
        - string[]
      - `$is` union: Matches a date exactly the given number of days ago. A non-negative integer, as a string or a one-element array.
        - string
        - string[]
      - `$more_than` union: Matches dates more than the given number of days ago. A non-negative integer, as a string or a one-element array.
        - string
        - string[]
      - `$less_than` union: Matches dates less than the given number of days ago. A non-negative integer, as a string or a one-element array.
        - string
        - string[]
      - `$has_value` string, nullable: Matches when the field is set. The condition value is ignored.
      - `$is_unknown` string, nullable: Matches when the field is not set. The condition value is ignored.

## Response `200`

Returns a paginated list of persisted order payment transactions.

- V2LoyaltiesProgramsMembersOrdersPaymentsListResponseBody: Cursor-paginated list of order payment transactions.
  - `data` OrderPaymentTransaction[]: Order payment transactions.
    - `program_id` string: Unique identifier of the loyalty program (format `lprg_...`).
    - `member_id` string: Unique identifier of the program member (format `lmbr_...`).
    - `created_at` string, date-time: Timestamp when the transaction was created (ISO 8601).
    - `updated_at` string, date-time, nullable: Timestamp when the transaction was last updated (ISO 8601), or `null`.
    - `card_id` string: Unique identifier of the loyalty card the points were spent from (format `lcrd_...`).
    - `id` string: Identifies the order transaction (`lotx_...`). Absent on dry-run (`SIMULATED`) create responses, which are never persisted. Always present in list responses.
    - `card_definition_id` string: Identifies the card definition (format `lcdef_...`).
    - `card_transaction_id` string, nullable: Identifies of the underlying card transaction (format `lctx_...`). `null` for DRY_RUN (SIMULATED) transactions.
    - `order_id` string: Identifies the paid order (format `ord_...`).
    - `status` 'PENDING' | 'PROCESSING' | 'APPROVED' | 'REJECTED' | 'SIMULATED': Transaction status. `PENDING` - created, awaiting processing; `PROCESSING` - being processed; `APPROVED` - completed successfully; `REJECTED` - rejected (see `details.rejection`); `SIMULATED` - dry-run create result, not persisted (not returned by list).
    - `type` 'PAY_WITH_POINTS': Defines the transaction type. Always `PAY_WITH_POINTS`.
    - `details` OrderPaymentTransactionDetails: Details of a `PAY_WITH_POINTS` order transaction.
      - `reason` string: Human-readable reason: "Points spent on order payment".
      - `rejection` OrderPaymentRejection: Rejection details for a rejected order payment transaction.
        - `reason` string: Machine-readable rejection reason. Order-side: `ORDER_NOT_FOUND`, `PAYMENT_EXCEEDS_ORDER_TOTAL_AMOUNT`. Card-side (when the linked card transaction fails first): `NOT_ENOUGH_BALANCE`, `GLOBAL_SPENDING_LIMIT_EXCEEDED`, `TRANSACTION_SPENDING_LIMIT_EXCEEDED`.
        - `details` object, nullable: Structured rejection context. Omitted when the reason carries no extra data (`ORDER_NOT_FOUND`, `PAYMENT_EXCEEDS_ORDER_TOTAL_AMOUNT`, `NOT_ENOUGH_BALANCE`). For `GLOBAL_SPENDING_LIMIT_EXCEEDED`: `type`, `limit`, `spendings`. For `TRANSACTION_SPENDING_LIMIT_EXCEEDED`: `type`, `limit`.
          - `type` string: Spending cap type that was exceeded.
          - `limit` number: Configured spending limit.
          - `spendings` number: Projected total spendings that exceeded the limit. Present for `GLOBAL_SPENDING_LIMIT_EXCEEDED`.
      - `metadata` object: Transaction metadata. For pay-with-points transactions this contains the flattened payment limits used for the calculation: `amount_limit` for the `AMOUNT_LIMIT` type and/or `points_limit` for the `POINTS_LIMIT` type. Empty object when the default `CARD_BALANCE` limit was used or when not set.
        - `amount_limit` integer: Maximum amount limit applied to the payment (if any).
        - `points_limit` integer: Maximum points limit applied to the payment (if any).
      - `payment` OrderPaymentPaymentDetails: Payment calculation details.
        - `id` string: Payment identifier. Omitted when not set.
        - `amount` number: Amount of the order paid with points.
        - `points_spent` number: Number of points spent on the payment.
        - `exchange_ratio` number: Points-to-amount exchange ratio evaluated from the card definition's pay-with-points formula.
      - `spending_cap` object: The cap that limited this payment. Create always returns it. Older list rows omit it.
        - `type` 'CARD_SPENDING_GLOBAL_SPENDING_BASED_LIMIT' | 'CARD_SPENDING_GLOBAL_TIME_BASED_LIMIT' | 'CARD_SPENDING_TRANSACTIONS_LIMIT' | 'REQUEST_PAYMENT_LIMIT' | 'ORDER_TOTAL_AMOUNT' | 'CARD_BALANCE_POINTS', required: Identifies which cap limited the payment.
        - `unit` 'POINTS' | 'AMOUNT', required: Whether `value` is points or an amount.
        - `value` number, required: Cap value in `unit`.
    - `object` 'order_transaction': Object type marker. Always `order_transaction`.
  - `cursor` object, nullable: Pagination cursor. `null` when there are no more results.
    - `next` string: Pass as the `cursor` query parameter to fetch the next page (format `lcrsotx_...`).
    - `expires_at` string, date-time: Timestamp when the cursor expires (ISO 8601).
  - `object` 'list': Object type marker. Always `list`.

## Other responses

- `400`: The query failed validation. `order` must be `id` or `-id`, and an array can't order by `id` and `-id` together. A cursor that doesn't match `^lcrsotx_[a-f0-9]+$` returns `invalid_query_params`.
- `404`: The program doesn't exist (`resource_type` `program`), or the member doesn't exist in that program (`resource_type` `member`). A member of another program is not found. The program is checked first.
- `500`: Internal server error.

## Changes

- **2026-10-14** (v2) `d29b33490051`: 1 breaking, 13 warning, 1 info
  - the `allOf[#/components/schemas/MemberOrderPaymentListResponse]/data/items/` response's property type changed from `object` to no type for status `200`
  - removed the optional property `allOf[#/components/schemas/MemberOrderPaymentListResponse]/data/items/card_definition_id` from the response with the `200` status
  - removed the optional property `allOf[#/components/schemas/MemberOrderPaymentListResponse]/data/items/card_id` from the response with the `200` status
  - removed the optional property `allOf[#/components/schemas/MemberOrderPaymentListResponse]/data/items/card_transaction_id` from the response with the `200` status
  - …11 more
- **2026-10-14** (v2) `be14b3318eb3`: 1 breaking, 14 info
  - the `allOf[#/components/schemas/MemberOrderPaymentListResponse]/data/items/` response's property type changed from no type to `object` for status `200`
  - added the optional property `allOf[#/components/schemas/MemberOrderPaymentListResponse]/data/items/card_definition_id` to the response with the `200` status
  - added the optional property `allOf[#/components/schemas/MemberOrderPaymentListResponse]/data/items/card_id` to the response with the `200` status
  - added the optional property `allOf[#/components/schemas/MemberOrderPaymentListResponse]/data/items/card_transaction_id` to the response with the `200` status
  - …11 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/changes/v2/loyalties/programs/:programId/members/:memberId/orders/payments/get.md)

---

[API](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api.md) - [All operations](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/llms.txt) - [OpenAPI document](https://skmtc.dev/voucherifyio/apis/voucherify-loyalty-v2-api/revisions/e0d9f2d2532f?raw)
