Assinaturas

Referência

Assinaturas automatizam cobranças recorrentes para o mesmo cliente, eliminando a necessidade de criar manualmente uma nova cobrança a cada período. Este guia explica como elas funcionam na ValidaPay, como são criadas e o que a API permite fazer depois da criação.

Não existe rota para criar assinatura

A ValidaPay não possui POST /v1/subscriptions. Uma assinatura nasce quando um checkout com produto recorrente (recurrenceType diferente de ONE_TIME) é pago com sucesso. As rotas em Assinaturas servem para consultar e gerenciar assinaturas já existentes.

Uma assinatura na ValidaPay não é simplesmente um agendamento de cobranças.

É o histórico completo do relacionamento com o cliente.

Quando utilizar

Use assinaturas quando sua integração precisa cobrar o mesmo cliente em intervalos regulares, mantendo histórico de ciclos, planos e pagamentos em um único relacionamento.

  • Mensalidades de academias, escolas, clubes e associações
  • Planos SaaS com cobrança mensal, trimestral ou anual
  • Serviços recorrentes — manutenção, suporte, licenças e memberships
  • Marketplaces e plataformas com receita periódica do mesmo cliente

Pré-requisitos

Antes de ter assinaturas ativas na sua integração, certifique-se de:

Principais parâmetros

Alguns campos influenciam diretamente o comportamento da recorrência. A referência completa de cada rota está nas páginas da API; aqui estão os que mais impactam integrações.

CampoImpacto na recorrência
subscriptionIdIdentificador usado em todas as rotas de consulta e alteração
statusEstado atual da assinatura — ACTIVE, PAST_DUE, CANCELED, etc.
interval / recurrenceTypePeriodicidade do plano — MONTHLY, YEARLY e demais tipos recorrentes
paymentTypeMétodo de cobrança da assinatura — cartão, PIX ou boleto
nextCycleChargeDateData prevista da próxima cobrança recorrente
nextCycleAmountValor estimado do próximo ciclo, já considerando itens ativos
billingCycles[]Histórico de ciclos com invoices e charges de cada período
items[]Planos e add-ons vinculados — recorrentes (RECURRING) ou avulsos (ONE_TIME)

Consulte Buscar Assinatura para ver billingCycles, upgrades e priceSchedulePreview no detalhe.

Assinatura recorrente, item avulso e parcelamento

Embora todos envolvam pagamentos ao longo do tempo, os comportamentos são diferentes. Confundir esses modelos é uma das causas mais comuns de integração incorreta.

RecorrenteONE_TIMEParcelamento (cartão)
O que éRelacionamento contínuo; novas cobranças surgem a cada cicloItem ou produto cobrado uma única vez, sem renovaçãoCompra parcelada no cartão — valor total dividido em parcelas fixas
Como nasceCheckout pago com produto recorrente → assinatura criada automaticamenteAdd item ONE_TIME em assinatura existente ou produto avulso no checkoutCheckout com parcelamento no cartão — não gera assinatura recorrente
Cobranças futurasGeradas automaticamente conforme a periodicidadeNenhuma — após o pagamento, o item fica como CHARGEDTodas as parcelas criadas na compra; sem novos ciclos automáticos
API de assinaturasConsulta, upgrade, downgrade, cancelamento via /v1/subscriptionsPode aparecer como item; assinaturas só ONE_TIME são excluídas da listagemFora do módulo de assinaturas — trate como cobrança avulsa

Como uma assinatura é criada

1. Cadastrar produto

Preço com recurrenceType recorrente (MONTHLY, YEARLY, etc.)

2. Checkout

Cliente paga via Checkout Transparente ou Session

3. Pagamento aprovado

Primeira cobrança confirmada (cartão ou webhook)

4. Assinatura criada

Sistema gera subscriptionId e agenda os ciclos futuros

Fluxo das cobranças recorrentes

Após a criação, a ValidaPay gera novos ciclos automaticamente conforme a periodicidade do preço contratado. Você acompanha o próximo ciclo em nextCycleChargeDate ao consultar a assinatura.

Ciclo anterior encerra ou vence

Conforme nextCycleChargeDate

Nova charge gerada

Automaticamente pela ValidaPay

Cliente paga

Cartão, PIX ou boleto conforme paymentType

Webhook informa

subscription.renewed ou payment.success / payment.failed

A cobrança é o evento. A assinatura é a jornada.

Regras importantes

  • Novos ciclos de cobrança são gerados automaticamente conforme a periodicidade do preço contratado.
  • Alterar plano (upgrade/downgrade) impacta cobranças futuras; upgrade pode gerar cobrança de pro rata imediata.
  • Downgrade costuma ser agendado para o próximo ciclo (nextCycleChargeDate), sem cobrança imediata.
  • Cancelar assinatura (DELETE) impede novos ciclos, mas não remove cobranças ou faturas já emitidas.
  • Em PIX e boleto, a confirmação de pagamento chega via webhook — HTTP 200 não significa pagamento confirmado.
  • Assinaturas cujo intervalo é ONE_TIME são excluídas da listagem GET /v1/subscriptions.

