Muda o valor das próximas cobranças trocando a assinatura de plano, sem novo cadastro do cartão e sem criar outra assinatura: o cartão salvo, o dia de cobrança, o externalRef e o histórico de faturas ficam. Para reajustar (ex.: R$ 1.000 → R$ 1.300), crie o plano com o valor novo e troque a assinatura para ele.
Quando vale: effectiveDate é o vencimento a partir do qual o plano novo é cobrado. Omitido = o próximo vencimento (nextDueDate). Pode ser um vencimento futuro da assinatura (até 36 à frente); data entre vencimentos é recusada e a mensagem traz o vencimento seguinte. A troca fica agendada (scheduledPlanChange na resposta, webhook subscription.plan_change_scheduled) e a Autra a aplica sozinha quando a fatura desse vencimento é gerada, 3 dias antes (subscription.plan_changed; planId da assinatura passa ao novo).
Fatura já gerada: a fatura do vencimento escolhido que já exista e ainda não tenha sido cobrada (SCHEDULED, sem tentativa) passa ao valor novo (invoice.updated). Fatura em cobrança, recusada aguardando nova tentativa ou paga não muda: a troca vale do vencimento seguinte em diante.
Regras do plano novo: do mesmo estabelecimento, ACTIVE, mesma periodicidade (o dia e o intervalo de cobrança são mantidos) e aceitando o meio de pagamento da assinatura. Reduções seguem a mesma rota. Trocar de novo antes da aplicação substitui o agendamento; pedir o plano atual desfaz a troca; repetir o mesmo pedido não grava nada. Não vale para assinatura cancelada, aguardando a adesão do cartão (PENDING_ENROLLMENT: troque depois de ativa) nem a partir do vencimento com cancelamento agendado. Enquanto a troca não é aplicada, a fatura do vencimento de início não é gerada nem cobrada no preço antigo.
Cobrança proporcional do restante do ciclo: POST .../charges (cobrança avulsa no mesmo cartão), independente desta troca.
Erros — corpo {"errors":[{"code":"...","msg":"..."}]}; msg detalha o campo quando é validação:
code | HTTP | Quando acontece | O que fazer |
|---|---|---|---|
INVALID_INPUT | 400 | planId ausente/inválido, effectiveDate fora do formato, antes do próximo vencimento, fora de um vencimento, a mais de 36 ciclos ou a partir de um cancelamento agendado; plano igual ao atual sem troca agendada. | Corrija o campo indicado. |
INVALID_JSON | 400 | Corpo não é um objeto JSON válido. | Corrija o JSON. |
MISSING_DOCUMENT_ID | 400 | Estabelecimento não informado. | Envie o header X-Merchant-Document (ou documentId). |
TENANT_REQUIRED | 400 | A credencial não identifica o tenant. | Gere o token com as credenciais do seu tenant (POST /v1/oauth/token). |
FEATURE_DISABLED | 403 | O módulo de assinaturas não está habilitado para o tenant. | Peça a habilitação à Autra. |
MERCHANT_NOT_FOUND | 404 | O documento não é de um estabelecimento do seu tenant. | Confira o CPF/CNPJ do estabelecimento. |
SUBSCRIPTION_NOT_FOUND | 404 | Assinatura não existe neste estabelecimento. | Confira o id. |
PLAN_NOT_FOUND | 404 | Plano novo não existe neste estabelecimento. | Confira o planId. |
INVALID_STATUS_TRANSITION | 409 | Assinatura cancelada. | Crie uma nova assinatura. |
PAYLOAD_TOO_LARGE | 413 | Corpo acima de 64 KiB. | Reduza o corpo da requisição. |
PLAN_NOT_COMPATIBLE | 422 | Plano novo arquivado, de outra periodicidade ou sem o meio de pagamento da assinatura; msg diz qual. | Use um plano compatível. |
INVALID_DOCUMENT | 422 | Documento do estabelecimento malformado. | CPF com 11 ou CNPJ com 14 dígitos, só números. |
INTERNAL_ERROR | 500 | Falha interna. | Tente de novo; persistindo, fale com o suporte com o horário da chamada. |
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
