---
title: "List MembershipCharges"
method: GET
path: "/customers/membership-charges"
tags: ["MembershipCharges"]
---

# List MembershipCharges

`GET /customers/membership-charges`

Returns a paginated list of `MembershipCharge`s — the historical
record of every direct-debit, card or offline payment captured (or
attempted) against the recurring `Membership`s in the caller's
organisation.

Use this to power membership-billing reports, reconcile failed
payments before retry, or surface a charge history on a customer's
profile.

Filters cascade: omitting `status` returns non-pending,
non-refunded charges (the default reporting view). Pass
`status=all` to include every charge regardless of state, or pass
`pending`/`overdue` to scope to the corresponding billing window.
`site_id` is restricted server-side to the caller's accessible
sites; passing a `site_id` the caller cannot see returns an empty
result rather than 403.

Requesting the response as CSV (`Accept: text/csv`) elevates the
permission check to `reports.download`; use the companion
[`queueCustomerMembershipCharges`](#operation/queueCustomerMembershipCharges)
endpoint for asynchronous CSV exports beyond a few thousand rows.

Note: an earlier docs revision listed this operation under
`/shop/membership-charges`. The Laravel controller has always
lived in customer-api, so `/customers/membership-charges` is the
correct and canonical path.

## Query parameters

- `site_id` string
- `organisation_id` string, uuid
- `membership_id` string
- `status` string
- `billing_period_from_start` string, date
- `billing_period_from_end` string, date
- `created_at_start` string, date
- `created_at_end` string, date
- `amount_from` number
- `amount_to` number
- `processor` string
- `page` integer
- `per_page` integer

## Response `200`

The `MembershipCharge`s were successfully retrieved

- object — Paginated envelope mixin. `allOf` this into any list response that wraps its `data` array with `meta` + `links`; the concrete schema keeps its own title so the SDK surface is unchanged, while the `meta` / `links` shape is sourced from a single definition.
  - `links` PaginationLinks, required — Hypermedia navigation links for paging through a list response. Each property is a fully-qualified URL that preserves the original query string (filters, sort, page size) and only swaps the `page` parameter. `next` and `prev` are `null` at the ends of the result set; `first` and `last` are always present.
    - `first` string, required — The url of the first page for the paginated results set
    - `next` string, nullable, required — The url of the next page for the paginated results set
    - `prev` string, nullable, required — The url of the previous page for the paginated results set
    - `last` string, required — The url of the last page for the paginated results set
  - `meta` PaginationMeta, required — Counts and positional information for the current page of a list response. Use `current_page` and `last_page` to drive pagination UI, `total` for result counts, and `per_page` to confirm the page size the server actually applied (which may differ from the requested value when capped).
    - `from` integer, required — The item number from which this results set starts from
    - `to` integer, required — The item number from which this results set ends at
    - `total` integer, required — The total number of results
    - `current_page` integer, required — The current page number
    - `last_page` integer, required — The page number of the last result set
    - `per_page` integer, required — The number of results per page
    - `path` string, required — The path of this api request
  - `data` MembershipCharge[], required
    - `id` string, uuid, required — The ID of the membership charge
    - `membership` MembershipSummary, required
      - `id` string, uuid, required — The ID of the membership
      - `membership_number` string, required — The membership number
      - `type_name` string, required — The name of the membership type
      - `customer_id` string, uuid, required — The ID of the lead customer
      - `customer_name` string — The name of the lead customer
    - `processor` string, required — The processor of the payment
    - `processor_data` PaymentProcessorData, required
      - `cardholder_name` string, nullable — The name of the cardholder, if applicable
      - `last_4` string, nullable — The last four digits of the payment method, if applicable
      - `processor_type` string, nullable — The processor's name for the type of payment used
      - `processor_type_id` string, object-id, nullable — The processor's ID for the type of payment used
    - `amount` integer, required — The amount of the charge, in the smallest units
    - `original_amount` integer — The original amount of the charge, in the smallest units
    - `currency` string, required — The code of the currency for the charge
    - `tax` string, required — The amount of tax calculated for this charge
    - `status` string, required — The status of the charge
    - `description` string, nullable, required — A description of the charge
    - `can_download_receipt` boolean, required — Whether a receipt is available for this charge
    - `amount_refunded` integer, required — The total amount refunded for this charge
    - `refunded` boolean, required — Whether this charge has been fully refunded
    - `refunds` MembershipChargeRefund[], required — An array of refunds against this charge
      - `id` string, uuid, required — The ID of the membership charge refund
      - `status` string, required — The status of the refund
      - `amount` string, required — The amount of the refund
      - `currency` string, required — The currency of the refund
      - `notes` string, nullable, required — Any notes associated with the refund
      - `failure_reason` string, nullable — A reason code for the failure, if applicable
      - `refunded_by` SchemasUserSummary2
        - `id` string, uuid, required — The ID of the user
        - `full_name` string, required — The full name of the user
      - `processor_data` RefundProcessorData, required
        - `processor` string, required — The name of processor used for this refund
        - `processor_id` string, nullable, required — The processor's ID for the refund
      - `created_at` string, date-time, required — The datetime which the refund was created
      - `updated_at` string, date-time, required — The datetime which the refund was last updated
    - `site_id` string, uuid, required — The ID of the site this charge belongs to
    - `billing_period_from` string, date, required — The first date of the billing period
    - `billing_period_to` string, date, required — The last date of the billing period
    - `processing_at` string, date-time — The datetime when the charge started processing
    - `created_at` string, date-time, required — The datetime when the charge was created
    - `updated_at` string, date-time, required — The datetime when the charge was last updateed

## Other responses

- `401` — The user is unauthenticated

---

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