subscription-exists
HTTP 409 Conflict
POST /v1/billing/checkout não inicia um segundo checkout porque a organização já possui uma assinatura. A API primeiro consulta a Stripe sobre a assinatura armazenada: os status active, trialing, past_due, unpaid e paused contam como existentes. Se a assinatura armazenada não existir mais na Stripe ou tiver sido encerrada, a API remove a referência e o checkout prossegue.
O que fazer
Altere ou cancele o plano no portal de faturamento; GET /v1/billing/portal retorna o seu endereço. Além dos campos padrão, a resposta contém current_plan e subscription_status.
{ "type": "https://docs.qr3.app/errors/subscription-exists", "title": "Subscription already active", "status": 409, "detail": "This organization already has an active subscription. Manage or change it in the billing portal (GET /v1/billing/portal) instead of starting a new checkout.", "current_plan": "pro", "subscription_status": "active"}