SaaS e tecnologia · Receita recorrente

MRR e seus movimentos, com NRR e GRR

Quanto MRR entrou, expandiu, contraiu, saiu e voltou em cada mês, por cliente, batendo com o financeiro e sem reescrever o passado.

Testado com agenteout/2026

UsoMuito usado
EsforçoAlto
Para quemEmpresas de SaaS que precisam explicar a variação do MRR mês a mês para a diretoria e o board.
Fonte

Assinaturas, itens, preços e faturas do billing

Regra

Estado de fim de mês comparado com o mês anterior, por cliente

Resultado

Movimentos de MRR, NRR e GRR

Ativação

Fechamento, board e agente de IA

O que resolve

  • O MRR do relatório bate com o billing e com o financeiro no fechamento.
  • Cada real de variação tem uma categoria: novo, expansão, contração, churn ou reativação.
  • O número de um mês fechado não muda depois de reportado.

Perguntas de negócio que responde

Faça estas perguntas ao seu agente quando o caso estiver pronto.

Quanto MRR perdemos de churn em agosto e quanto foi só contração?
Qual o NRR e o GRR dos últimos 12 meses?
Quanto da receita nova do trimestre veio da base e quanto de clientes novos?
Qual produto concentra o churn de receita?
Quais clientes voltaram a pagar depois de cancelar?

O que você precisa

  • Billing conectado na Nekt (assinaturas, itens, preços e faturas)
  • Um histórico diário do estado das assinaturas, guardado desde já
  • A regra combinada com o financeiro para anual, desconto, uso, inadimplência e moeda

O que você recebe

  • Uma tabela cliente x mês com MRR de início, de fim e o movimento classificado
  • NRR, GRR e churn por mês, trimestre e últimos 12 meses
  • Waterfall de MRR para o fechamento e para o board
  • Um agente de IA que responde sobre receita com a regra certa

Onde ativar

Fechamento e board

Waterfall de MRR do mês e do trimestre com NRR e GRR, lido da tabela congelada.

Agente de IA via MCP

Responde sobre churn, expansão e NRR com o grão cliente-mês e a regra de status já aplicados.

Alertas

Lista diária dos clientes que contraíram ou saíram desde o fim do mês anterior, para o CS agir antes do fechamento.

Quer construir?

As regras são fechadas, mas o histórico precisa existir. Se o billing não guarda versões, comece o snapshot diário hoje e reconstrua o passado a partir das faturas. 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.

Ver detalhado
O problema

O billing mostra a assinatura como ela está agora: quem cancelou aparece com MRR zero e quem mudou de plano aparece só com o plano novo. Quem soma o log de mudanças conta movimento que entrou e saiu no mesmo mês, e quem compara assinaturas em vez de clientes chama troca de plano de churn. O resultado é um NRR diferente em cada planilha e um mês fechado que muda depois de reportado.

Como costuma ser feito, e a regra

Cada linha é um erro que já aconteceu na prática.

O jeito comumA regra
01
Somar o log de eventos de mudança de assinatura do mês.
Movimento é a diferença entre duas fotos de fim de mês

Calcule o MRR de cada cliente no último dia do mês e compare com o último dia do mês anterior. Cada cliente-mês cai em um único movimento. O log bruto de mudanças conta idas e voltas dentro do mês e, numa base real, inflava o movimento em cerca de 18%. A foto do mês usa o último dia do mês para todos os segmentos, nunca o último dia em que cada segmento teve linha.

02
Contar cada assinatura cancelada como um churn.
O grão é o cliente, não a assinatura

Churn é o cliente que tinha MRR no fim do mês anterior e termina o mês sem nenhuma assinatura vigente. Troca de plano, renovação ou troca de assinatura do mesmo cliente é expansão, contração ou nada. Migração de um produto para outro do mesmo cliente pode continuar contando como churn na origem e novo na destino na lente por produto, mas deve ser marcada à parte para não aparecer como perda de logo. Consolidação de grupo econômico segue a regra que o workspace já tem: se a regra é não consolidar, cada conta do billing é um cliente e só os grupos listados nas exceções são unidos.

03
Usar unit_amount x quantity para todo item e deixar o preço por faixa ou por uso valer zero sem perceber.
MRR é mensalizado e nenhum item vigente fica com zero

Plano anual, semestral, trimestral ou de ciclo fora do padrão entra dividido pelos meses do ciclo (no Stripe, price.unit_amount x quantity dividido pelos meses de price.recurring.interval x interval_count). Preço com billing_scheme = tiered ou usage_type = metered não tem unit_amount, e a fórmula dá zero sem erro: valorize esse item pelo total das linhas da última fatura paga dele (um item por faixa gera várias linhas no mesmo período, some todas) ou some as faixas pela quantidade contratada. Antes de seguir, liste os itens de assinaturas vigentes que ficaram com MRR zero: a lista tem que vir vazia ou com cada caso explicado. Quando a fonte é a fatura, rateie o valor recorrente pelos meses de competência que ela cobre.

04
Somar a fatura inteira, com implantação, créditos avulsos e uso variável.
Só receita recorrente entra no MRR

