Skip to main content

Get Subscriptions

Retrieve a list of subscriptions from your store.

Subscriptions are returned newest first. Each row carries the dates needed for common questions — "what's renewing next week?" / "which subscriptions are canceling right now?" — so you can answer them without fetching each subscription individually.

Request

GET /subscriptions

Query Parameters

ParameterTypeRequiredDefaultDescription
pageintegerNo1Page number for pagination
statusstringNoFilter by status. One of active, trialing, past_due, canceled, incomplete, incomplete_expired, unpaid.
customerstringNoFilter by customer (account holder) UUID.
productstringNoFilter by product UUID.
variantstringNoFilter by variant (price) UUID.
created_fromstringNoOnly subscriptions created on or after this date (inclusive), YYYY-MM-DD.
created_tostringNoOnly subscriptions created on or before this date (inclusive), YYYY-MM-DD.
canceled_fromstringNoOnly subscriptions canceled on or after this date (inclusive), YYYY-MM-DD.
canceled_tostringNoOnly subscriptions canceled on or before this date (inclusive), YYYY-MM-DD.
current_period_end_fromstringNoOnly subscriptions whose current period ends on or after this date (inclusive), YYYY-MM-DD. Useful for "what's renewing next week?".
current_period_end_tostringNoOnly subscriptions whose current period ends on or before this date (inclusive), YYYY-MM-DD.

Omitting a filter or passing it empty means "no filter on that field". Passing a non-empty but unparseable value — an unknown status, a malformed date, or a non-UUID customer / product / variant — returns a 400 (see Bad Request).

The list returns every subscription, including any that a customer has hidden from their own self-service portal.

Example Request — what's renewing next week?

curl -X GET "https://cart.easy.tools/api/v1/subscriptions?status=active&current_period_end_from=2026-06-01&current_period_end_to=2026-06-07" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Example Request — pending cancels (will end soon)

curl -X GET "https://cart.easy.tools/api/v1/subscriptions?status=active&canceled_from=2026-05-01" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Response

Success Response (200)

Returns a paginated list of subscriptions.

{
"items": [
{
"id": "550e8400-e29b-41d4-a716-446655440040",
"remote_id": "sub_1QabcDEFghiJKLmn",
"provider": "stripe",
"status": "active",
"variant_name": "Monthly Plan",
"product_name": "Premium Course",
"recurring_amount": 4900,
"currency": "pln",
"interval": "month",
"interval_count": 1,
"quantity": 1,
"customer_email": "buyer@example.com",
"current_period_end": "2026-06-20T14:02:00+00:00",
"cancel_at": null,
"canceled_at": null,
"created_at": "2026-01-15T10:00:00+00:00"
},
{
"id": "550e8400-e29b-41d4-a716-446655440041",
"remote_id": "sub_1QabcDEFghiJKLmo",
"provider": "stripe",
"status": "active",
"variant_name": "Annual Plan",
"product_name": "Premium Course",
"recurring_amount": 49000,
"currency": "pln",
"interval": "year",
"interval_count": 1,
"quantity": 1,
"customer_email": "another@example.com",
"current_period_end": "2026-06-05T09:00:00+00:00",
"cancel_at": "2026-06-05T09:00:00+00:00",
"canceled_at": "2026-05-21T16:45:00+00:00",
"created_at": "2025-06-05T09:00:00+00:00"
}
],
"pagination": {
"current_page": 1,
"total_pages": 4
}
}

Response Fields

FieldTypeNullableDescription
idstringNoUnique identifier for the subscription (UUID)
remote_idstringYesProvider's own subscription id (e.g. the Stripe subscription id)
providerstringNoPayment provider — currently always stripe
statusstringYesSubscription status. See the status table for values.
variant_namestringYesRelated variant (price) name
product_namestringYesProduct name
recurring_amountintegerYesRecurring charge in minor units (e.g. cents/grosze)
currencystringYesLowercase ISO currency code (e.g. "pln")
intervalstringYesBilling interval: day, week, month, or year
interval_countintegerYesNumber of intervals between renewals
quantityintegerNoQuantity of the variant
customer_emailstringYesCustomer email (the subscription's owner.email)
current_period_endstringYesEnd of the current paid period — the next renewal date when active (ISO 8601)
cancel_atstringYesWhen the subscription will end (set when a cancellation is pending or scheduled)
canceled_atstringYesWhen the cancellation was requested
created_atstringNoWhen the subscription was created (ISO 8601)

Error Responses

Bad Request (400)

Returned when a filter has a non-empty but unparseable value. The message names the offending field and the value received.

{
"message": "Invalid value for 'status': 'expred'"
}

Unauthorized (401)

{
"message": "Unauthenticated."
}