---
title: "Get public purchase history for a product subscription by ID. Roles: admin or self (member)."
method: GET
path: "/api/product-subscriptions/{productSubscriptionId}/purchases"
tags: ["Purchases", "Product Subscriptions"]
---

# Get public purchase history for a product subscription by ID. Roles: admin or self (member).

`GET /api/product-subscriptions/{productSubscriptionId}/purchases`

## Path parameters

- `productSubscriptionId` integer, required

## Response `200`

OK

- PurchasesResponsePurchasePublicCore
  - `success` boolean
  - `error` string
  - `purchases` PurchasePublicCore[]
    - `audit` Audit
      - `createdTime` string, date-time
      - `modifiedTime` string, date-time
      - `modifiedBy` string
    - `purchaseId` integer
    - `membershipId` integer
    - `token` string, uuid
    - `member` MemberSlim
      - `userMembershipId` integer
      - `membershipId` integer
      - `username` string
      - `firstName` string
      - `middleName` string
      - `lastName` string
      - `email` string
      - `phone` string
      - `membershipNumber` string
      - `fullName` string
      - `isPrimary` boolean
    - `guest` GuestCore
      - `audit` Audit
        - `createdTime` string, date-time
        - `modifiedTime` string, date-time
        - `modifiedBy` string
      - `guestId` integer
      - `firstName` string
      - `lastName` string
      - `email` string
      - `phone` string
      - `postalCode` string
    - `voucher` ProductVoucherPublicCore
      - `productVoucherId` integer
      - `code` string
      - `discountAmount` integer
      - `discountPercent` integer
      - `autoApplied` boolean
    - `currency` 'AED' | 'ARS' | 'AUD' | 'CAD' | 'CHF' | 'CLP' | 'CNY' | 'EUR' | 'GBP' | 'INR' | 'JPY' | 'KRW' | 'MYR' | 'NZD' | 'PKR' | 'SGD' | 'USD' | 'ZAR'
    - `totalDue` integer
    - `totalPaid` integer
    - `totalTax` integer
    - `totalDiscount` integer
    - `totalCredit` integer
    - `totalRefunded` integer
    - `totalDisputed` integer
    - `serviceCharge` integer
    - `net` integer
    - `paymentCompleteTime` string, date-time
    - `paymentFailTime` string, date-time
    - `fulfillTime` string, date-time
    - `cancelTime` string, date-time
    - `partialRefundTime` string, date-time
    - `refundTime` string, date-time
    - `disputeLostTime` string, date-time
    - `status` 'PENDING' | 'COMPLETED' | 'FAILED' | 'REFUNDED' | 'DISPUTE_LOST' | 'CANCELLED'

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `500` — Internal server error

---

[API](https://skmtc.dev/mobilecoach/apis/untitled-api.md) · [All operations](https://skmtc.dev/mobilecoach/apis/untitled-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/mobilecoach/untitled-api/revisions/f2568e11c0ab/schema)
