Create a subscription change checkout link

Creates a checkout link for upgrading an existing subscription to a new plan. Only subscriptions in a `active`, `trialing`, or `cancelled` (still within paid period before expiration) state are eligible for upgrades.

POST
/sdk/subscriptions/{subscriptionId}/change-checkout-links
x-stash-hmac-signature<token>

Versioned HMAC-SHA256 signature authenticating server-to-server SDK requests (your backend calling Stash), as opposed to client-side SDK operations. Recommended over the deprecated X-Stash-Api-Key for the best security. Header format: v1;{appId};{unixMillisTimestamp};{base64Signature} (semicolon-delimited). {base64Signature} is the base64-encoded HMAC-SHA256 of the string {unixMillisTimestamp}.{requestBody} using your app ingress secret (the ingress secret is shown base64-encoded in Studio; base64-decode it to the raw bytes used as the HMAC key), where {requestBody} is the compact canonical request JSON for POST requests and empty for GET requests. The timestamp must be within 5 minutes of Stash server time. Your appId is your immutable app identifier, shown in Stash Studio under Project Settings > App details; your ingress secret is under Project Settings > API Secrets.

In: header

Path Parameters

subscriptionIdstring

ID of the subscription to modify

newPlan?string

New plan ID or code for upgrade. At least one of new_plan or update_payment_method must be set.

updatePaymentMethod?boolean

If true, the user must provide a new payment method during checkout

referenceId?string

Optional client reference ID for tracking

metadata?object

Optional custom key-value metadata

Empty Object

billingAnchor?string

Optional new billing anchor timestamp. If set, resets the billing cycle to start from this time. Must be within the current billing period.

Formatdate-time
initialPayment?pie.sdk.checkout_links.InitialPayment

Optional override for the upgrade charge. When set, our default proration calculation is skipped.

paymentMethod?string

Optional preferred payment method (e.g. card, google_pay, apple_pay, paypal)

Response Body

curl -X POST "https://test-api.stash.gg/sdk/subscriptions/string/change-checkout-links" \  -H "Content-Type: application/json" \  -d '{}'
{
  "id": "string",
  "url": "string"
}
{
  "code": 0,
  "message": "string",
  "details": [
    {
      "@type": "string",
      "property1": null,
      "property2": null
    }
  ]
}

How is this guide?