Skip to main content
O Pagozz permite criar produtos de assinatura com cobrança automática. O modelo é composto por três entidades: Cycle (produto), Plan (plano de preço) e Subscription (assinatura do cliente).

Estrutura

Cycle (produto)
├── Plan A (R$ 29,90/mês)
├── Plan B (R$ 59,90/mês)
└── Plan C (R$ 99,90/mês)
    └── Subscription (cliente X)
        ├── Invoice #1 (pago)
        ├── Invoice #2 (pago)
        └── Invoice #3 (aberto)

Cycle (produto)

Um Cycle é o template do produto recorrente. Define intervalo de cobrança, trial, taxa de setup e configurações de checkout.
CampoDescrição
nameNome do produto
intervaldaily, weekly, monthly, quarterly, semiannual, annual
interval_countMultiplicador (ex: 2 = a cada 2 meses)
trial_daysDias de trial grátis (0 = sem trial)
setup_feeTaxa única de adesão (centavos)
billing_cyclesLimite de cobranças (null = ilimitado)
grace_period_daysDias de tolerância para pagamento (padrão: 3)
checkout_enabledHabilita checkout público
payment_methodsMétodos aceitos (pix, credit_card)

Plan (plano de preço)

Cada Cycle pode ter múltiplos Plans. Um Plan define o valor da cobrança.
CampoDescrição
nameNome do plano (ex: “Starter”, “Pro”)
amountValor por período (centavos)
sort_orderOrdem de exibição no checkout
is_activeDisponível para novas assinaturas

Subscription (assinatura)

Quando um cliente assina, uma Subscription é criada vinculando o cliente a um Cycle/Plan.

Ciclo de vida

                  ┌─── trial_end ───┐
                  ↓                 ↓
trialing ──→ active ──→ past_due ──→ suspended
                │                       ↑
                │                  (3 retries)

           cancel_at_period_end


             canceled
StatusDescrição
trialingEm período de trial (sem cobrança)
activeAssinatura ativa com cobranças em dia
past_duePagamento atrasado (em retry automático)
suspendedSuspensa após falha nas retentativas
canceledCancelada pelo merchant
expiredLimite de cobranças atingido

Cancelamento suave

O cancelamento usa cancel_at_period_end: a assinatura continua ativa até o final do período atual, sem gerar nova cobrança.

Invoice (fatura)

Cada período de cobrança gera uma Invoice. A invoice controla o status do pagamento.

Ciclo de vida

draft → open → paid

       past_due → uncollectible
StatusDescrição
draftRascunho (antes do processamento)
openCobrança emitida, aguardando pagamento
paidPago com sucesso
past_dueVencida
uncollectibleFalha após 3 tentativas de cobrança

Composição do valor

total_amount = amount + setup_fee - credit_applied
CampoDescrição
amountValor do plano
setup_feeTaxa de adesão (apenas na 1a fatura)
credit_appliedCrédito do cliente aplicado
total_amountValor final cobrado

Cobrança automática

O Pagozz executa dois processos automáticos a cada hora:

Billing (criação de faturas)

Quando next_billing_at chega:
  1. Trial terminou? → Transiciona para active, gera 1a fatura
  2. Limite atingido? → Transiciona para expired
  3. Cancelamento agendado? → Transiciona para canceled
  4. Período normal: → Gera nova fatura, processa pagamento, avança período

Dunning (retentativas)

Quando uma fatura vence sem pagamento:
TentativaQuandoAção
1No vencimentoMarca como past_due
2+3 diasRetenta cobrança
3+5 diasRetenta cobrança
4+7 diasÚltima tentativa
Após 4Marca como uncollectible, suspende assinatura

Eventos de webhook

EventoDescrição
subscription.createdNova assinatura criada
subscription.activatedTrial terminou, assinatura ativada
subscription.past_duePagamento atrasado
subscription.suspendedSuspensa por inadimplência
subscription.canceledCancelada
subscription.expiredLimite de cobranças atingido
invoice.createdNova fatura gerada
invoice.past_dueFatura vencida
invoice.uncollectibleFatura irrecuperável

Checkout público

Habilite checkout_enabled no Cycle para gerar uma URL pública de checkout. O pagador escolhe o plano, informa email e realiza o pagamento. A URL segue o formato checkout.pagozz.com/{env}_{token}, igual aos links de pagamento. Para pré-selecionar um plano, use o parâmetro ?plan={plan_id}.