Conceitos
O motor tem três camadas: produto (catálogo), plano (oferta) e assinatura (cliente vinculado a um plano). A fatura é derivada — o motor a gera sozinho a cada ciclo.
Produto
Seção intitulada “Produto”O catálogo puro: nome + preço mensal. Nada mais mora aqui — período, parcelamento e desconto são decisões de cada plano.
- Preço fixo: o valor mensal está cadastrado no produto (
pricing.monthlyPriceCents). - Preço variável: o produto não tem preço de tabela — a cada ciclo o motor pergunta o valor ao seu endpoint (veja o guia).
O preço é sempre o mensal. Quem multiplica é o período do plano: um plano semestral cobra 6 × o mensal, numa fatura só. O tipo de preço (fixo/variável) não muda depois de criado, e produto nunca é apagado — arquivar bloqueia novas assinaturas e mantém as existentes faturando.
Cada produto pode ter um espelho no seu gateway (quando ele tem catálogo de produtos): criamos automaticamente ou vinculamos a um produto que já existe lá.
A oferta comercial — montada sem cliente nenhum:
| Campo | O que define |
|---|---|
periodMonths |
De quanto em quanto tempo nasce uma fatura (1, 3, 6 ou 12 meses) |
defaultPaymentMethod |
Cartão, Pix ou boleto — o padrão de quem assinar (cada assinatura pode mudar) |
maxInstallments |
Parcelamento máximo no cartão (1–12), independente do período |
commitmentCycles |
Fidelidade em ciclos — só registro; a tratativa de quebra é sua |
items[] |
Os produtos do plano |
items[].discounts[] |
A régua de desconto de cada produto |
Versões
Seção intitulada “Versões”Editar um plano (PUT /v1/plans/{id}, com a oferta completa de novo) cria uma versão nova: quem já assinou segue pinado na versão que assinou; só assinaturas novas pegam a nova. Para mudar as condições de um assinante, use POST /v1/subscriptions/{id}/customize — cria uma versão exclusiva daquela assinatura.
A régua de desconto
Seção intitulada “A régua de desconto”Cada produto do plano aceita múltiplas regras: percentual + faixa de ciclos (fromCycle até toCycle, ou sem toCycle = vale para sempre). Quando duas regras pegam o mesmo ciclo, a primeira da lista ganha — nada empilha.
Atenção à tradução de tempo: ciclo = fatura. Num plano semestral, “2 ciclos com desconto” significa 1 ano de desconto.
Produto variável não entra na régua — o valor já chega calculado do seu endpoint.
Assinatura
Seção intitulada “Assinatura”O vínculo cliente ⟷ plano, criado via API (POST /v1/subscriptions):
externalRef: o identificador do cliente no seu sistema. É a chave de tudo — nos webhooks e no endpoint de preço, devolvemos o seu ID, não o nosso.chargeDay: dia da cobrança, de 1 a 28. Padrão: o dia da criação da assinatura (criou dia 29, 30 ou 31? Vira 28 — todo mês tem dia 28, a âncora nunca desliza).paymentMethod: opcional — omitido, herda o padrão do plano.firstChargeDate: opcional — adia a primeira fatura para uma data futura. SemchargeDayjunto, o dia dela vira a âncora dos próximos ciclos.gatewayConnectionId: em qual gateway esta assinatura fatura — congelado na criação. Com um gateway só, é automático; com mais de um, a escolha é obrigatória (as opções estão emGET /v1/integration).
Cancelar (POST /v1/subscriptions/{id}/cancel) encerra de vez: a fatura do ciclo corrente segue o fluxo normal, nenhuma nova é gerada. A resposta informa se a fidelidade (commitmentCycles) foi cumprida.
O ciclo de vida da fatura
Seção intitulada “O ciclo de vida da fatura”A fatura vence no chargeDay. A geração acontece dias antes, com folga — é nessa janela que o preço variável é apurado e qualquer problema se resolve sem o seu assinante perceber.
draft → awaiting_value → ready → issued → paid | overdue| Estado | Significado |
|---|---|
draft |
Gerada; itens fixos calculados pela régua do plano |
awaiting_value |
Item variável sem resposta válida — fatura retida, você foi alertado |
ready |
Todos os valores congelados; pronta para emissão |
issued |
Cobrança avulsa criada no seu gateway |
paid |
Pagamento confirmado |
overdue |
Recusada ou vencida — se você tem a Recuperação, a régua assume daqui |
Duas garantias do fluxo: nada é registrado como issued antes do gateway confirmar a criação da cobrança, e o valor de um item variável fica congelado na fatura junto com a resposta crua do seu endpoint — dá para auditar depois.
Duas credenciais, nunca confundidas
Seção intitulada “Duas credenciais, nunca confundidas”| Credencial | Direção | Para quê |
|---|---|---|
API key (rk_…) |
você → motor | Autentica suas chamadas REST e MCP |
| Secret de integração | motor → você | Assina tudo que chamamos no seu sistema (preço, webhooks, eventos) |