Faturas, tentativas e assinaturas do billing
Coorte da primeira falha e janela de um ciclo
Recuperação, MRR em cobrança e fila priorizada
Fila do CS, health score e agente de IA
O que resolve
- Churn involuntário separado do voluntário, com a taxa de recuperação de cada mês.
- Uma fila diária de assinaturas com dinheiro preso, com motivo e próxima ação.
- Inadimplência na data de referência que bate com o financeiro.
Perguntas de negócio que responde
Faça estas perguntas ao seu agente quando o caso estiver pronto.
O que você precisa
- Billing conectado na Nekt com faturas, tentativas de pagamento e assinaturas
- A política de cobrança: quantas tentativas, quando bloqueia o acesso e quando cancela
- Os códigos de recusa do gateway mapeados para categorias com ação
O que você recebe
- Uma tabela de eventos de falha e recuperação, uma linha por tentativa
- Taxa de recuperação mensal por coorte, com a maturidade de cada mês
- Fila diária de cobrança por assinatura, priorizada
- Um agente de IA que responde quem deve, quanto e desde quando
Onde ativar
Lista diária de assinaturas com dinheiro preso, com motivo, dias e link da fatura, priorizada por MRR.
Fatura vencida em aberto entra como sinal declarado de risco, ao lado de uso e suporte.
Responde quem está inadimplente, há quantos dias e quanto MRR está em cobrança, com a foto da data de referência.
Os objetos do billing já trazem quase tudo. O trabalho é usar o grão certo para cada pergunta e guardar o estado de bloqueio e de régua, que o billing sobrescreve. O detalhado traz as regras de negócio, as armadilhas e o teste de aceitação. Ou mande tudo direto para o seu agente com o MCP da Nekt.
Cada tentativa de cartão recusada vira uma linha, e a mesma fatura pode ter várias antes de ser paga. Quem conta linhas multiplica a inadimplência; quem olha só o status atual não vê a fatura que falhou e foi paga dias depois, nem a que foi anulada no cancelamento. O resultado é churn involuntário misturado com voluntário e um CS que descobre a falha quando o cliente já saiu.
Como costuma ser feito, e a regra
Cada linha é um erro que já aconteceu na prática.
Guarde as tentativas numa tabela de eventos, uma linha por tentativa, com data, motivo e gateway. Inadimplência, recuperação e fila contam no grão da fatura ou da assinatura. Retentativa automática, segunda via e reemissão são a mesma dívida.
A coorte do mês são as assinaturas com pelo menos uma falha no mês, ancoradas na primeira falha do mês. Recuperada é a que teve um pagamento com sucesso dentro de um ciclo de cobrança a partir dela: cerca de 30 dias no mensal, 90 no trimestral, um ano no anual. Todas as periodicidades entram, cada uma com a sua janela. Numa base real, a recuperação dos meses fechados ficava perto de metade.
Nos meses recentes, a janela de um ciclo ainda está aberta. Marque o mês como maturando até a janela fechar (no mensal, fim do mês mais 31 dias) e nunca leia a taxa baixa de um mês aberto como piora. Uma leitura semanal com janela curta é outro indicador e não se compara com a mensal.
Normalize os códigos de recusa de cada gateway numa tabela única, com categoria e se vale tentar de novo. Número, CVC ou validade inválidos (incorrect_number, incorrect_cvc, invalid_expiry_month, invalid_expiry_year no Stripe) pedem cartão novo; recusa genérica do emissor ou saldo insuficiente pedem nova tentativa ou lembrete. Códigos que chegam com e sem zero à esquerda são o mesmo. Código fora da tabela aparece como não mapeado, nunca como outro, e alguém revisa toda semana.
Entram as assinaturas vivas com fatura em aberto vencida e sem nova tentativa agendada pelo billing (next_payment_attempt vazio no Stripe), e as canceladas pelo billing nos últimos 30 dias cuja última tentativa falhou e nada foi pago depois. Enquanto o billing ainda está tentando, ele mesmo manda o aviso: não duplique o contato. A fila é uma foto, então confira a fatura ao vivo antes de cobrar.
Uma régua simples funciona: até 14 dias da falha, recuperar agora; cartão inválido, pedir cartão novo; até 60 dias, reenviar a cobrança com o link da fatura; depois disso, perda provável. Conte os dias pelo vencimento da fatura em aberto mais antiga, não pelo último pagamento, que inclui o ciclo já pago. Ordene por MRR dentro de cada prioridade.
Inadimplente é quem tem cobrança não cancelada vencida e não paga na data de referência: fim do mês nos meses fechados, hoje no mês corrente. Vencida hoje ainda não conta. Não há carência: um dia de atraso já conta, e a gravidade vem da faixa de dias. Ter atrasado em algum momento do mês é outra métrica, só histórica. Inadimplente não é inativo: o cliente segue na base até o cancelamento.
Assinatura past_due continua no MRR marcada como em cobrança até virar canceled ou unpaid. Tirar e devolver quando é paga cria churn e reativação que não aconteceram. Se a empresa decide tirar depois de uma carência (por exemplo, 7 dias), a regra é escrita e igual em todos os meses.
Cancelamento feito pelo billing, ou pelo time por política de inadimplência, depois de falhas sem pagamento é churn involuntário. Declare o churn só depois da janela de recuperação, com o valor do MRR antes da falha. Uma política comum é desligar quem tem dois ou mais títulos vencidos, com o mais antigo há mais de 60 dias.
Billing e produto guardam só se o cliente está bloqueado agora. Grave os eventos de bloqueio e desbloqueio, por webhook ou foto diária, para saber quanto tempo cada cliente ficou bloqueado e se pagou depois. Bloquear após um prazo é decisão operacional, não automática: não deduza bloqueio dos dias de atraso.
Fila de cobrança: prioridade e ação
Dias contados a partir do vencimento da fatura em aberto mais antiga da assinatura.
Definições
Armadilhas que já aconteceram
Um painel contava as linhas da tabela de recusas, e a mesma venda aparecia uma vez por retentativa. A inadimplência parecia várias vezes maior que a real.
Conte faturas e assinaturas; tentativas só como eventos.
A recuperação do mês corrente aparecia bem abaixo da média e virou alarme, mas a janela de um ciclo daquele mês ainda estava aberta.
Grave a maturidade na linha e compare só meses fechados.
A visão de clientes só mostrava contas com MRR. A assinatura cancelada pelo billing por falta de pagamento saía da lista justamente na janela em que ainda dava para recuperar.
Mantenha na fila as canceladas pelo billing nos últimos 30 dias.
No cancelamento, o billing anulou a fatura em aberto. O valor em aberto ficou zero, o lembrete não fazia sentido, e o caso foi descartado como sem dívida.
Valor em aberto zero é válido nesse caso: aborde com reativação, não com lembrete.
Uma coluna de atraso em algum momento do mês era usada como status atual e marcava como inadimplente quem já tinha pago.
Use a foto na data de referência e rotule a outra como histórica.
A taxa mensal rodava num horário fixo e às vezes lia a versão de ontem da tabela de eventos, ou recalculava em cima de uma carga que tinha falhado.
Dispare depois da carga, por evento, e grave na linha a falha mais recente que a fonte tinha.
Teste de aceitação
O caso está pronto quando todos os itens passam.
- Cada assinatura aparece no máximo uma vez na coorte de falha de cada mês.
- Recuperadas + não recuperadas = coorte, e nenhum mês com janela aberta aparece como fechado.
- O valor em aberto da fila bate com a soma das faturas abertas no billing para as mesmas assinaturas (diferença abaixo de 1%).
- Nenhuma assinatura com nova tentativa agendada pelo billing está na fila.
- A inadimplência de um mês fechado não muda ao rodar o pipeline de novo.
Pacote para o agente
Cole no Claude, ChatGPT ou outro cliente com o MCP da Nekt conectado.
Inadimplência e dunning - Tentativa de pagamento é evento. Inadimplência, recuperação e fila contam por fatura ou assinatura, nunca por tentativa. - Coorte de falha do mês = assinaturas com pelo menos uma recusa no mês, pela primeira falha do mês. - Recuperada = pagamento com sucesso em até um ciclo da primeira falha: 30 dias mensal, 90 trimestral, 1 ano anual. - Mês com janela aberta está maturando. Não compare com meses fechados. - Inadimplente = cobrança não cancelada vencida e não paga na data de referência (fim do mês fechado ou hoje). Vence hoje não conta. Sem carência. - Inadimplente não é inativo. Past_due segue no MRR marcado como em cobrança. - Churn involuntário só depois da janela de recuperação, com o MRR de antes da falha. - Fila de cobrança: só assinaturas sem nova tentativa agendada pelo billing, ou canceladas pelo billing há até 30 dias sem pagamento depois. - Prioridade: P1 até 14 dias; P2 cartão inválido ou 15 a 60 dias; P3 mais de 60 dias. - Código de recusa fora da tabela aparece como não mapeado. Exceções por cliente: - <cliente>: carência de <dias> dias antes de tirar past_due do MRR. - <cliente>: política de desligamento com <n> títulos vencidos e o mais antigo há <dias> dias.
Construa no meu workspace Nekt o caso "Inadimplência e dunning da assinatura" seguindo as regras em https://academy.nekt.com/industrias/saas/inadimplencia-dunning.md. 1) Encontre as tabelas de origem e confirme as colunas usadas pelas regras. 2) Crie uma transformação no grão indicado aplicando todas as regras. 3) Rode o teste de aceitação e me mostre o resultado de cada item. 4) Crie o context document do caso no workspace, com as exceções dos meus clientes em aberto para eu preencher.
Variações
Sem retentativa automática, a régua é de lembretes antes e depois do vencimento, e uma fila preventiva lista quem vence nos próximos 7 dias.
Quando o título vive no ERP, use faixas de atraso e a marca de negativação, reduzindo a uma linha por nota e CNPJ antes de cruzar.
A política de inadimplência vira a fila de aviso, e quem não está em nenhuma regra recebe uma probabilidade de churn calibrada.