Simular a troca de plano
Assinaturas
Simular a troca de plano
A mesma conta da troca, sem efeito nenhum — para mostrar o valor antes de o cliente confirmar.
POST
Simular a troca de plano
POST /subscriptions/:id/change-plan/preview
Faz parte do recurso Assinaturas — o conceito e os dez estados estão lá.
Roda a mesma conta de trocar o plano, sem efeito nenhum: nada é cobrado, agendado ou alterado. O corpo é idêntico ao da troca real.
Existe para uma coisa: a tela onde o cliente escolhe o plano poder mostrar o valor antes do botão de confirmar.
O que volta
netAmount é o que sairia de fatura agora, em centavos — o mesmo número que a troca real cobraria. Numa troca que seria agendada para a virada, ele é zero.
lines traz as duas pernas do rateio separadas: o crédito pelo que resta do plano atual e o débito do novo. Cada valor é positivo — o sinal está em kind, que vale credit ou debit. Some-as com o sinal e você chega no netAmount.
effectiveAt e effectiveDate dizem quando a troca valeria: agora, ou na virada do ciclo. É por aí que a sua tela decide entre “você será cobrado hoje” e “a mudança entra em DD/MM”.
isDowngrade diz se o destino é mais barato que o plano atual.
A simulação não pode divergir da execução. As duas usam o mesmo cálculo internamente — se o valor mostrado aqui não fosse o cobrado depois, a tela viraria mentira.
Recusa pelos mesmos motivos da troca real
Destino incompatível, assinatura em estado que não permite, rebaixamento pedido como imediato: tudo responde409 aqui também, com o mesmo motivo.
É o principal ganho de chamar a simulação: o erro aparece na hora de escolher o plano, não na de confirmar.
É
POST porque leva corpo, não porque muda algo. A rota é leitura pura, sem efeito colateral — chamá-la duas vezes com o mesmo corpo devolve o mesmo resultado, e ela não aceita Idempotency-Key por não precisar.Authorizations
API Key da Credential (gerada no Backoffice)
Path Parameters
ID da assinatura
Body
application/json
Plano de destino. Ausente ⇒ o destino é avulso e items é obrigatório.
Minimum string length:
1Itens do destino avulso (referência ou inline). Ignorado quando há planId.
- Option 1
- Option 2
Override de quantidade por componente do plano destino.
Quando a troca vale. Ausente ⇒ imediata para plano mais caro, na virada para mais barato. Pedir now num plano mais barato é recusado.
Available options:
now, period_end none troca agora sem cobrar a diferença (cortesia). Só vale com effectiveAt=now.
Available options:
create_prorations, none Response
Simulação da troca