Skip to main content
The subscriptions endpoints give you full control over individual subscription records. You can query the paginated list for DataTable views, fetch a full detail payload for a specific subscription, and trigger lifecycle mutations — pause, resume, cancel, schedule a future plan change, or update the shipping address snapshot. All routes require an authenticated Medusa Admin user.
All routes require an authenticated Medusa Admin user. Unauthenticated requests return 401.

Status values


GET /admin/subscriptions

Returns the paginated subscription list for Admin DataTable views.

Query parameters

number
Number of results per page. Defaults to 20.
number
Zero-based result offset for pagination.
string
Free-text search across customer name, email, and reference.
string
Field to sort by. Supported database-backed fields: created_at, updated_at, status, frequency_interval, frequency_value, next_renewal_at, trial_ends_at, skip_next_cycle. Supported in-memory fields: customer_name, customer_email, product_title, variant_title, discount_value.
string
Sort direction. One of asc or desc.
string | string[]
Filter by subscription status. Accepts a single value or an array.
string
Filter by customer ID.
string
Filter by product ID.
string
Filter by variant ID.
string
ISO datetime lower bound for next_renewal_at.
string
ISO datetime upper bound for next_renewal_at.
boolean
Filter to trial subscriptions only.
boolean
Filter by whether the next cycle is skipped.

Response

object[]
required
Array of subscription list items.
number
required
Total matching records.
number
required
Page size used.
number
required
Result offset used.
Response example

Errors


GET /admin/subscriptions/:id

Returns the full detail payload for a single subscription.

Path parameters

string
required
Subscription ID.

Response

Returns a subscription object with all list fields plus:
object
required
Response example

Errors


GET /admin/orders/:id/subscription-summary

Returns the lightweight subscription context used by the custom Subscription widget on the native Medusa order detail page.

Path parameters

string
required
Medusa order ID.

Response

boolean
required
Whether the order is linked to a subscription.
object | null
Subscription widget payload, or null for one-time orders.
When linked, summary.subscription includes:
  • id
  • reference
  • status
  • frequency_label
  • discount
  • next_renewal_at
  • effective_next_renewal_at
Response example
The discount field is derived from the subscription’s pricing_snapshot, not from Medusa’s built-in order summary rows.

POST /admin/subscriptions/:id/pause

Pauses an active subscription. All mutation routes return the refreshed full detail payload.

Path parameters

string
required
Subscription ID.

Body parameters

string
Optional reason for the pause.
string
ISO datetime for when the pause takes effect. Optional.
Request example

Errors


POST /admin/subscriptions/:id/resume

Resumes a paused subscription.

Path parameters

string
required
Subscription ID.

Body parameters

string
ISO datetime for when the subscription resumes. Optional.
boolean
When true, keeps the original billing anchor date. Optional.
Request example

Errors


POST /admin/subscriptions/:id/cancel

Cancels a subscription immediately or at end of cycle.

Path parameters

string
required
Subscription ID.

Body parameters

string
Optional cancellation reason.
string
When to apply the cancellation. One of immediately or end_of_cycle. Optional.
Request example

Errors


POST /admin/subscriptions/:id/schedule-plan-change

Stores a future plan or cadence update in pending_update_data. The change is applied at the next renewal or at the specified effective_at date.

Path parameters

string
required
Subscription ID.

Body parameters

string
required
Target variant ID for the plan change.
string
required
New billing interval. One of week, month, or year.
number
required
New billing cadence as a positive integer.
string
ISO datetime when the change becomes effective. Optional.
Request example
pending_update_data is returned inside the refreshed subscription detail payload after the change is scheduled.

Errors


POST /admin/subscriptions/:id/update-shipping-address

Updates the subscription shipping address snapshot used by Admin and future operational flows.

Path parameters

string
required
Subscription ID.

Body parameters

string
required
First name.
string
required
Last name.
string
required
Primary address line.
string
required
City.
string
required
Postal or ZIP code.
string
required
Two-letter ISO country code.
string
Company name. Optional.
string
Secondary address line. Optional.
string
Province or state. Optional.
string
Phone number. Optional.
Request example

Errors