---
title: "List member reward purchases"
method: GET
path: "/v2/loyalties/programs/{programId}/members/{memberId}/rewards/purchases"
tags: ["Programs"]
---

# List member reward purchases

`GET /v2/loyalties/programs/{programId}/members/{memberId}/rewards/purchases`

Lists reward transactions of type `PURCHASE` for the given program member, with cursor-based pagination. Supports filtering by transaction `id`, `reward_id`, and `created_at` date.

It returns all persisted purchase transactions for the member, regardless of status. Purchases rejected synchronously at creation time (for example, insufficient card balance or unavailable stock) are not stored and do not appear in this list. Purchases accepted for processing (202) that later fail asynchronously appear with status: "REJECTED" and `details.rejection`.

## Query parameters

- `limit` integer, nullable
- `order` union
  - string[]
  - '-created_at' | 'created_at'
- `cursor` string, nullable
- `filters` RewardPurchaseListFilters — Filters for listing reward purchases.
  - `junction` 'AND' | 'OR', nullable — Logical junction between the field filters. Defaults to AND behavior.
  - `id` RewardPurchaseFilterIdConditions — ID filter conditions for reward transaction ids. Values must match pattern `^lrtx_[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 transactions whose id equals the given value.
        - string
        - string[]
      - `$is_not` union — Matches transactions whose id does not equal the given value.
        - string
        - string[]
      - `$in` union — Matches transactions whose id is one of the given values.
        - string
        - string[]
      - `$not_in` union — Matches transactions whose id is not one of the given values.
        - string
        - string[]
  - `reward_id` RewardPurchaseFilterRewardIdConditions — ID filter conditions for reward ids. Values must match pattern `^lrew_[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 transactions whose reward id equals the given value.
        - string
        - string[]
      - `$is_not` union — Matches transactions whose reward id does not equal the given value.
        - string
        - string[]
      - `$in` union — Matches transactions whose reward id is one of the given values.
        - string
        - string[]
      - `$not_in` union — Matches transactions whose reward id is not one of the given values.
        - string
        - string[]
  - `created_at` RewardPurchaseFilterDateConditions — 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 rows with the date before the given date-time.
        - string
        - string[]
      - `$after` union — Matches rows with the date after the given date-time.
        - string
        - string[]
      - `$is` union — Matches rows with the date exactly the given number of days ago.
        - string
        - string[]
      - `$more_than` union — Matches rows with the date more than the given number of days ago.
        - string
        - string[]
      - `$less_than` union — Matches rows with the date less than the given number of days ago.
        - string
        - string[]
      - `$has_value` string, nullable — Matches rows where the date field is set.
      - `$is_unknown` string, nullable — Matches rows where the date field is not set.

## Response `200`

Paginated list of reward purchase transactions.

- RewardPurchaseListResponse
  - `data` RewardPurchaseTransaction[] — Reward purchase transactions (type `PURCHASE` only).
    - `id` string — Unique reward transaction identifier (format `lrtx_...`). Absent for `DRY_RUN` (SIMULATED) transactions, which are never persisted.
    - `card_id` string — Unique identifier of the loyalty card the points were spent from (format `lcrd_...`).
    - `card_transaction_id` string, nullable — Unique identifier of the underlying card transaction (format `lctx_...`). `null` for `DRY_RUN` (SIMULATED) transactions.
    - `program_id` string — Unique identifier of the loyalty program (format `lprg_...`).
    - `member_id` string — Unique identifier of the program member (format `lmbr_...`).
    - `reward_id` string — Unique identifier of the purchased reward (format `lrew_...`).
    - `status` 'PENDING' | 'PROCESSING' | 'APPROVED' | 'REJECTED' | 'SIMULATED' | 'REFUNDED' — Transaction status: - `PENDING`: Created and awaiting processing. - `PROCESSING`: Being processed. - `APPROVED`: Completed successfully. - `REJECTED`: Rejected (see `details.rejection`). - `SIMULATED`: Dry-run result that is not persisted. - `REFUNDED`: Purchase has been refunded.
    - `type` 'PURCHASE' | 'REFUND' — Transaction type.
    - `details` union — Transaction details. Shape depends on `type` — purchase details for `PURCHASE`, refund details for `REFUND`.
      - RewardPurchaseTransactionDetailsPurchase — Details of a `PURCHASE` reward transaction.
        - `reason` string, required — Human-readable reason. For purchases: "Points spent on reward".
        - `rejection` RewardPurchaseRejection, required — Details about a rejected reward purchase transaction.
          - `reason` string, required — Machine-readable rejection reason.
          - `details` object — Additional structured context about the rejection. Fields depend on the rejection reason.
        - `metadata` object, required — Transaction metadata. Empty object when not set.
        - `points` RewardPurchasePoints, required — Points involved in the transaction.
          - `total` number, required — Total number of points.
        - `result` RewardPurchaseResult, required — Reward fulfillment result. Contains the fulfilled reward reference, quantity and the material or digital fulfillment payload.
          - `reward` RewardPurchaseResultReward — Reference to the fulfilled reward.
            - `id` string — Reward identifier (format `lrew_...`).
            - `type` 'MATERIAL' | 'DIGITAL' — Reward type.
          - `quantity` number, nullable — Fulfilled quantity.
          - `material` RewardPurchaseResultMaterial — Material reward fulfillment.
            - `type` 'PRODUCT' | 'SKU' — Material reward type.
            - `product` object — Product payload (present when `type` is `PRODUCT`).
            - `sku` object — SKU payload (present when `type` is `SKU`).
          - `digital` RewardPurchaseResultDigital — Digital reward fulfillment.
            - `type` 'DISCOUNT_COUPONS' | 'GIFT_VOUCHERS' | 'LOYALTY_CARD_POINTS' — Digital reward type.
            - `discount_coupons` RewardPurchaseDigitalCoupon[] — Fulfilled discount coupons (present when `type` is `DISCOUNT_COUPONS`).
              - …
            - `gift_vouchers` RewardPurchaseDigitalGiftVoucher[] — Fulfilled gift vouchers (present when `type` is `GIFT_VOUCHERS`).
              - …
            - `loyalty_card_points` RewardPurchaseDigitalLoyaltyCardPoints — Loyalty card points fulfillment entry.
              - …
      - RewardPurchaseTransactionDetailsRefund — Details of a REFUND reward transaction.
        - `reason` string — Human-readable reason, e.g. "Reward refund — point purchase reversed".
        - `rejection` RewardPurchaseRejection — Details about a rejected reward purchase transaction.
          - `reason` string, required — Machine-readable rejection reason.
          - `details` object — Additional structured context about the rejection. Fields depend on the rejection reason.
        - `metadata` object — Transaction metadata. Empty object when not set.
        - `points` RewardPurchasePoints — Points involved in the transaction.
          - `total` number, required — Total number of points.
        - `result` RewardPurchaseResult — Reward fulfillment result. Contains the fulfilled reward reference, quantity and the material or digital fulfillment payload.
          - `reward` RewardPurchaseResultReward — Reference to the fulfilled reward.
            - `id` string — Reward identifier (format `lrew_...`).
            - `type` 'MATERIAL' | 'DIGITAL' — Reward type.
          - `quantity` number, nullable — Fulfilled quantity.
          - `material` RewardPurchaseResultMaterial — Material reward fulfillment.
            - `type` 'PRODUCT' | 'SKU' — Material reward type.
            - `product` object — Product payload (present when `type` is `PRODUCT`).
            - `sku` object — SKU payload (present when `type` is `SKU`).
          - `digital` RewardPurchaseResultDigital — Digital reward fulfillment.
            - `type` 'DISCOUNT_COUPONS' | 'GIFT_VOUCHERS' | 'LOYALTY_CARD_POINTS' — Digital reward type.
            - `discount_coupons` RewardPurchaseDigitalCoupon[] — Fulfilled discount coupons (present when `type` is `DISCOUNT_COUPONS`).
              - …
            - `gift_vouchers` RewardPurchaseDigitalGiftVoucher[] — Fulfilled gift vouchers (present when `type` is `GIFT_VOUCHERS`).
              - …
            - `loyalty_card_points` RewardPurchaseDigitalLoyaltyCardPoints — Loyalty card points fulfillment entry.
              - …
        - `purchase` RewardPurchaseRefundPurchaseReference — References to the original purchase transactions being refunded.
          - `card_transaction` object, nullable — Reference to the original card transaction.
            - `id` string — Card transaction identifier (format `lctx_...`).
          - `reward_transaction` object, nullable — Reference to the original reward transaction.
            - `id` string — Reward transaction identifier (format `lrtx_...`).
    - `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`.
    - `object` 'reward_transaction' — Object type marker. Always `reward_transaction`.
  - `cursor` object, nullable — Pagination cursor. `null` when there are no more results.
    - `next` string — Cursor to pass as the `cursor` query parameter to fetch the next page (format `lcrstrx_...`).
    - `expires_at` string, date-time — Timestamp when the cursor expires.
  - `object` 'list' — Object type marker. Always `list`.

## Other responses

- `400` — Validation error - request body or query parameters failed validation, or the operation is not allowed in the current resource state.
- `404` — Resource not found.
- `500` — Internal server error.

---

[API](https://skmtc.net/voucherifyio/apis/voucherify-loyalty-v2-api.md) · [All operations](https://skmtc.net/voucherifyio/apis/voucherify-loyalty-v2-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/voucherifyio/voucherify-loyalty-v2-api/revisions/69be73b5cff0/schema)
