Start a Stripe Checkout session for a plan upgrade
billing
Start a Stripe Checkout session for a plan upgrade
Start a plan change and return the URL to send the browser to.
Body: {"plan": "core" | "pro"}
Returns: {"checkout_url": "..."} — a Stripe Checkout URL for an org with no
live subscription, or the billing page for an org whose EXISTING subscription
was modified in place. Changing the price on the live subscription is what
keeps a plan change to one subscription: opening a second Checkout session
for an org that already subscribes would leave it billed for both plans at
once. The response shape is identical either way, so clients keep doing
`location = checkout_url`.
400 carries the reason when we refuse the change — already on that plan, a
downgrade (use the portal), or a custom subscription.