Skip to main content
POST
Create a Stripe Checkout Session

Authorizations

Authorization
string
header
required

Clerk dashboard session JWT. Used on dashboard, billing, playground, and admin console routes only:

These are human-session credentials, not API keys. The dashboard frontend must never send authoritative account IDs, plan values, quota counters, Stripe IDs, or API-key actor fields — the server derives ownership from the session. Admin console routes additionally require the custom admin_role claim (admin or support) on the same verified session JWT; writes require admin.

Headers

X-Idempotency-Key
string
required

Required on Checkout creation. Stripe-style idempotency key; uniqueness is scoped to the account and the Stripe customer. See billing reference.

Required string length: 1 - 255

Body

application/json
plan
enum<string>
required

Self-service plans only. Basic/Enterprise → PLAN_NOT_SELF_SERVICE.

Available options:
Developer,
Growth,
Scale,
Business
interval
enum<string>
required

Annual billing changes payment cadence only. Request and explanation quotas remain MONTHLY.

Available options:
monthly,
annual

Response

Checkout URL.

checkout_url
string
required
expires_at
string<date-time> | null