---
title: "GET /api/public/purchases"
method: GET
path: "/api/public/purchases"
tags: ["Purchases"]
---

# GET /api/public/purchases

`GET /api/public/purchases`

List customer purchases. Filter by status, traineeId or productId.

## Query parameters

- `page` integer
- `limit` integer
- `status` 'ACTIVE' | 'EXPIRED' | 'CANCELLED' | 'PENDING' | 'WAITING_FOR_PAYMENT'
- `traineeId` string
- `productId` string

## Response `200`

Successful response

- object — Successful response
  - `data` object[]
    - `id` string
    - `coachId` string
    - `traineeId` string
    - `productId` string
    - `purchaseDate` string, date-time
    - `expirationDate` string, date-time
    - `purchaseAmount` number
    - `currency` 'ILS' | 'USD' | 'EUR' | 'GBP'
    - `status` 'ACTIVE' | 'EXPIRED' | 'CANCELLED' | 'PENDING' | 'WAITING_FOR_PAYMENT'
    - `initialCredits` number
    - `remainingCredits` number
    - `membershipStartDate` string, date-time
    - `membershipEndDate` string, date-time
    - `currentPeriodUsages` number
    - `periodResetDate` string, date-time
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `pagination` object
    - `page` number
    - `limit` number
    - `total` number, nullable — Total number of matching items. null when the underlying source cannot report an exact count for this page; use hasMore to keep paging.
    - `hasMore` boolean
    - `truncated` boolean — Present and true when the result set exceeded the in-memory scan cap and was truncated. Narrow your filters to page through all items.

## Other responses

- `400` — Default Response
- `401` — Default Response
- `403` — Default Response
- `429` — Default Response
- `500` — Default Response

---

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