> ## Documentation Index
> Fetch the complete documentation index at: https://docs.autorizou.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Trocar de Plano

> Move uma assinatura para outro plano. Upgrade cobra a diferença; downgrade vira crédito no próximo ciclo.

Migre um assinante para outra oferta recorrente (upgrade ou downgrade). O ciclo corrente fica intocado; o preço e a cadência novos valem a partir da próxima renovação, e a régua de preços **re-congela** na da oferta nova.

<ParamField path="id" type="string" required>
  O `id` (uuid) da assinatura.
</ParamField>

<ParamField body="offer_id" type="string" required>
  O `id` (uuid) da **oferta recorrente** de destino (do mesmo lojista). A oferta carrega a régua de preços e o intervalo novos. Oferta inexistente ou de outro lojista devolve **404**.
</ParamField>

<ParamField body="effective" type="string" default="next_cycle">
  Quando a troca vale:

  * `next_cycle` (padrão): o novo preço passa a valer na próxima renovação.
  * `immediate`: prorateia agora. **Upgrade** cobra a diferença na hora; **downgrade** gera crédito abatido do próximo ciclo.
</ParamField>

## Resposta

<ResponseField name="effective" type="string">`immediate` ou `next_cycle`.</ResponseField>
<ResponseField name="delta" type="integer">A diferença prorateada, em centavos (positiva no upgrade, negativa no downgrade).</ResponseField>
<ResponseField name="next_charge_at" type="string">A próxima cobrança (a cadência nova só anda a partir dela).</ResponseField>
<ResponseField name="next_charge_amount" type="integer">O valor do próximo ciclo, já no plano novo.</ResponseField>
<ResponseField name="proration_payment_id" type="string">O pagamento do upgrade imediato, se houver.</ResponseField>

```json Resposta 200 theme={null}
{
  "message": "Plano trocado. A mudança vale a partir da próxima renovação.",
  "data": {
    "id": "1e24d112-3a6d-4d13-a3f7-9366a232d35a",
    "plan_id": "a2b1...",
    "effective": "next_cycle",
    "delta": 0,
    "next_charge_at": "2026-09-18",
    "next_charge_amount": 9900,
    "interval": "monthly"
  }
}
```

<Warning>
  O preview e a execução do valor prorateado batem no centavo. Se o adquirente recusar a cobrança imediata do upgrade, a resposta é **422** e o plano **não** troca.
</Warning>

<Info>
  Trocar `monthly` → `quarterly` muda a cadência: a próxima renovação já cobra o novo preço, e a renovação seguinte anda três meses. O assinante nunca volta ao preço antigo depois da troca.
</Info>
