Visão geral
O modelo de assinaturas é composto por três recursos empilhados:
Quando um cliente assina, um assinante é criado e o primeiro pagamento da assinatura é cobrado imediatamente. A partir daí, uma rotina diária gera e cobra o próximo pagamento sempre que a próxima data de cobrança do assinante vence.
Decisões a tomar de antemão
Antes de criar um plano, defina as quatro decisões a seguir. Elas ficam embutidas no plano e se aplicam a todos os assinantes.Frequência
Frequência
Escolha uma das cadências predefinidas. A rotina periódica usa esse valor para avançar a próxima data de cobrança após cada cobrança bem-sucedida.
Não existe
interval_count — não há como configurar “a cada 2 semanas” com um multiplicador personalizado. Escolha o valor predefinido mais próximo.Valor
Valor
amount é armazenado como uma string em centavos de BRL. "4990" significa R$ 49,90. O mesmo valor é cobrado em cada ciclo; não há rateio, período de teste ou campo de desconto no próprio plano.Vigência
Vigência
Defina
end_date com um carimbo ISO 8601 para parar de gerar novos pagamentos após esse ponto, ou deixe null para um plano perpétuo. Planos perpétuos continuam cobrando até que o assinante cancele.Métodos de pagamento
Métodos de pagamento
payment_methods é a lista de métodos que um assinante pode escolher na adesão. Valores aceitos: credit_card, boleto, pix. payment_methods_no_tax é um subconjunto em que o vendedor absorve a taxa do processador.A tarefa agendada de cobrança automática só repete tentativas automaticamente quando o assinante salvou um cartão na adesão (credit_card com save_card=true). Para pix ou boleto, o sistema cria o próximo pagamento da assinatura e envia um link de pagamento por e-mail.Sequência ponta a ponta
Etapa 1 — Criar um plano
Um plano pertence à conta unificada de um vendedor. Crie-o comPOST /subscriptions/seller/{seller_id}/plans/.
1
Autentique-se como o vendedor
Use um token JWT Bearer (veja o Início rápido) ou uma chave de API do vendedor. O
seller_id da rota deve ser o UUID de uma conta unificada que você pode gerenciar.2
Envie o corpo do plano
Obrigatórios:
name, description, amount, payment_methods, frequency. Opcionais: end_date, payment_methods_no_tax, notification_config.3
Guarde o id retornado
A resposta inclui o UUID do plano. Esse UUID é o único identificador que você precisa para a URL pública de adesão.
Etapa 2 — Encaminhar o plano para uma página pública
O ID do plano é suficiente para montar uma URL pública de adesão. A plataforma expõe dois endpoints sem autenticação para alimentar uma página hospedada:GET /subscriptions/plan/{plan_id}/— renderiza o cartão do plano (nome, valor, frequência, métodos aceitos, nome do vendedor).POST /subscriptions/plan/{plan_id}/subscribe/— envia a adesão.
https://seu-storefront/assinar/{plan_id}/. Envie esse link aos clientes por e-mail, WhatsApp ou pelo canal de aquisição que preferir. Não há um “token de checkout” opaco — o próprio UUID é a chave pública.
Etapa 3 — Cliente assina
Quando o cliente envia o formulário, sua página chamaPOST /subscriptions/plan/{plan_id}/subscribe/ com os dados de identidade e pagamento. O endpoint faz quatro coisas em uma única chamada:
- Valida o corpo. O
typeprecisa estar empayment_methodsdo plano. - Se
type=credit_cardesave_card=true, tokeniza o cartão no processador para que possa ser reutilizado em cada renovação. - Cria o assinante (situação
pending, próxima data de cobrança igual a agora). - Cria o primeiro pagamento da assinatura e cobra-o imediatamente pela conta unificada do vendedor.
paid e a próxima data de cobrança é avançada conforme a frequência do plano.
pix, o objeto payment contém também um bloco pix (QR code + expiração). Para boleto, contém um bloco boleto (URL + código de barras). Nos dois casos o pagamento começa como pending e só passa para paid quando o webhook do processador chega.
Etapa 4 — Acompanhar assinantes e pagamentos
Do lado do vendedor, dois endpoints de listagem cobrem a maior parte da visão operacional:GET .../plans/{plan_id}/subscribers/— todos os clientes vinculados a um plano.GET .../plans/{plan_id}/subscribers/{subscriber_id}/payments/— todas as cobranças de um cliente.
Situações do assinante
O campostatus do assinante é uma consolidação desnormalizada do último pagamento.
Situações do pagamento
Espelham as situações do assinante, mas no nível da cobrança individual:pending, paid, failed, overdue, canceled. O pagamento da assinatura é a fonte da verdade — a situação do assinante é derivada do último pagamento.
Etapa 5 — Cancelar
Existem dois caminhos de cancelamento; ambos colocam o assinante emcanceled, registram o momento do cancelamento e marcam todo pagamento pendente como canceled:
- Autenticado (lado do vendedor) —
POST /subscriptions/seller/{seller_id}/plans/{plan_id}/subscribers/{subscriber_id}/cancel/. Use a partir do seu painel. - Público (lado do cliente) —
POST /subscriptions/subscriber/{subscriber_id}/cancel/. O UUID do assinante é a única credencial; compartilhe o link de autoatendimento por e-mail se quiser que os clientes se cancelem sozinhos.
Internos da cobrança recorrente
A plataforma mantém as assinaturas em andamento por meio de quatro rotinas, cada uma agendada periodicamente.As quatro rotinas
O que acontece quando uma cobrança falha
- A rotina diária (ou uma passagem de retentativa) captura a recusa do processador.
- O pagamento é movido para
failedcom o motivo da falha preenchido. - O assinante é movido para
failed. - A próxima tentativa é agendada para
agora + intervalo(1, depois 3, depois 7 dias). - A rotina de retentativas seleciona o caso na próxima execução, incrementa o contador de tentativas e tenta novamente.
- Após o número máximo de retentativas sem sucesso, a próxima tentativa fica nula e o assinante permanece em
failedpara sempre.
Reconciliação por webhook para PIX / boleto
Quando o processador confirma um pagamentopix ou boleto, o ouvinte de webhooks chama a reconciliação de assinaturas. Essa rotina localiza os pagamentos da assinatura cuja transação corresponde e recalcula a situação de cada um. A recalculagem relê a situação subjacente da transação, mapeia para a situação do pagamento e, ao chegar em paid, registra a data de pagamento, dispara a notificação de sucesso e solicita ao assinante que recalcule sua própria situação.
Exemplo ponta a ponta
Um fluxo mínimo que cria um plano, exibe a URL pública de adesão e inspeciona o histórico de pagamentos do primeiro assinante.Armadilhas
Veja também
Criar plano
Requisição e resposta completas para
POST /subscriptions/seller/{seller_id}/plans/.Adesão pública
O endpoint único que transforma um visitante em assinante pagante.
Listar assinantes
Visão operacional de todos os clientes em um plano.
Listar pagamentos
Histórico de pagamentos por assinante com vínculos para a transação unificada.