staqlydocs
REST APIAPI referenceBilling

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.

POST
/v1/billing/checkout

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.

Authorization

headerAuthorizationBearer <token>

API key (stk_...), or in the Community Edition the access token (stk_local_...)

Header Parameters

Idempotency-Key?string

Replays 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.

Lengthlength <= 200

Request Body

application/json
  1. body
plan?string
Default"pro"
Value in"starter""plus""pro""business"
interval?string

year: billed yearly, twelve whole months at 20 % off or more

Default"month"
Value in"month""year"
return_to?"welcome"

welcome: Stripe sends the person back to the dashboard's welcome steps instead of the plan page

Value in"welcome"

Response Body

Checkout URL

application/json
  1. response
url*string
curl -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"}