Skip to main content

List memberships

GET /memberships

Requires the memberships:read permission. Returns memberships belonging to the authenticated organisation.

Authorization​

X-API-Key required

Parameters​

NameLocationTypeRequiredDefaultLimitsDescription
pagequeryintegerNo1min 1Page number
limitqueryintegerNo10min 1, max 100Results per page
memberIdquerystringNoRemyPass member _id, not the custom member number
membershipTypeIdquerystringNoMembership tier _id
statusquerypending, active, past_due, canceled, expired, refunded, failedNoExact stored membership status
paymentModequeryone_off, subscriptionNoMembership payment mode
updatedSincequerystring (date-time)NoInclusive ISO 8601 lower bound on updatedAt

Membership status and billing​

status is the stored RemyPass membership state, updated through payment webhooks. It is separate from pass status and is not a live Stripe subscription lookup. Scheduled cancellation keeps the existing status and sets cancelAtPeriodEnd to true.

Amounts use minor currency units. Dates and relationship IDs may be absent or null when unavailable. stripe contains account, customer and subscription IDs for reconciliation; paymentRecovery contains action-required, attempt-count, next-attempt and grace-period details. Checkout secrets, buyer information and internal metadata are excluded.

Request Examples​

curl -X GET "https://api.remypass.com/api/v1/public/memberships" \
  -H "Accept: application/json" \
  -H "X-API-Key: YOUR_API_KEY"

Use Case Examples​

List a member’s memberships with pagination​

curl -X GET "https://api.remypass.com/api/v1/public/memberships?memberId=507f1f77bcf86cd799439012&limit=25&page=1" \
-H "X-API-Key: YOUR_API_KEY"

Responses​

StatusDescription
200Success
400Invalid parameters
401Invalid API key
403Missing permission or plan access
429Rate limit exceeded.
500Server error

200 Response Example​

{
"success": true,
"message": "Success",
"data": [
{
"_id": "507f1f77bcf86cd799439011",
"member": "507f1f77bcf86cd799439012",
"membershipType": "507f1f77bcf86cd799439013",
"passInstance": "507f1f77bcf86cd799439014",
"status": "active",
"paymentMode": "subscription",
"amount": 25000,
"currency": "dkk",
"autoRenews": true,
"cancelAtPeriodEnd": true,
"currentPeriodStart": "2026-10-01T00:00:00.000Z",
"currentPeriodEnd": "2026-11-01T00:00:00.000Z",
"expiresAt": "2026-11-01T23:59:59.999Z",
"activatedAt": "2026-01-01T12:00:00.000Z",
"lastPaymentAt": "2026-10-01T00:00:00.000Z",
"cancellationRequestedAt": "2026-10-06T12:00:00.000Z",
"createdAt": "2026-01-01T12:00:00.000Z",
"updatedAt": "2026-10-06T12:00:00.000Z",
"stripe": {
"accountId": "acct_example",
"customerId": "cus_example",
"subscriptionId": "sub_example"
},
"paymentRecovery": {
"actionRequired": false,
"attemptCount": 0,
"nextPaymentAttempt": null,
"gracePeriodEndsAt": null
}
}
],
"pagination": {
"currentPage": 1,
"totalPages": 1,
"totalItems": 1,
"itemsPerPage": 10,
"hasNextPage": false,
"hasPrevPage": false
}
}

Response Fields​

FieldTypeDescriptionAttributes
successboolean
dataarray of object
Show child attributes
  • _id: string
  • member: string
  • membershipType: string
  • passInstance: string
  • paymentMode: one_off, subscription
  • currency: string
  • status: pending, active, past_due, canceled, expired, refunded, failed — Stored RemyPass membership status, synchronised through payment webhooks; distinct from pass status and live Stripe subscription status
  • autoRenews: boolean
  • cancelAtPeriodEnd: boolean
  • amount: integer — Amount in minor currency units
  • currentPeriodStart: string (date-time)
  • currentPeriodEnd: string (date-time)
  • expiresAt: string (date-time)
  • activatedAt: string (date-time)
  • canceledAt: string (date-time)
  • lastPaymentAt: string (date-time)
  • lastPaymentFailedAt: string (date-time)
  • createdAt: string (date-time)
  • updatedAt: string (date-time)
  • cancellationRequestedAt: string (date-time)
  • stripe: object
    Show child attributes
    • accountId: string
    • customerId: string
    • subscriptionId: string
  • paymentRecovery: object
    Show child attributes
    • actionRequired: boolean
    • attemptCount: integer
    • nextPaymentAttempt: string (date-time)
    • gracePeriodEndsAt: string (date-time)
paginationobject
Show child attributes
  • currentPage: integer
  • totalPages: integer
  • totalItems: integer
  • itemsPerPage: integer
  • hasNextPage: boolean
  • hasPrevPage: boolean
messagestring