Cancel a subscription
Cancel an active subscription now or at the end of its billing period.
Cancel an active subscription now or at the end of its billing period.
You can either:
- Schedule the cancellation for the end of the current billing period.
- Cancel immediately.
- Optionally refund the most recent payment when canceling immediately.
Note
Refund options are only supported for immediate cancellations. If you send cancel_at_period_end: true, you should not include refund flags.
Provide your SellApp API key as a bearer token.
In: header
Path Parameters
The subscription path parameter.
Header Parameters
Caller-generated key for safely retrying this operation. The JSON idempotency_key field is also accepted; when both are sent, the header takes precedence.
length <= 128Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://sell.app/api/v2/subscriptions/55/cancel" \ -H "X-STORE: launch-lab" \ -H "Content-Type: application/json" \ -d '{ "cancel_at_period_end": true, "idempotency_key": "design-kit-subscription-55-cancel-v1" }'{
"data": {
"id": 55,
"invoice_id": 9001,
"provider": "stripe",
"subscription_id": "sub_1QwertyExample",
"customer_id": "cus_Example123",
"customer_email": "natya.sadella@example.com",
"status": "ACTIVE",
"current_period_start": "2026-08-30T12:05:00.000000Z",
"current_period_end": "2026-09-30T12:05:00.000000Z",
"cancel_at_period_end": true,
"cancellation_in_progress": false,
"store_id": 1,
"product_variant_id": 4321,
"created_at": "2026-03-01T00:00:00.000000Z",
"updated_at": "2026-03-23T00:00:00.000000Z"
},
"message": "Subscription will be cancelled at the end of the current period."
}{
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request could not be understood.",
"status": 400,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#bad-request"
}{
"type": "authentication_error",
"code": "unauthenticated",
"message": "Unauthenticated.",
"status": 401,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}{
"type": "authorization_error",
"code": "forbidden",
"message": "This action is unauthorized.",
"status": 403,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#forbidden"
}{
"type": "not_found_error",
"code": "resource_not_found",
"message": "Not Found.",
"status": 404,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}{
"type": "validation_error",
"code": "validation_failed",
"message": "The selected product variant id is invalid.",
"status": 422,
"param": "product_variant_id",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#validation-failed",
"errors": {
"product_variant_id": [
"The selected product variant id is invalid."
]
}
}{
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Too Many Attempts.",
"status": 429,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}{
"type": "api_error",
"code": "api_error",
"message": "Server Error",
"status": 500,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#api-error"
}