SimplesMail
← Voltar pra todos os artigos
nota-fiscal
saas
brasil
asaas
fiscal

Como emitir NFS-e automaticamente em vendas de SaaS brasileiro

Guia prático para devs e founders BR sobre Nota Fiscal de Serviço Eletrônica em cobranças recorrentes de SaaS. Asaas, certificado A1, prefeituras.

12 de maio de 2026 · Inael Rodrigues

Vender SaaS em assinatura mensal no Brasil parece simples até você bater nas obrigações fiscais. Aqui está o que aprendi rodando o SimplesMail em produção emitindo NFS-e automaticamente a cada cobrança paga.

O básico — o que é NFS-e e quando emitir

NFS-e (Nota Fiscal de Serviço Eletrônica) é o documento fiscal obrigatório pra toda venda de serviço — incluindo software como serviço (SaaS). É municipal: cada prefeitura tem seu próprio padrão XML e webservice de emissão.

Pra SaaS, a regra geral é simples:

Toda cobrança paga → uma NF emitida em até 5 dias úteis (varia por município)

Esquecer disso = sonegação. A Receita Federal cruza extrato bancário (E-Financeira) com sua DCTF/DEFIS e detecta receita não declarada.

Os 4 dados fiscais que você precisa

Antes de emitir a primeira NF, sua empresa precisa:

  • Inscrição Municipal ativa (no município sede). Brasília-DF emite via Cadastro Fiscal do DF
  • CNAE principal compatível com o serviço (no nosso caso, 6201-5/01 ou 6209-1/00 pra TI)
  • Item da lista de serviços LC 116/03 correspondente. Pra desenvolvimento de software: 1.01. Pra suporte técnico: 1.07
  • Certificado Digital A1 da empresa (PFX/P12) válido — usado pra assinar a NF
Custo do certificado A1: ~R$ 200-400/ano em qualquer AC ICP-Brasil (Certisign, Soluti, Serasa).

Manual vs Automático

Manual (planilha + emissão prefeitura)

  • Cliente paga
  • Você lança no controle interno
  • Acessa portal da prefeitura
  • Preenche CPF/CNPJ do tomador, valor, descrição, código municipal
  • Assina com cert A1
  • Baixa PDF + XML
  • Envia pro cliente
Tempo: 5-10 minutos por NF. Em 50 cobranças/mês = 5h só de digitação fiscal.

Automático via gateway de cobrança

Asaas é o que mais usei. O fluxo vira:

  • Cliente paga (cartão, Pix ou boleto)
  • Asaas dispara webhook PAYMENT_RECEIVED pro seu backend
  • Seu código chama POST /v3/invoices no Asaas com {customer, value, description, serviceCode, deductions}
  • Asaas pega o cert A1 que você uploadeou e assina o XML
  • Envia pra prefeitura
  • Prefeitura responde em <60s com AUTHORIZED ou ERROR
  • Cliente recebe email automático com PDF + XML
  • Webhook INVOICE_AUTHORIZED chega no seu backend pra você arquivar
Tempo de implementação: ~1 dia se for primeira vez (config certificado + serviço fiscal + webhook).

Os 3 campos mais comuns onde a NF dá erro

Em produção, NFs falham frequentemente por:

  • Endereço do tomador incompleto — CEP inválido, sem complemento ou bairro. Solução: ao cadastrar customer no gateway, exigir CEP válido + auto-fill via BrasilAPI quando CNPJ
  • Inscrição Municipal do prestador inativa — empresa nova ou recém-migrada. Solução: validar IM no cadastro municipal antes do primeiro envio
  • Optante Simples Nacional incorreto — empresa Lucro Presumido marcada como Simples na configuração do gateway, ou vice-versa. Solução: confirmar com contador o regime real (não confiar no que está no SaaS)

Retenções federais — quando você retém, quando não retém

Empresa Lucro Presumido (como a IT Booster) emitindo serviço de informática:

  • PF tomador: sem retenção federal. ISS 2% (DF) recolhido por você
  • PJ Simples Nacional tomador: sem retenção federal
  • PJ Lucro Real/Presumido tomador acima de limite:
- PIS 0,65% + COFINS 3,0% + CSLL 1,0% retidos na fonte quando NF > R$ 215,05 (limite combinado) - IRRF 1,5% retido quando NF > R$ 1.000,00

O gateway Asaas calcula automaticamente baseado no CPF/CNPJ do tomador. Você só configura uma vez no cadastro do serviço.

Cancelando NF errada

Possível em até 24h-7 dias dependendo da prefeitura. Em Brasília-DF: 24h pelo portal. Depois disso, só "Carta de Correção" ou cancelamento administrativo (com justificativa).

O que o SimplesMail faz por trás

No SimplesMail, o fluxo NF é totalmente invisível pro cliente:

  • Cliente assina plano paid (Starter R$ 29, Pro R$ 99, etc) via dashboard
  • Asaas cobra mensal (boleto, Pix ou cartão)
  • Webhook PAYMENT_RECEIVED chega na API do SimplesMail
  • Backend dispara emitirNotaFiscal() se tenant.nfEnabled === true
  • NF emitida com:
- Cód. serviço: 6201501 | 01.01 - Descrição: "SimplesMail {plano} — assinatura mensal ({slug})" - Valor: o que o cliente pagou - ISS 2% DF
  • Cliente recebe NF por email automaticamente
Custo total da operação: R$ 0,49 da NF + ISS 2% do valor. Embutido no preço do plano, não cobrado à parte.

Conclusão

Pra SaaS brasileiro, automação fiscal não é luxo — é sobrevivência operacional acima de 50 cobranças/mês. Asaas + certificado A1 + webhook handler resolve o pipeline completo em ~1 dia de implementação.

Se você quer ver isso funcionando sem precisar implementar, todo cliente do SimplesMail recebe NF brasileira automática em qualquer plano paid: simplesmail.itbooster.com.br.