Quando o governo federal anunciou o Sistema Nacional de NFS-e (SNNFSE), muitos desenvolvedores imaginaram que o Brasil seria dividido em apenas dois grupos simples: os municípios que usam o emissor público da Receita Federal (sefin.nfse.gov.br) e os municípios que continuam no velho padrão ABRASF.
Na prática, mantendo a infraestrutura de cobertura nacional em mais de 4.780 municípios da Notaas, nós vimos surgir um terceiro grupo muito mais complexo: os provedores municipais híbridos. São empresas como Pronim (GovBR / Cidade360), SpeedGov (Intersol), ISSNet (NotaControl) e E&L que mantiveram seus próprios webservices nas prefeituras, mas adaptaram seus schemas para exigir a DPS v1.01 do padrão nacional — ou, no caso do SpeedGov, enxertaram um bloco <DadosDPS> nacional dentro do XML ABRASF 1.00!
Integrar com provedores híbridos como Pronim/Cidade360, SpeedGov e ISSNet Nacional exige tratar particularidades severas de transporte e XSD: desde tags <MensagemRetorno/> vazias que simulam rejeição no SpeedGov até o roteamento da API REST /NFSe.Api/NotaNacional/EnviarSincrono em 137 cidades do Cidade360 e a confirmação dupla do evento e101103 em Goiânia.
Nas últimas releases da Notaas (v0.56.56 a v0.56.66), nós resolvemos dezenas dessas anomalias em produção real. Neste artigo, compartilho o que descobrimos em cada um desses três motores para ajudar quem está sofrendo com erros misteriosos como E376, E0617, P4012 ou falhas silenciosas de cancelamento.
O maior mito da NFS-e em 2026 é achar que "aderir ao Padrão Nacional" significa usar a API da Receita Federal. Centenas de prefeituras exigem o XML da DPS Nacional, mas rodando no webservice próprio do fornecedor municipal.
1. Pronim SNNFSE / Cidade360 (/NFSe.Api/NotaNacional): 137 municípios e o segredo do tpAmb = 2
Dezenas de cidades importantes do Sul, Sudeste e Centro-Oeste — como Uruguaiana/RS (4322400), Pato Branco/PR (4118501), Rolândia/PR (4122404), Araruama/RJ (3300209) e Mirassol/SP (3530300) — migraram do antigo Pronim ABRASF SOAP para a plataforma Cidade360 / Pronim SNNFSE.
Nessa arquitetura (que hoje abrange 137 municípios mapeados na nossa base IBGE), a prefeitura não recebe mais RPS em SOAP: ela expõe uma API REST própria no sufixo /NFSe.Api/NotaNacional/EnviarSincrono que recebe o XML assinado da DPS Nacional. Ao integrar e operar esse motor em escala, encontramos três armadilhas críticas:
- Sufixo de Endpoint Incompleto nos Manuais: Muitas prefeituras divulgam a URL base terminando apenas em
/NFSe.Api/NotaNacional(ou com case variado/Nfse.Api/NotaNacional). Se o seu cliente HTTP fizerPOSTdireto nessa URL sem normalizar para/NFSe.Api/NotaNacional/EnviarSincrono, tomaráHTTP 404/405. - Homologação (
tpAmb = 2) no Mesmo Endpoint de Produção: Diferente da SEFIN Nacional (que separasefin.nfse.gov.bresefin.producaorestrita.nfse.gov.br), a API NotaNacional do Cidade360 utiliza um único endpoint de produção e roteia a nota para o ambiente de testes (PRODUCAO_RESTRITA) lendo exclusivamente a tag<tpAmb>2</tpAmb>de dentro do XML da DPS. - Diferenciação entre Rejeição Negocial (
P4012) e Falha Transitória: Quando o Cidade360 devolve uma rejeição de cadastro comoP4012: Prestador não cadastrado no sistema, não adianta a sua fila fazer retry: o número da DPS deve ser liberado imediatamente para reciclagem e a mensagem confirmada (ack) sem cair em Dead-Letter Queue (DLQ).
2. SpeedGov (Intersol): O bloco <DadosDPS> dentro do RPS e o bug do <MensagemRetorno/> vazio
O provedor SpeedGov (forte no Ceará e Maranhão, em municípios como Russas/CE, Pacajus/CE, Quixadá/CE, Tianguá/CE e Barreirinhas/MA) adotou uma abordagem híbrida curiosa: o webservice continua sendo ABRASF 1.00 (RecepcionarLoteRps, ConsultarSituacaoLoteRps e ConsultarLoteRps), mas o schema tipos_v1.xsd foi alterado para exigir um bloco <DadosDPS> encapsulado dentro de <InfRps>!
Se você enviar um RPS ABRASF padrão para o SpeedGov hoje, receberá uma enxurrada de erros: E376, E378, E390, E391, E392, E395, E396 e E411. Veja o que descobrimos dissecando o XSD e o comportamento do servidor do SpeedGov:
⚡ As 4 Pegadinhas do Motor SpeedGov em Produção:
- 1. Bloco
<DadosDPS>e<DataCompetencia>em<InfRps>: É obrigatório enviar<DadosDPS>comTpEmit,TpAmb,DhEmi,VerAplic,CLocEmi,CLocPrestacao,CTribNac,TribIssqn,TpRetIssqn,OpSimpNac,RegEspTrib,RegApTribSN,serie,nDPSedCompet.- 2.
<ItemListaServico>de 4 dígitos vs.CTribNacde 6 dígitos (Erro E160): Enquanto<CTribNac>dentro de<DadosDPS>exige 6 dígitos (050101), a tag<ItemListaServico>do RPS temmaxLength="5"e exige os 4 primeiros dígitos da LC 116/03 (0501).- 3. Alíquota em Percentual (
E162/E211) e CNAE de 9 dígitos (E35): Ao contrário do ABRASF clássico que divide a alíquota por 100 (0.02), o SpeedGov exige o percentual direto (2.00) e<CodigoTributacaoMunicipio>formatado a partir do CNAE compadEnd(9, '0').- 4. A armadilha do
<MensagemRetorno/>vazio no aceite do lote: Quando o SpeedGov aceita um lote com sucesso emRecepcionarLoteRps, ele retorna<RecepcionarLoteRpsResposta><MensagemRetorno/><NumeroLote>...</NumeroLote><Protocolo>...</Protocolo></RecepcionarLoteRpsResposta>. Se o seu parser XML não ignorar nós<MensagemRetorno/>vazios, ele achará que o lote foi rejeitado com mensagem": "e descartará o protocolo! E quandoConsultarSituacaoLoteRpsretorna<Situacao>3</Situacao>(processado com erro), as mensagens não vêm nele: é obrigatório chamarConsultarLoteRpsem seguida para ler o motivo real.
3. ISSNet Nacional (NotaControl) em Brasília/DF e Goiânia/GO: Erro E0617 e Cancelamento e101103
Capitais de altíssimo volume como Brasília/DF (5300108) e Goiânia/GO (5208707) utilizam o motor ISSNet Nacional (wsnfsenacional da NotaControl), que recebe a DPS v1.01 envelopada em SOAP. Dois comportamentos específicos desse motor merecem atenção redobrada:
A resolução do município de incidência do ISSQN (Erro E0617 e E0635)
De acordo com o art. 3º da Lei Complementar 116/2003, a regra geral é que o ISSQN incide no município do estabelecimento do prestador (ex.: serviços de tecnologia ou medicina veterinária 050101), exceto nos 58 subitens específicos em que o imposto é devido no local da prestação (como construção civil 070201) ou no município do tomador (como cessão de mão de obra 170501).
Quando um prestador de Goiânia ou Brasília presta um serviço de incidência local (regra geral) para um cliente de outra cidade e informa o código IBGE do cliente em <cLocPrestacao>, o ISSNet Nacional exige que a resolução de incidência e a omissão de <pAliq> respeitem rigorosamente a matriz da LC 116/03 para não disparar a Rejeição E0617. Na Notaas, nosso resolvedor resolveTbwIssIncidence cruza automaticamente os 58 subitens da LC 116/03 com a tabela de adesão do SNNFSE antes de montar o XML.
O bug do 1º envio de Cancelamento por Análise Fiscal (e101103) em Goiânia/GO
Em Goiânia/GO, quando o cancelamento exige Solicitação de Análise Fiscal (evento e101103), o webservice https://nfse.issnetonline.com.br/wsnfsenacional/goiania/nfse.asmx possui uma anomalia peculiar: na primeira chamada a CancelarNfse, a prefeitura grava o protocolo de análise no banco dela, mas o servidor ASMX devolve HTTP 200 com um nó <MensagemRetorno><Codigo /></MensagemRetorno> completamente vazio e sem <evento>!
Para que o seu ERP não trate esse retorno vazio como falha de comunicação, o cliente do ISSNet Nacional na Notaas detecta automaticamente esse cenário em Goiânia e executa uma chamada imediata de confirmação reutilizando exatamente o mesmo XML assinado. Nessa segunda leitura, o webservice retorna deterministicamente o código EM023 (Já existe uma solicitação de cancelamento em processo), permitindo que a API já devolva ao seu sistema o status estruturado cancelOutcome: "pending_analysis" no GET /api/v1/invoices/{id}/status.
Um único JSON para 4.780+ municípios (SNNFSE, Híbridos e Municipais)
Manter dezenas de adaptadores para Pronim/Cidade360, SpeedGov, ISSNet Nacional, COPLAN, E&L, AtendeNet e SNNFSE Federal dentro do repositório do seu SaaS consome meses de engenharia que deveriam estar focados no seu produto principal.
Na Notaas, você envia sempre o mesmo payload JSON para POST /api/v1/emitir e nossa camada de roteamento municipal cuida de toda a tradução, assinatura e reconciliação:
- Plano Free (R$ 0/mês): 20 notas fiscais gratuitas por mês em Produção (1 CNPJ) + até 5 projetos simultâneos em Homologação via Org API para testar qualquer município do Brasil.
- Plano Dev (R$ 99/mês): 500 notas/mês + até 3 CNPJs em Produção.
- Plano SaaS Pro (R$ 249/mês): 2.000 notas/mês + CNPJs ilimitados em Produção e Homologação.
👉 Criar Conta Gratuita na Notaas · Consultar Cobertura Municipal na Documentação

