billing

Reprovision Subscription

Replace an organization's TERMINAL Stripe subscription. Admin-only.

This is the production entry point for billing_service's replacement branch, and the ONLY one. That branch exists because a subscription can be cancelled in Stripe inside a Postgres transaction that then rolls back (org_invite_service's shell release): the restored row points at a subscription Stripe has already killed, the webhook writes canceled, and the gate blocks the customer out of their own workspace with no way back — nothing else in the system ever replaces a subscription id once written.

Why a route, and not something the gate does by itself: provisioning cannot tell a stranded cancel from a customer's own Portal cancellation — the row looks identical. Self-healing from canceled would therefore answer a deliberate cancellation with a silent fresh trial, which is a product decision, not a bug fix. An explicit call by an org admin cannot be confused with that: somebody asked.

Why an admin, and not staff: billing is already an org-admin surface (require_org_admin, the same dependency portal-session uses), and the admin is the person who can see the org is stuck.

409, never 200, for a healthy subscription — and Stripe is not called at all in that case. "Reprovision" must never mean "start a second subscription for an org that already has a working one."

post/v1/billing/reprovision

Request

  • Base URL
    https://api.evidenso.com (the document declares no server; this is the origin it was published from)
  • Auth
    HTTP bearer

Response

Successful Response

organization_idstring required
billing_statusstring nullable
stripe_subscription_idstring nullable

Changes

No recorded changes to this operation across all 1 revision of this API.