Dev SaaS em Curitiba: Como Separar Retainer Mensal de Projetos Pontuais e Acompanhar MRR no Celular
Publicado em 27 de maio de 2026 — leitura de 14 minutos
Rafael Krüger mora num apartamento de 52 m² no bairro Batel, em Curitiba, com vista para uma araucária centenária que o ajuda a aguentar as madrugadas de deploy. Aos 31 anos, ele é desenvolvedor backend especializado em Ruby on Rails e infraestrutura AWS, e já há quatro anos trabalha exclusivamente para empresas SaaS de pequeno e médio porte. A carteira atual tem treze clientes: cinco com contrato de retainer mensal recorrente, seis com projetos pontuais (geralmente migrações ou novas features) e dois "híbridos" que combinam horas-pacote com sprints fixos. Em abril de 2026, a receita bruta foi de R$ 47.380, distribuída entre clientes brasileiros (R$ 18.200), uma fintech alemã que paga em euros (€ 3.400) e três startups americanas em dólar (US$ 4.950).
A complexidade dessa rotina não está nos números: está em saber, todo dia 1º do mês, quanto é receita recorrente garantida (MRR) e quanto depende de fechar projetos novos. Por dois anos, Rafael tentou resolver isso com uma planilha do Google Sheets que tinha 17 abas e quatro fórmulas de câmbio diferentes. Funcionava — até que ele atendia um cliente novo, recebia em moeda diferente, e precisava lembrar qual taxa do Banco Central usar. Em janeiro de 2026, ele migrou tudo para o InvoiceFlow no celular, e desde então não voltou para a planilha. Este artigo mostra exatamente como ele estruturou tudo.
O dilema do dev SaaS brasileiro: retainer não é o mesmo que projeto
Um retainer é um valor fixo pago mensalmente em troca de uma quantidade de horas pré-acordada (no caso de Rafael, entre 20 e 40 horas) ou simplesmente "disponibilidade" para manutenção, bugfix e pequenas evoluções. Isso é diferente de um projeto, que tem escopo definido, prazo, e geralmente é pago em duas ou três parcelas (sinal, marco intermediário, entrega). Confundir os dois na contabilidade gera três problemas sérios:
- Previsão de caixa errada. Se você soma tudo, parece que faturou R$ 47 mil. Mas se 60% disso vai sumir em julho quando dois projetos acabam, você está olhando para um número fantasma.
- Negociação de reajuste fragilizada. Quando o cliente de retainer pede para "renegociar o valor", você precisa mostrar exatamente quantas horas foram entregues nos últimos seis meses — não a média global.
- NFS-e descritivo inconsistente. A prefeitura de Curitiba aceita NFS-e com código de serviço 1.07 (suporte técnico) ou 1.04 (desenvolvimento), e o ISS muda. Rafael cobra 2% para retainer e 5% para projeto novo, o que altera o líquido recebido.
A solução de Rafael foi usar dois perfis distintos no InvoiceFlow. O app permite múltiplos perfis com dashboards independentes — cada um com seu próprio painel, numeração de fatura, modelos de email e até modelo de PDF personalizado. Ele chamou o primeiro de "Krüger Dev — Recorrente" e o segundo de "Krüger Dev — Projetos". Os dois compartilham o mesmo CNPJ (MEI ainda em transição para ME, prevista para julho), mas a separação visual permite que ele abra o app de manhã, deslize entre os perfis com um toque, e veja imediatamente: MRR de maio = R$ 22.400; projetos do mês = R$ 24.980.
Configurando o perfil "Recorrente": automação que dorme por você
O coração da operação de retainer é a função de recorrências com pausa/retomada do InvoiceFlow. Rafael cadastrou cada um dos cinco clientes de retainer como uma recorrência mensal:
- HortiFresh (Curitiba) — R$ 4.800/mês, vencimento dia 5, NFS-e código 1.07, PIX via chave CNPJ.
- BuildKit Studio (São Paulo) — R$ 5.200/mês, vencimento dia 10, NFS-e código 1.04, transferência TED.
- NordBahn GmbH (Hamburgo) — € 1.400/mês, vencimento dia 15, fatura sem NFS-e (serviço prestado a estrangeiro tem ISS isento conforme LC 116/03 art. 2º), pagamento via Wise.
- LocaleStack Inc (Austin, TX) — US$ 1.800/mês, vencimento dia 20, mesma isenção, pagamento via Mercury.
- Cuidar+ Saúde (Curitiba) — R$ 3.600/mês, vencimento dia 25, NFS-e código 1.07.
Cada recorrência tem um modelo de email com merge fields próprio. O cliente HortiFresh recebe um email em português começando com "Olá, equipe HortiFresh — segue a fatura de {{mes_referencia}} referente ao retainer de manutenção." Já a NordBahn recebe em inglês: "Hi NordBahn team — please find attached the invoice for {{mes_referencia}}, covering ongoing platform maintenance." O merge field {{mes_referencia}} é preenchido automaticamente. Rafael nunca mais digitou "maio de 2026" numa fatura.
A genialidade da pausa/retomada apareceu em fevereiro. A HortiFresh teve um corte de orçamento e pediu para pausar o retainer por dois meses. No app, Rafael abriu a recorrência, tocou em "Pausar", definiu retomada para 1º de maio. Em maio, o app reativou sozinho e a fatura saiu pontual. Sem alarme no calendário, sem post-it na geladeira, sem "quase esqueci" no domingo à noite.
Multi-moeda sem dor de cabeça: como Rafael fatura para Hamburgo
O cliente alemão NordBahn paga em euros. Antes do InvoiceFlow, Rafael precisava abrir o site do Banco Central, copiar a taxa PTAX do dia, colar na planilha, e torcer para o cliente não reclamar do arredondamento. Hoje, ele simplesmente cadastra a fatura em EUR, e o app exibe no painel de Curitiba o equivalente em BRL pela taxa do dia da emissão. Quando o pagamento cai na Wise (geralmente entre 3 e 5 dias úteis depois), Rafael ajusta a taxa real recebida com um toque, e o painel atualiza o MRR consolidado.
Isso é especialmente útil porque o painel separa "MRR recorrente em BRL" de "MRR recorrente em USD" e "MRR recorrente em EUR". Rafael pode olhar para os três números e decidir se vale a pena converter tudo no fim do mês ou esperar uma janela melhor de câmbio. Em março, o euro estava a R$ 5,42 e ele segurou; em abril subiu para R$ 5,78 e ele consolidou — R$ 4.624 a mais no caixa só por timing.
O perfil "Projetos": orçamento, guia, fatura, proforma vinculados
Projetos têm uma dinâmica completamente diferente. Rafael recebe um lead (geralmente por indicação), envia um orçamento com escopo, prazo e parcelas. Se aprovado, ele converte o orçamento em proforma (que serve como documento pré-contratual para clientes estrangeiros) ou diretamente em fatura com cronograma de pagamento.
O recurso de documentos vinculados do InvoiceFlow é o que torna isso tolerável. Rafael cadastra um projeto novo — por exemplo, "Migração Rails 5.2 → 7.1 para BuildKit Studio, R$ 18.000" — e o app cria automaticamente:
- Orçamento #2026-0042 (status: enviado).
- Proforma #2026-0042 (status: aguardando sinal).
- Fatura #2026-0042-A (sinal de R$ 5.400, status: paga em 14/05).
- Fatura #2026-0042-B (marco intermediário de R$ 7.200, status: emitida 22/05, vence 05/06).
- Fatura #2026-0042-C (entrega final de R$ 5.400, status: pendente).
Tudo isso aparece numa única tela como "linha do tempo do projeto". Se o cliente perguntar "Rafael, quanto eu já paguei e quanto falta?", ele responde em 3 segundos sem abrir planilha, sem buscar email antigo, sem cara de pânico.
Controle de tempo: a hora que vale R$ 180 e a hora que vale R$ 0
No retainer com a HortiFresh, Rafael acordou 30 horas/mês a R$ 160/hora. Se ele entregar 25 horas, ainda recebe R$ 4.800 (sem desconto). Se entregar 32 horas, ele combinou que pode cobrar as 2 extras a R$ 180/hora. O controle de tempo do InvoiceFlow permite que ele inicie um cronômetro vinculado ao cliente/tarefa, pause, retome, e no fim do mês veja o relatório consolidado.
Em abril, o relatório mostrou: HortiFresh = 34h21min. Rafael cobrou 4h21min extras (arredondadas para 4,5h) na fatura de maio, totalizando R$ 5.610 — sem nenhuma briga, sem nenhum "ah, eu achei que tinham sido menos horas". O painel de horas exporta CSV que ele envia em anexo junto com a fatura. Transparência = renovação garantida.
NFS-e Curitiba: o detalhe que muitos devs ignoram
A prefeitura de Curitiba opera o sistema ISS Curitiba, e a emissão de NFS-e tem que casar exatamente com o descritivo da fatura. Rafael usa o modelo de PDF personalizado do InvoiceFlow (com editor visual de templates, lançado na versão v30) para que o descritivo da fatura siga o padrão aceito pela prefeitura: código do serviço, base de cálculo, alíquota ISS, valor ISS, valor líquido. Depois ele copia esse mesmo descritivo para o sistema da prefeitura. Tempo total por NFS-e: 90 segundos.
Para os clientes estrangeiros, o template é outro — em inglês, com a observação "Service exported. ISS exempt per Brazilian Complementary Law 116/2003, Art. 2º, I." Cada perfil tem seu próprio template padrão, então quando Rafael emite uma fatura na NordBahn, o template correto aparece sem ele precisar trocar nada.
O painel de MRR: o número que importa
O painel por perfil mostra, no topo, o MRR consolidado. Em maio de 2026, Rafael vê:
- MRR BRL: R$ 13.600 (HortiFresh + BuildKit + Cuidar+)
- MRR EUR: € 1.400 ≈ R$ 8.092
- MRR USD: US$ 1.800 ≈ R$ 9.180
- MRR total ≈ R$ 30.872
Esse número, separado dos projetos, é a base de cálculo da segurança financeira dele. Rafael combinou consigo mesmo que o aluguel (R$ 3.400), plano de saúde (R$ 720), INSS como contribuinte individual (R$ 264) e custos fixos do negócio (R$ 890) — total R$ 5.274 — nunca podem passar de 25% do MRR. Hoje estão em 17%. Significa folga. Significa dormir bem.
OCR de recibos: a despesa que ele nunca lembrava de lançar
Rafael tem três assinaturas SaaS que paga em cartão internacional: AWS (US$ 340/mês em média), GitHub Copilot (US$ 19), Linear (US$ 24). Toda vez que a fatura do cartão chega, ele tirava print e esquecia. Agora ele usa o OCR de recibos: foto da fatura do cartão, o app lê os valores, ele confirma a categoria "Infra/SaaS", e o gasto entra no painel de despesas. No fim do trimestre, ele exporta tudo em CSV para enviar ao contador, que faz o IRPF dele.
Offline-first: a vez que ele faturou no avião
Em março, Rafael voou para o Rio para uma reunião com cliente. No avião, sem internet, ele aproveitou para emitir três faturas pendentes. O InvoiceFlow é offline-first: tudo grava localmente e sincroniza quando reconecta. Quando o avião pousou, as três faturas foram enviadas automaticamente. Cliente número 2 do dia até comentou: "Rafael, você emite fatura mais rápido que padaria emite cupom."
Backup e export: o medo que sumiu
Toda sexta-feira, Rafael faz backup do app para o Google Drive da conta dele. O arquivo tem ~14 MB e inclui clientes, faturas, recorrências, despesas, templates. Se o celular cair na privada (já caiu uma vez), em 4 minutos ele reinstala, restaura, e segue. Esse é o tipo de tranquilidade que planilha não dá.