Implantação, setup, compra avulsa de créditos (preço one_time), prorations, serviços pontuais, taxas de marketplace e receita de parceiros ficam fora. Cobrança por uso (preço metered) só entra no MRR até o mínimo contratual; o uso variável acima dele vai para uma coluna própria de receita de uso, senão cada oscilação de consumo vira expansão ou contração. Desconto recorrente abate o MRR; declare a partir de quando um desconto temporário passa a contar (há quem só considere desconto aberto ou com mais de 3 meses).

05
Somar itens de todas as assinaturas, ou tirar past_due e devolver no mês seguinte.
Status decide quem está na foto

Entram assinaturas active. Trialing não é MRR. Canceled e incomplete_expired saem, e o filtro é obrigatório porque a assinatura cancelada continua com itens e preço preenchidos. Past_due é uma decisão de negócio: o mais seguro é manter no MRR marcado como em risco até virar canceled ou unpaid. Quem tira past_due do MRR cria churn e reativação que não aconteceram quando a fatura é paga. Unpaid também é decisão declarada: diga se sai do MRR e confira com o critério do relatório do financeiro, que muitas vezes mantém unpaid, senão a conciliação não fecha. Congelamento aparece no Stripe como status paused ou pause_collection preenchido na assinatura: classifique como congelamento, não como churn.

06
Ler o MRR atual da assinatura cancelada e achar zero.
Churn usa o último MRR antes de sair

Ao cancelar, o MRR atual do cliente vai a zero. O valor perdido é o MRR do cliente no fim do mês anterior, ou o último valor conhecido antes de canceled_at. MRR zero nunca significa cliente gratuito: significa cliente que saiu.

07
Contar o cliente que voltou como cliente novo.
Reativação é quem já pagou e volta

Cliente com MRR zero no fim do mês anterior e maior que zero agora é novo se nunca pagou e reativação se já teve MRR em algum mês anterior. Reativação não entra no NRR da coorte, porque o cliente não estava na base inicial.

08
Calcular o MRR de meses passados com a tabela de assinaturas de hoje.
Guarde o histórico você mesmo

Billing expõe o estado atual, e a API de eventos do Stripe só guarda os últimos dias. Mudança de quantidade ou de plano na mesma assinatura some. Grave uma foto diária das assinaturas e itens, ou um histórico com válido de e válido até, desde o primeiro dia. Para os meses antes do início do histórico, reconstrua pelas linhas de fatura pagas de preço recorrente, sem proration, contando cada linha no mês cujo último dia cai dentro do período de serviço dela (period.start até period.end). O primeiro mês com foto compara duas fontes diferentes: marque-o como mês de emenda e não leve o movimento dele ao board.

09
Recalcular todos os meses a cada execução.
Mês fechado é congelado

Depois do fechamento, grave o resultado do mês numa versão provisória e permita uma única correção, que vira final. Correções retroativas posteriores entram como ajuste no mês em que foram descobertas, com o mês de referência registrado, nunca reescrevendo o número já reportado.

10
Somar BRL e USD na mesma coluna.
Nunca some moedas

Converta tudo para a moeda de reporte com uma taxa declarada e use a mesma taxa fixa em toda a série de movimentos: com taxa mensal, cliente em moeda estrangeira que não mudou de plano aparece como expansão ou contração. Se precisar da visão com câmbio realizado, mostre o efeito cambial numa linha separada. Confira se a coluna convertida vem nula para moeda estrangeira antes de somar.

Como cada cliente-mês é classificado

Comparando o MRR do cliente no fim do mês anterior (início) com o fim do mês (fim).

início = 0, fim > 0, nunca pagouNovo
início = 0, fim > 0, já pagou antesReativação
início > 0, fim > inícioExpansãofim - início
início > 0, 0 < fim < inícioContraçãoinício - fim
início > 0, fim = 0Churninício
início > 0, fim = inícioEstável
assinatura com status paused ou pause_collection preenchidoCongelamento, separado do churn
início = 0, fim = 0Fora da base, sem linha nem categoria

Definições

MRR do cliente
soma, no último dia do mês, do valor mensalizado dos itens recorrentes das assinaturas vigentes do cliente, líquido de desconto recorrente; item por faixa ou por uso vale o que a última fatura paga cobrou, até o mínimo contratual, e o uso variável fica numa coluna própria
MRR inicial
MRR dos clientes no último dia do mês anterior
Novo MRR
MRR de fim de mês dos clientes que nunca tinham pago
Expansão
fim - início, somente onde fim > início > 0, por cliente e mês
Contração
início - fim, somente onde início > fim > 0, por cliente e mês
Churn de MRR
MRR inicial dos clientes que terminam o mês com MRR zero; churn de logo é a contagem desses clientes
Reativação
MRR de fim de mês dos clientes que tinham MRR zero no início e já pagaram em algum mês anterior
GRR
(MRR inicial - contração - churn) / MRR inicial, só com os clientes da base inicial; nunca passa de 100%
NRR
(MRR inicial + expansão - contração - churn) / MRR inicial, só com os clientes da base inicial, sem novo e sem reativação; em 12 meses compare o mesmo grupo de clientes no início e no fim da janela

