Pay for a plan, or switch the subscription to another plan
Pay for a plan, or switch the subscription to another plan (account owner)
Every request sends Authorization: Bearer ...: the access token in local mode, an API key stk_... in cloud mode. Use Send to try it against your cloud instance with your API key.
Without a live subscription: returns a Stripe Checkout URL for the plan billed monthly or yearly;
open it in a browser to pay. Prices are per seat (the members) and exclude VAT (Stripe Tax adds it from
the billing address). Starter starts Stripe's 7-day trial with a card required (nothing is charged until
it ends; cancelled if no card is on file then), once per workspace; Plus, Pro and Business are charged at
once. Stripe redirects back to <PUBLIC_DASHBOARD_URL>/settings/plan?checkout=success (or the welcome
steps with return_to: welcome), and the plan changes when Stripe's webhook arrives. With billing on, a
new workspace has no plan (read-only, 402 plan_expired on writes) until a subscription starts.
With a live subscription: switches it to the plan and interval (Stripe prorates the difference) and
returns the dashboard's plan page URL (/settings/plan) with ?checkout=switched; the plan changes when Stripe's
customer.subscription.updated event arrives. 409 for the plan and interval it already has.
Allowed while suspended. 409 not_available when billing is off or that price is not set up.
AuthorizationBearer <token>API key (stk_...), or in the Community Edition the access token (stk_local_...)
Idempotency-Key?stringReplays the stored response when the same key is repeated with the same method, path,
query string and body within 24 hours (422 idempotency_mismatch with a different
request, 409 idempotency_in_progress while the first one runs). Not applied to
multipart uploads or to responses that carry a secret.
length <= 200application/json- body
plan?string"pro""starter""plus""pro""business"interval?stringyear: billed yearly, twelve whole months at 20 % off or more
"month""month""year"return_to?"welcome"welcome: Stripe sends the person back to the dashboard's welcome steps instead of the plan page
"welcome"Checkout URL
application/json- response
url*stringcurl -X POST 'https://staqly.example.com/v1/billing/checkout' \ -H 'Content-Type: application/json' \ -d '{}'{ "url": "https://checkout.stripe.com/c/pay/cs_test_a1b2c3"}