Impactos operacionais

Como novas cobranças são geradas automaticamente ao longo do tempo, integrações que fazem sincronização, conciliação, emissão de NF ou relatórios devem considerar:

  • Novas charges podem surgir sem nova chamada de criação — a cada renovação de ciclo.
  • Integrações de conciliação, ERP e emissão de NF devem escutar webhooks, não apenas polling.
  • Uma assinatura pode acumular várias cobranças ao longo do tempo (ciclos, pro rata, add-ons).
  • Upgrades com PIX/boleto ficam pendentes até payment.success; o plano só troca após confirmação.

Por isso, recomendamos webhooks em vez de polling periódico para acompanhar o ciclo de vida.

Boas práticas

  • Cadastre webhooks antes de ir a produção — especialmente subscription.activated e payment.success.
  • Não assuma uma única cobrança por assinatura; cada ciclo gera novas charges e invoices.
  • Persista subscriptionId e checkoutId logo após o pagamento inicial para consultas futuras.
  • Use Calcular Pro Rata para simular upgrade antes de cobrar o cliente.
  • Separe a lógica de cartão (confirmação síncrona) de PIX/boleto (confirmação assíncrona).

Gestão no painel ValidaPay

Além da API, o painel oferece a tela de Detalhes da Assinatura — produto, cliente, ciclos, cobranças e faturas em um só lugar. O subscriptionId exibido no rodapé é o mesmo usado nas rotas da API.

Tela de detalhes da assinatura no painel ValidaPay

Produto e plano

Visualize o produto contratado, se é recorrente ou avulso, o plano ativo e o valor da mensalidade.

Dados do cliente

Consulte nome, documento, e-mail, telefone e endereço de cobrança vinculados à assinatura.

LTV (Lifetime Value)

Acompanhe o total já pago pelo cliente ao longo do relacionamento com sua empresa.

Ciclos de cobrança

Veja a mensalidade, o dia de cobrança, o ciclo atual e o intervalo (mensal, anual, etc.).

Histórico de cobranças

Navegue por cada ciclo com status (pago, pendente), datas de emissão, vencimento e pagamento — incluindo cobranças pró-rata.

Faturas e invoices

Consulte o andamento de cada fatura do ciclo, valores cobrados e situação de emissão por período.

O que a API de assinaturas permite

Consultar e gerenciar assinaturas já existentes: listar, buscar detalhes, upgrade/downgrade, adicionar itens, simular pro rata e cancelar.

OperaçãoDescrição
Listar AssinaturasConsultar assinaturas com filtros e paginação.
Buscar AssinaturaDetalhes completos: items, billingCycles, upgrades.
Calcular Pro RataSimular valor de troca de plano (não cobra).
Atualizar ItemUpgrade ou downgrade de plano (rota canônica PUT).
Atualizar Assinatura (Item)Upgrade/downgrade via PATCH (alternativo ao PUT).
Adicionar ItemIncluir add-ons ou itens ONE_TIME.
Cancelar ItemRemover um item mantendo a assinatura ativa.
Cancelar AssinaturaEncerrar assinatura e ciclos futuros (DELETE).

Pagamentos assíncronos (boleto e PIX)

Em upgrade, add item ou renovação com boleto/PIX, a API responde 200 com payment.transactionId (e link/QR quando aplicável). A confirmação efetiva chega via webhook — não trate o 200 como pagamento confirmado.

No checkout com cartão, o 1º pagamento dispara subscription.activated diretamente — payment.success não é enviado nesse fluxo.

Eventos webhook

Cadastre via POST /v1/users/webhooks ou no painel em Integração → Webhooks. Detalhes, sequências e payloads em Eventos Webhook.

subscription.createdsubscription.trialsubscription.activatedsubscription.renewedsubscription.canceledsubscription.cancel_scheduledsubscription.upgradedsubscription.item_addedsubscription.downgrade_scheduledcharge.createdpayment.successpayment.failed

Status da assinatura

StatusSignificado
PENDINGAssinatura criada, aguardando o primeiro pagamento.
AWAITING_PAYMENTCobrança emitida (boleto/PIX), aguardando pagamento do cliente.
ACTIVEAssinatura ativa com cobranças recorrentes em dia.
TRIALINGPeríodo de trial em andamento, sem cobrança ainda.
PAST_DUEPagamento do ciclo atual em atraso (cartão).
PAUSEDAssinatura pausada temporariamente.
CANCELEDAssinatura cancelada, sem novas cobranças.
INCOMPLETEAssinatura incompleta — fluxo de pagamento não finalizado.