All routes use
authenticate("customer", ["session", "bearer"]). Ownership is validated against the authenticated customer’s actor_id.GET /store/customers/me/subscriptions
Returns the authenticated customer’s subscriptions with storefront summary data.Response
GET /store/customers/me/subscriptions/:id
Returns the full storefront-safe detail payload for one subscription.Path parameters
Subscription ID. Must belong to the authenticated customer.
Response
POST /store/customers/me/subscriptions/:id/pause
Pauses the customer’s subscription.Path parameters
Subscription ID.
Body parameters
Optional reason for the pause.
ISO datetime for when the pause takes effect. Optional.
Request example
POST /store/customers/me/subscriptions/:id/resume
Resumes a paused subscription.Path parameters
Subscription ID.
Body parameters
ISO datetime for when the subscription resumes. Optional.
When
true, keeps the original billing anchor date. Optional.Request example
POST /store/customers/me/subscriptions/:id/change-frequency
Schedules a cadence change for the subscription. The current variant stays unchanged. The new cadence is validated against active Plans & Offers.Path parameters
Subscription ID.
Body parameters
New billing interval. One of
week, month, or year.New billing cadence as a positive integer.
ISO datetime when the change becomes effective. Optional.
Request example
POST /store/customers/me/subscriptions/:id/change-address
Updates the subscription shipping address.Path parameters
Subscription ID.
Body parameters
First name.
Last name.
Primary address line.
City.
Postal or ZIP code.
Two-letter ISO country code.
Request example
POST /store/customers/me/subscriptions/:id/skip-next-delivery
Marks the next renewal cycle as skipped. No request body is required.Path parameters
Subscription ID.
POST /store/customers/me/subscriptions/:id/swap-product
Schedules a product or variant swap. The target variant must belong to the subscription product and be allowed by active Plans & Offers.Path parameters
Subscription ID.
Body parameters
Target variant ID.
Billing interval for the new variant. One of
week, month, or year.Billing cadence as a positive integer.
ISO datetime when the swap becomes effective. Optional.
Request example
POST /store/customers/me/subscriptions/:id/retry-payment
Runs a manual payment retry for a retry-eligible dunning recovery case.Path parameters
Subscription ID.
Body parameters
Optional reason for the manual retry.
Request example
Errors
| Code | Error | Meaning |
|---|---|---|
409 | conflict | No retry-eligible payment recovery case exists |
POST /store/customers/me/subscriptions/:id/cancellation
Starts a cancellation case for the subscription. Returns a minimal cancellation case payload rather than the full subscription detail.Path parameters
Subscription ID. Must belong to the authenticated customer.
Body parameters
Free-text churn reason.
Normalized reason category. One of
price, product_fit, delivery, billing, temporary_pause, switched_competitor, or other.Optional notes from the customer.
Request example