---
title: "Reprovision Subscription"
method: POST
path: "/v1/billing/reprovision"
tags: ["billing"]
---

# Reprovision Subscription

`POST /v1/billing/reprovision`

## Request

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

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

## Response `200`

Successful Response

- ReprovisionResponse
  - `organization_id` string, required
  - `billing_status` string, nullable
  - `stripe_subscription_id` string, nullable

---

[API](https://skmtc.dev/evidenso/apis/persona-rag-api.md) - [All operations](https://skmtc.dev/evidenso/apis/persona-rag-api/llms.txt) - [OpenAPI document](https://skmtc.dev/evidenso/apis/persona-rag-api/revisions/86408c178d4f?raw)
