---
title: "Change Subscription Plan"
method: POST
path: "/billing/subscription/change-plan"
tags: ["billing"]
---

# Change Subscription Plan

`POST /billing/subscription/change-plan`

## Request

- Base URL: `https://api.threadchain.pro` (the document declares no server; this is the origin it was published from)
- URL: `https://api.threadchain.pro/billing/subscription/change-plan`
- Auth: OAuth 2
  - Password
  - Token URL: `auth/token`

Move an existing Stripe subscription to another plan.

- Higher plan or monthly-to-annual upgrade on the same tier: switches now;
  Stripe charges the prorated difference.
- Lower plan or annual-to-monthly cycle change: nothing is charged or
  refunded. They keep the current plan until the period ends and the new plan
  (and its price) starts at the renewal (``status="scheduled"``).

## Request body

- ChangeSubscriptionPlanRequest: Request to move an existing subscription to a different plan
  - `new_payment_plan_id` string, uuid, required
  - `prorate` boolean

## Response `200`

Successful Response

- ChangeSubscriptionPlanResponse: Response after changing a subscription's plan in-place
  - `status` string, required
  - `effective_at` string, date-time, nullable
  - `payment_plan_id` string, uuid, required
  - `checkout_url` string, nullable
  - `invoice_id` string, nullable
  - `amount_paid` integer, nullable
  - `amount_due` integer, nullable
  - `currency` string, nullable
  - `hosted_invoice_url` string, nullable
  - `message` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/threadchain/apis/threadchain-backend.md) - [All operations](https://skmtc.dev/threadchain/apis/threadchain-backend/llms.txt) - [OpenAPI document](https://skmtc.dev/threadchain/apis/threadchain-backend/revisions/8ee288a7e6bd?raw)
