Visão Geral
O sistema de assinaturas da Garu permite criar produtos com cobrança recorrente. Com ele você pode:- Criar planos com intervalos flexíveis (diário, semanal, mensal, anual)
- Oferecer períodos de teste gratuito
- Processar pagamentos automaticamente via cartão de crédito
- Gerenciar retry automático em caso de falha
- Permitir que clientes gerenciem suas assinaturas via Portal
Apenas cartão de crédito suporta cobrança recorrente automática. PIX e Boleto requerem pagamento manual a cada ciclo.
Conceitos Principais
| Termo | Descrição |
|---|---|
| Produto | O item ou serviço que você vende (ex: “Plano Premium”) |
| Preço de Assinatura | Um plano de preço com intervalo e valor (ex: “Mensal R$ 49,90”) |
| Assinatura | O acordo de cobrança ativo entre você e um cliente |
| Período de Teste | Dias gratuitos antes da primeira cobrança |
| Ciclo de Cobrança | Intervalo recorrente das cobranças |
Intervalos de Cobrança
| Intervalo | Valor | Descrição |
|---|---|---|
| Diário | daily | Cobrança a cada dia |
| Semanal | weekly | Cobrança a cada 7 dias |
| Mensal | monthly | Cobrança no mesmo dia todo mês |
| Anual | annually | Cobrança uma vez por ano |
Ciclo de Vida da Assinatura
| Status | Descrição |
|---|---|
pending | Assinatura criada, aguardando primeiro pagamento |
active | Assinatura ativa e cobrando normalmente |
pending_cancellation | Cancelamento agendado para fim do período |
canceled | Assinatura encerrada |
failed | Pagamento falhou após todas as tentativas |
Passo a Passo: Criar uma Assinatura
1. Criar o Produto
Primeiro, crie um produto de assinatura. Apenas oname é obrigatório - defina isSubscription: true para indicar que é um produto de assinatura. Veja a API de Criação de Produtos para mais detalhes.
Para produtos de assinatura, o preço é definido nos preços de assinatura, não no produto. Por isso, não é necessário informar
value.2. Criar Preços de Assinatura
Crie um ou mais planos de preço para o produto. Consulte a API de Criação de Preços para todos os campos disponíveis.3. Obter o Link de Pagamento
Combine ouuid do produto com o id do preço para gerar o link de pagamento:
| Parâmetro | Origem | Exemplo |
|---|---|---|
product_uuid | Campo uuid do produto | c69c63d2-4207-4613-ad69-28e7e902544b |
price_id | Campo id do preço | price_gNgQVRrG5goab0Ql |
4. Cliente Realiza o Checkout
Quando o cliente acessa o link:- Preenche informações pessoais (nome, email, CPF/CNPJ)
- Insere dados do cartão de crédito
- Sistema valida e cria a assinatura
- Se houver período de teste, primeira cobrança é agendada
- Cliente recebe confirmação
Período de Teste (Trial)
O período de teste permite que clientes experimentem antes de pagar.Como Funciona
- Assinatura Criada: Status
activeimediatamente - Durante o Trial: Cliente tem acesso, sem cobranças
- Trial Termina: Primeira cobrança processada automaticamente
- Cobrança Continua: Ciclo normal de cobrança inicia
Exemplo de Timeline
Para um trial de 14 dias iniciando em 1º de janeiro:| Data | Evento |
|---|---|
| 1 Jan | Assinatura criada, trial inicia |
| 1-14 Jan | Período de teste (sem cobranças) |
| 15 Jan | Primeira cobrança de R$ 49,90 |
| 15 Fev | Segunda cobrança de R$ 49,90 |
| … | Continua mensalmente |
Lógica de Retry de Pagamento
Quando um pagamento falha, o sistema tenta novamente automaticamente.Estratégia de Retry
| Tentativa | Timing | Ação |
|---|---|---|
| 1 | Imediatamente | Primeira tentativa |
| 2 | +3 dias | Retry automático |
| 3 | +3 dias | Retry automático |
| 4 | +3 dias | Tentativa final |
| Falha | Após 4ª | Assinatura marcada como failed |
Motivos Comuns de Falha
| Motivo | Descrição |
|---|---|
insufficient_funds | Saldo insuficiente |
card_expired | Cartão expirado |
card_declined | Transação recusada pelo banco |
invalid_card | Número ou CVV inválido |
fraud_suspected | Detecção de fraude |
Cancelamento
Existem duas formas de cancelar uma assinatura. Veja a API de Cancelamento para mais detalhes, ou Pausar e Retomar para opções de pausa temporária.Cancelamento Imediato
Cliente perde acesso imediatamente:Cancelamento Agendado
Cliente mantém acesso até o fim do período:- Status muda para
pending_cancellation - Cliente mantém acesso até o período terminar
- Nenhuma cobrança adicional
- No fim do período, status muda para
canceled
Portal do Cliente
O Portal permite que assinantes gerenciem suas assinaturas de forma autônoma. Veja a API do Portal do Cliente para configurações avançadas e todos os endpoints disponíveis.Criando uma Sessão do Portal
URL do Portal
O que Clientes Podem Fazer
| Ação | Descrição |
|---|---|
| Cancelar assinatura | Encerrar a assinatura |
| Atualizar pagamento | Trocar cartão de crédito |
| Atualizar dados | Alterar informações de cobrança |
| Ver histórico | Consultar pagamentos anteriores |
| Pausar/Retomar | Pausar temporariamente a cobrança |
Webhooks de Assinatura
Configure webhooks para receber notificações em tempo real. Consulte a documentação de Webhooks para implementação completa e validação de assinatura.Eventos Disponíveis
| Evento | Descrição |
|---|---|
subscription.created | Nova assinatura criada |
subscription.activated | Assinatura ativada |
subscription.payment_success | Pagamento recorrente confirmado |
subscription.payment_failed | Pagamento falhou (pode haver retry) |
subscription.canceled | Assinatura cancelada |
subscription.trial_ending | Trial termina em 3 dias |
Exemplo de Payload
Exemplo Completo
Próximos Passos
Criar Preço
Crie planos de preço para assinaturas
Listar Assinaturas
Consulte todas as assinaturas
Detalhes da Assinatura
Consulte os detalhes de uma assinatura
Cancelar Assinatura
Cancele uma assinatura
Pausar/Retomar
Pause temporariamente as cobranças
Eventos
Histórico de eventos e pagamentos
Portal do Cliente
Configurar e usar o portal de autoatendimento
Webhooks
Receber notificações de eventos