Skip to main content
Fluxo para SaaS e planos mensais: você cadastra o plano uma vez, assina o cliente e a Upag gera uma fatura a cada período e cobra pelo método da assinatura. Você acompanha tudo por webhooks.
Os exemplos usam o sandbox (https://api.upag.dev/v1) com sk_test_…. Em produção use https://api.upag.io/v1 com sk_live_….

1. Criar produto e preço recorrente

Valores em centavos (mínimo 100). A resposta de Criar produto traz só o produto; o preço é lido em Listar preços. Se preferir, crie o produto sem defaultPrice e use Criar preço, que devolve o preço direto.

2. Criar o cliente

3. Criar a assinatura

Escolha o método de cobrança. Os dois dependem do cliente do passo 2.

Pix

Não precisa de nada além do cliente e do preço. A assinatura nasce incomplete e vira active quando o cliente paga a fatura do primeiro período.
Para pegar o QR code do primeiro período, liste as faturas do cliente (status=open), ache a de subscription igual ao ID e leia a cobrança em payments[].charge (Obter cobrança). Nas renovações, cada fatura nova traz um QR code com vencimento de 3 dias.

Cartão

POST /subscriptions com paymentMethod: "card" exige um cartão ativo que já pertença ao cliente. Um cartão recém-tokenizado (Criar cartão) não pertence a ninguém; ele passa a ser do cliente quando é usado numa cobrança de cartão do cliente (Criar cobrança) ou numa confirmação de checkout. Usá-lo antes disso devolve 404 SUBSCRIPTION_CARD_NOT_FOUND. Por isso, para o primeiro cartão de um cliente, o caminho é o checkout: crie um link de pagamento com o preço recorrente e deixe o pagador confirmar com o cartão. A confirmação cria a fatura, cobra, vincula o cartão ao cliente e cria a assinatura. Depois disso o cartão fica na conta do cliente:
Node.js SDK
e pode ser usado em novas assinaturas:
Com cartão aprovado, a resposta já volta active. Se o cartão for recusado, a criação não falha: a assinatura fica incomplete. Todos os campos e erros: Criar assinatura.

4. Acompanhar por webhook

Valide a assinatura do webhook (upag.webhooks.validateSignature sobre o corpo cru, veja Segurança) e reaja aos eventos:
Node.js SDK
Payloads: assinatura e fatura.

Renovações

A cada período a Upag cria a fatura e cobra: no cartão, à vista, e no Pix, com um novo QR code de 3 dias. Se a cobrança falhar, a assinatura vai para past_due e novas tentativas são feitas. Para ver o valor da próxima fatura antes de ela existir, use Fatura futura:
Node.js SDK

Mudar itens

Adicionar, alterar ou remover itens não gera fatura nem proporcional. Com applyAt: 'now' a mudança vale já; com 'period_end' ela fica agendada e é aplicada na renovação.
Node.js SDK
Veja Criar item, Atualizar item, Remover item e as mudanças agendadas.

Cancelar

Por padrão o cancelamento é imediato. Para manter o acesso até o fim do período já pago, use atPeriodEnd:
Cancelar não reembolsa faturas já pagas. Detalhes em Cancelar assinatura. Para dar um período grátis antes da primeira cobrança, veja Teste grátis.