---
title: "Create Subscription"
method: POST
path: "/billing/subscription/create"
tags: ["billing"]
---

# Create Subscription

`POST /billing/subscription/create`

## 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/create`
- Auth: OAuth 2
  - Password
  - Token URL: `auth/token`

Create a new subscription checkout session.

No pre-existing Stripe Price object is required — the Checkout Session
is built with inline ``price_data`` (see ``StripeClient.
create_subscription_checkout_session``), the same approach already used
for one-time PAYG purchases.

Currency is resolved SERVER-SIDE from the caller's brand (never from the
request body, which has no currency field at all) so the amount shown on
the pricing page and the amount Stripe charges can never diverge.

## Request body

- CreateSubscriptionRequest: Request to create a subscription
  - `payment_plan_id` string, uuid, required
  - `success_url` string, required
  - `cancel_url` string, required
  - `seats` integer

## Response `200`

Successful Response

- CreateSubscriptionResponse: Response after creating subscription checkout session
  - `checkout_url` string, required
  - `session_id` string, required

## 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)
