Pular para o conteúdo
tech

Grace Period e Dunning: O Que Todo SaaS Precisa Implementar

·6 min de leitura·3 visualizações

O Erro Mais Comum em SaaS de Billing

O pagamento do cliente falhou. O que seu sistema faz?

Se a resposta é "bloqueia o acesso imediatamente" — você está destruindo receita.

A grande maioria das falhas de pagamento são involuntárias: cartão expirado, limite temporário, problema no gateway. O cliente quer continuar pagando. Mas se você corta o acesso no primeiro segundo, a mensagem que ele recebe é: "você não importa".

Resultado? Churn. Suporte desnecessário. Receita perdida que nunca precisava ser perdida.


Como os Grandes SaaS Lidam com Isso

Fui estudar o que Spotify, Netflix, Slack e Notion fazem quando um pagamento falha:

EmpresaAbordagem
Spotify3-7 dias de acesso normal após falha no pagamento
Netflix3 avisos antes de suspender, ~7 dias de grace period
SlackDegrada features gradualmente (read-only) antes de cortar
Notion100% read-only por 30 dias antes de qualquer corte

O padrão é claro: ninguém corta no primeiro dia. Todos usam alguma combinação de:

  1. Grace period — acesso normal por X dias após a falha
  2. Degradação progressiva — features limitadas antes do bloqueio total
  3. Comunicação multicanal — email + in-app + WhatsApp/push
  4. Cancelamento só depois de muito tempo — 30+ dias

Isso tem nome: dunning. É o processo de recuperar pagamentos falhos antes que virem churn.


O Fluxo de Dunning Que Implementei

Depois de estudar esses exemplos, desenhei um fluxo de 4 fases para o Sistema Reino:

Fase 1: Grace Period (Dia 0-7)

O pagamento falhou, mas o acesso continua 100% normal. O cliente recebe:

  • Email no dia 0: "Houve um problema com seu pagamento"
  • WhatsApp no dia 1: mensagem empática + link/PIX pra pagar
  • Banner amarelo no sidebar: "Pagamento pendente — regularize em X dias"
  • Email no dia 3: lembrete com link de pagamento

O cliente nem percebe que algo mudou no sistema — só vê os avisos. Isso dá tempo pra resolver sem fricção.

Fase 2: Read-Only (Dia 7-14)

Se não pagou em 7 dias, o acesso degrada para somente leitura:

  • Pode consultar todos os dados normalmente
  • Não pode criar, editar ou deletar nada
  • Banner vermelho: "Acesso limitado — somente leitura"
  • Email + WhatsApp: "Seu acesso foi limitado, regularize"

Isso é poderoso porque o cliente vê seus dados ali, sabe que estão seguros, e sente urgência pra resolver. É muito diferente de um paywall que esconde tudo.

Fase 3: Bloqueio Total (Dia 14-30)

Agora sim, paywall. O cliente precisa pagar pra acessar qualquer coisa. Mas ainda recebe comunicação:

  • Email: "Acesso suspenso, seus dados estão seguros"
  • Página de paywall com opção de pagamento direto

Fase 4: Cancelamento Automático (Dia 30+)

Após 30 dias sem pagamento, a assinatura é cancelada automaticamente no gateway. Email final: "Sua assinatura foi cancelada. Volte quando quiser."

Isso faz a higiene da base — sem assinaturas zumbis penduradas indefinidamente.


A Cadência Completa

DiaCanalAcessoAção
0EmailNormal"Houve um problema"
1WhatsApp + PIXNormalMensagem empática
3Email + WhatsAppNormalLembrete
5EmailNormalUrgência
7Email + WhatsAppRead-only"Acesso limitado"
10EmailRead-onlyReforço
14EmailBloqueado"Acesso suspenso"
30EmailCancelado"Assinatura cancelada"

Diferenciação por Método de Pagamento

Um detalhe importante: a mensagem muda conforme o tipo de pagamento.

  • Cartão de crédito: "Parece que houve um problema com seu cartão. Atualize seus dados de pagamento."
  • PIX/Boleto: "Seu pagamento está pendente. Aqui está o código PIX atualizado."

Parece óbvio, mas muitos SaaS mandam a mesma mensagem genérica pra todo mundo.


Decisão Arquitetural: Calcule, Não Armazene

A tentação é criar um novo status tipo grace_period ou read_only no banco. Não faça isso.

O que fiz: mantive o status past_due (que o próprio gateway já envia) e calculo o nível de acesso dinamicamente baseado em quantos dias se passaram desde o início do dunning.

past_due + 0-7 dias    acesso normal (grace)
past_due + 7-14 dias   read-only
past_due + 14+ dias    bloqueado
past_due + 30+ dias    cancelado

Vantagens:

  • Zero estados novos — compatível com qualquer gateway (Stripe, Asaas, etc.)
  • Sem migrations complexas — só precisa de um campo dunning_started_at
  • Menos bugs — menos estados = menos transições = menos edge cases

Por Que Isso Importa: Os Números

Segundo a ProfitWell, 20-40% do churn em SaaS é involuntário — causado por falhas de pagamento, não por decisão do cliente.

Um fluxo de dunning bem implementado tipicamente recupera 50-70% desses pagamentos. Isso significa que se você tem 100 clientes inadimplentes por mês, está perdendo 50-70 deles desnecessariamente por não ter grace period.

A conta é simples: se seu ticket médio é R$50/mês e você perde 50 clientes/mês por involuntary churn, são R$2.500/mês de receita recuperável. R$30.000/ano. Só implementando um fluxo que leva um dia pra construir.


Checklist: Implemente Antes de Precisar

Se seu SaaS ainda não tem dunning, aqui vai o mínimo viável:

  • Grace period de 7 dias — não corte acesso imediatamente
  • Email no dia 0 — avise que o pagamento falhou
  • Banner in-app — impossível de ignorar
  • Diferenciação cartão vs. PIX/boleto — mensagem certa pro contexto certo
  • Read-only antes de bloquear — degrada, não mata
  • Cancelamento automático após 30 dias — higiene da base
  • Tracking — saiba quantos você recuperou vs. perdeu

O custo de implementar é baixo. O custo de não ter é perder clientes que queriam continuar pagando.


Pagamento falhou ≠ cliente quer sair. Trate inadimplência como um problema a resolver, não como uma sentença.

Quer aplicar isso no seu projeto?

Mentoria e consultoria em carreira, código e produtos digitais.

Falar com Billy
Billy

Billy

Full Stack Dev & Empreendedor Solo

Construindo produtos com código e IA. Criador do HubNews e Sistema Reino.

Compartilhar:XLinkedInWhatsApp