Armadilhas que já aconteceram

Preço por faixa valendo zero

Itens com preço tiered ou metered não têm unit_amount, e a fórmula preço x quantidade os contou como zero. Poucos itens desses respondiam por uma fatia relevante do MRR, e o total ficou vários pontos abaixo do financeiro sem nenhum erro na consulta.

Valorize esses itens pela última fatura paga e liste os itens vigentes com MRR zero antes de fechar o mês.

Cancelamento em lote

Assinaturas sem pagamento há meses foram canceladas de uma vez e todo o churn caiu num único mês.

Feche a saída na menor data entre o cancelamento e o último pagamento mais um ciclo.

Reativações fantasma e churn órfão

Um modelo baseado na tela do produto, e não no billing, criava ativações e reativações que nunca foram cobradas e churn de clientes sem MRR faturado.

Reconstrua o estado de início e de fim só a partir do billing, com válido de e válido até.

Data de ciclo reescrita

Quando uma assinatura se recupera de uma cobrança que falhou, o billing empurra a data de início do ciclo para frente, e clientes antigos pareciam novos.

Ancore o início do cliente no primeiro pagamento confirmado, nunca na data do ciclo.

Cliente contado várias vezes

O mesmo grupo com vários CNPJs ou várias sub-contas pagando aparecia como vários clientes ativos e como vários churns.

Siga a regra de consolidação do workspace: se ele consolida, use o cliente canônico e o CNPJ de maior MRR como principal; se não consolida, una só os grupos listados nas exceções.

O número mudou depois do board

A tabela era recalculada a cada execução e o MRR de meses fechados mudou depois de apresentado.

Congele o mês fechado e registre ajustes no mês em que foram descobertos.

Validado em dados reais. Na conta de Stripe da própria Nekt, mais de 8 em cada 10 assinaturas canceladas ainda trazem itens com preço maior que zero, então somar itens sem filtrar status põe no MRR quem já saiu. E parte das assinaturas que passaram por past_due voltou para active depois, por isso tirar past_due do MRR criaria churn e reativação que não aconteceram.

Teste de aceitação

O caso está pronto quando todos os itens passam.

Pacote para o agente

Cole no Claude, ChatGPT ou outro cliente com o MCP da Nekt conectado.

Markdown completo
Movimentos de MRR
- MRR do cliente = valor mensalizado dos itens recorrentes das assinaturas vigentes no último dia do mês, líquido de desconto recorrente. Ciclos de mais de um mês divididos pelos meses do ciclo. Item por faixa ou por uso vale o que a última fatura paga cobrou.
- Fora do MRR: implantação, setup, créditos avulsos (preço one_time), prorations, serviços pontuais, taxas de marketplace e receita de parceiros. Uso variável acima do mínimo contratual fica na coluna de receita de uso.
- Status: active entra; trialing, canceled e incomplete_expired não entram. Past_due fica no MRR marcado como em risco até virar canceled ou unpaid. Unpaid: <entra ou sai>. Paused ou pause_collection preenchido = congelamento, não churn.
- Movimento = MRR do cliente no fim do mês comparado com o fim do mês anterior. Um movimento por cliente-mês: novo, reativação, expansão, contração, churn ou estável. Início e fim zerados não geram linha.
- Churn é no nível do cliente: só quando o cliente termina o mês sem nenhuma assinatura vigente. Troca de plano não é churn. Valor do churn = MRR do cliente no fim do mês anterior.
- MRR zero não significa cliente gratuito. Significa cliente que saiu.
- Reativação = cliente com MRR zero no início que já pagou antes. Não entra no NRR.
- GRR = (MRR inicial - contração - churn) / MRR inicial. NRR = (MRR inicial + expansão - contração - churn) / MRR inicial. Só clientes da base inicial.
- Nunca some moedas diferentes. Moeda de reporte: <moeda>, taxa fixa para toda a série: <taxa declarada>.
- Meses antes de <início do histórico> vêm das faturas pagas por período de serviço. <mês de emenda> é mês de emenda entre fontes e não vai ao board.
- Grupo econômico: <consolida ou não consolida>, conforme a regra do workspace.
- Meses fechados vêm da tabela congelada. Não recalcule nem cite número de mês fechado de outra fonte.
Exceções por cliente:
- <cliente>: migração do produto <origem> para <destino> em até 30 dias é marcada como migração, não como churn de logo.
- <cliente>: grupo econômico com vários CNPJs consolidado no CNPJ <principal>.
- <cliente>: faturado fora do billing; somar <valor recorrente> no MRR a partir de <mês>.
- <cliente>: preço por uso com mínimo contratual de <valor>, que é a parte que entra no MRR.

Variações

Lente por produto

A mesma regra no grão cliente x produto x mês. Cross-sell aparece como expansão com marca de novo produto.

Billing sem histórico

Reconstrua o passado pelas linhas de fatura pagas por período de serviço, comece a foto diária das assinaturas hoje e marque o mês de emenda entre as duas fontes.

MRR vindo do CRM

Quando o contrato vive no CRM, use o valor recorrente dos itens do negócio ganho, nunca o campo de valor total do deal, e confira com o billing.