Quando declarar o Código Tributação Municipal "cTribMun" e evitar Rejeição "E0312" ou erro "E999" - Orientações

Segue uma discussão sobre o uso do CTribMun, se deve declarar no XML dentro do DPS/infDPS/serv/cServ.

Depois de algumas tentativas e erros, a moderadora Elisabete também reforçou o ponto para evitar alguns transtornos.

Como o Município pode fazer o desdobro do Código de Tributação Municipal, onde consultamos o Código Serviço Nacional e se tem desdobro ou não, seria bom seguir alguns passos.

Exemplo: 01.01.01.001

Se declarar o cTribMunc no XML, dependendo do Município terá rejeição.

010101 001 Descrição Servico
  1. Consultar parametros Municípais no ADN

Exemplo consulta CodIbgeMunc 4106902 (Curitiba)

PRODUÇÃO Restrita

https://adn.producaorestrita.nfse.gov.br/parametrizacao/4106902/01.01.01.000/2025-10-01/aliquota 
{
    "aliquotas": {
        "01.01.01.000": [
            {
                "Incidencia": "SIM",
                "Aliq": 5.00,
                "DtIni": "2022-12-30T00:00:00",
                "DtFim": null
            }
        ]
    },
    "mensagem": "Alíquotas recuperadas com sucesso."
}

PRODUCAO

https://adn.nfse.gov.br/parametrizacao/4106902/01.01.01.000/2025-10-01/aliquota

resultado:

{
    "aliquotas": {
        "01.01.01.000": [
            {
                "Incidencia": "SIM",
                "Aliq": 5.00,
                "DtIni": "2023-08-30T00:00:00",
                "DtFim": null
            }
        ]
    },
    "mensagem": "Alíquotas recuperadas com sucesso."
}

Notem que em ambos casos, os dados são iguais (em tese deveria sempre refletir o mesmo, mas no CNC deu diferença e tem de comunicar o Município para ajustar…)

Qual interpretação neste caso.

O Município não fez o desdobro (“000”), logo, ao gerar o XML, não se informa o cTribMunc, que neste momento está gerando erro estourando E999 em produção, poderia ser outra mensagem com rejeição e motivo.

Para emitir, como não tem desdobro, não identifica no XML, pois existe somente o “000”.

<cServ>
        <cTribNac>010101</cTribNac>
        <xDescServ>Descrição Servico</xDescServ>
</cServ>
Em resumo:
Se (API MUNICIPIO com codigoServico XX.XX.XX.000 existe alíquota) então
{
    -> Significa que Município não implementou o desdobro, 
       portanto,não declarar cTribMun
    -> Armazene as alíquotas no ERP
    -> NÃO DECLARE cTribMun
}
senão
{
    -> Município gerou desdobro e como pode existir 
       mais de um desdobro, declarar cTribMun = “xxx”
    -> DEVE DECLARAR o cTribMun
}

Exemplo da pesquisa com desdobro (já sabemos seguindo o exemplo que não tem….)

https://adn.nfse.gov.br/parametrizacao/4106902/01.01.01.001/2025-10-01/aliquota
{
    "aliquotas": null,
    "mensagem": "Alíquotas não encontradas."
}

Resumindo, façam as consultas e armazenem os dados no ERP, para PRODUCAO e P`RODUCAO-RESTRITA.

Não havendo desdobro, não declare cTribMun pois está rejeitando no momento com erro E999, logo mais, poderá ter tratamento e informar um código de rejeição mais amigável.

++++++++++++++++

Quem quiser aproveitar e consultar o Município para identificar se tem cadastro no CNC, faça acesso pela API: EXEMPLOS

PRODUÇÃO Restrita

https://adn.producaorestrita.nfse.gov.br/cnc/consulta/cad?codMunicipio=4106902&inscricaoFederal=XXXXXXXXXXXXX

Insira os dados do Código Ibge do Município e do CNPJ

PRODUÇÃO

https://adn.nfse.gov.br/cnc/consulta/cad?codMunicipio=4106902&inscricaoFederal=XXXXXXXXXXXXX

Caso não exista CNC, receberá:

{
    "StatusProcessamento": "NENHUM_DOCUMENTO_LOCALIZADO",
    "Alertas": [],
    "Erros": [],
    "TipoAmbiente": "PRODUCAO",
    "VersaoAplicativo": "1.0.0.0",
    "DataHoraProcessamento": "2025-11-06T09:41:50.7363456-03:00"
}

Não declare IM do prestador neste caso…

Se existir dados no CNC, deverá declarar IM para evitar rejeição (foge ao assunto do tópico, mas segue a dica…)

{
    "ListaCadastroMunicipal": [
        {
            "OrigemDados": "CNC",
            "CodigoMunicipio": 4106902,
            "TipoAmbiente": 0,
            "Id": 1951037,
            "CodigoUF": 41,
            "InfCad": {
                "Inscricao": "NNNNNNNNNNNNNN",
                "TpInscricao": "CNPJ",
                "InscricaoMunicipal": "YYYYYYYY",
                ** -----------------------------------
                ** ATENCAO AQUI, a IM pode ser 
                ** diferente de Prod e Prod Restrita
                ** -----------------------------------
                "DataInicioInscricaoMunicipal": "2025-08-13T00:00:00",
                "DataApenasInicioInscricaoMunicipal": "2025-08-13",
                "RazaoSocial": ".....",
                "NomeFantasia": ".....",
                "InfoEndereco": {
                    "CEP": .....
                },
                "SituacaoEmissaoNFSe": "HABILITADO",
                "SituacaoContribuinteCNC": "ATIVO",
                "SituacaoCadastral": "Ativo",
                "MotivoSituacaoCadastral": "Alvará em situação regular"
            },
            "DhCadastro": "2025-11-03T19:04:12.48",
            "DhAtualizacao": "2025-11-03T19:04:12.48",
            "OpcaoSimplesNacional": "NENHUM"
        }
    ],
    "StatusProcessamento": "DOCUMENTOS_LOCALIZADOS",
    "Alertas": [],
    "Erros": [],
    "TipoAmbiente": "PRODUCAO",
    "VersaoAplicativo": "1.0.0.0",
    "DataHoraProcessamento": "2025-11-06T09:43:19.8446129-03:00"
}

Caso tenham dúvidas, podemos editar o tópico, mas acredito que ajude neste momento.

Grato pelas dicas também para a Elisabete Bach, da JB Software.

Nosso colega e membro, ~Maxuel Santana, também sugeriu emular no portal nacional a emissão e no momento de informar o Codigo Complementar de Serviços (cTribMun) você poderá verificar se existe o desdobro ou não…

Portanto, existem várias opções para identificar o desdobro e evitar rejeições ou erro E999.

At.

Emir Toktar

Emir, bom dia!

Você sabe se existe alguma documentação para API desta consulta ADN?

Obrigado!!

Bom dia Alexandre,

O exemplo da consulta da API está no post. Na documentação são referenciadas como ADN, para prefeituras e contribuintes.

Veja a página no link:

APIs - Prod. Restrita e Produção — Portal da Nota Fiscal de Serviço eletrônica

No fórum tem publicação da documentação também.

At.te,

Emir Toktar

Obrigado Emir, vou dar uma olhada!!

Bom dia!
Estou tentando preencher o cTribMun para Florianópolis.

segundo o print, tem desdobramento:

Porém, já tentei diversos códigos e sempre dá erro.

exemplo de erro:

{"tipoAmbiente":2,"versaoAplicativo":"SefinNac_Pre_1.4.0","dataHoraProcessamento":"2025-12-15T09:19:29.4204513-03:00","idDPS":"xxxxxxxxxxxxxxxxxxxxxxx","erros":[{"Codigo":"E0314","Descricao":"O código de tributação municipal informado não existe ou não está administrado pelo município de incidência do ISSQN na data de competência informada na DPS."}]}

Valores que eu já tentei:
“01.03.02.001”, “01.03.02.002”, “01.03.02.003”, “010302001”, “010302002”, “010302003”, “001”, “002”, “003”, etc;

Se eu deixo vazio, não há erro e a nota é gerada. Mas o contador afirma que o valor é obrigatório.

A rota do ADN, para alíquota seria essa:
https://adn.producaorestrita.nfse.gov.br/parametrizacao/4205407/01.03.02.000/2025-12-15/aliquota

Segundo o ChatGpt nesse caso não precisaria preencher, mas não estou confiando muito nesse informação.

Bom dia.

Cuidou para colocar a data de emissão recente? Se a data informada for anterior a data que o Município ativou na data de competência, vai gerar erro. Estes são os primeiros passos.

Se tomou o cuidado de informar o cTribMun como descrito na sua mensagem, teria que ver o que você gerou no Xml e comparar a consulta na url de parametrização…, adianto que não deve ter prestado atenção ao resultado… :face_with_hand_over_mouth:

Aqui vale a reflexão da leitura e entendimento para evitar querer ganhar tempo e se funcionou, não sabe exatamente o porque…

O ChatGpt as vezes erra, tem que tomar cuidado. Melhor é ler com atenção o artigo e entender o que está fazendo. Se consultou o ChatGPT, é porque não entendeu e também não executou corretamente a validação. Não se preocupe, a maioria comete o mesmo erro. Só não errar na próxima!!

Voltando ao assunto.

Note que você colocou a URL da consulta de parametros, mas postou o resultado na sua descrição e também não olhou o resultado da Consulta. Tem que interpretar e entender o que está fazendo, caso contrário, pode induzir ao erro quem está lendo, já que descreve a URL (sem resultado e como se tivesse correto), ainda mais no artigo que ensina o que fazer e o que interpretar. No modo como descrito, induz que o desdobro está correto, mas não foi isto que eu notei.

https://adn.producaorestrita.nfse.gov.br/parametrizacao/4205407/01.03.02.001/2025-12-01/aliquota
{
    "aliquotas": null,
    "mensagem": "Alíquotas não encontradas."
}
Aqui tem parametro com DESDOBRO e o resultado é que nao existe, logo, se declarar cTribMun=001 naturalmente vai ter erro.

Porque está usando 001, 002 se na consulta não tem desdobro? Recomento que leia o artigo novamente e entenda o conceito.

Quando colocar a URL, também publique o resultado no forum, ok? Isto evitaria induzir ao erro outros leitores.

https://adn.producaorestrita.nfse.gov.br/parametrizacao/4205407/01.03.02.000/2025-12-12/aliquota
{
    "aliquotas": {
        "01.03.02.000": [
            {
                "Incidencia": "SIM",
                "Aliq": 2.0,
                "DtIni": "2025-10-01T00:00:00",
                "DtFim": null
            }
        ]
    },
    "mensagem": "Alíquotas recuperadas com sucesso."
}

RESULTADO: “01.03.02.000”

cTribNac = 010203

cTribMunc = 000 –> Nao declarar no XML.

Depois retorna se o resultado, e de deu certo, o que fez era para outros leitores entenderem como foi o resultado.

At.te

Emir Toktar

Bom dia Emir, obrigado pela resposta e pelos esclarecimentos.

Sou programador, então realmente não domino 100% as regras fiscais, por isso acabei misturando conceitos do portal com o funcionamento do Sistema Nacional.

Tirei as dúvidas inicialmente com o contador, que não conseguiu explicar o porquê técnico, apenas afirmou que no portal da prefeitura ele seleciona “003” e que, por isso, o código deveria ser informado. Pelo print que ele me enviou, as opções visíveis eram 001, 002 e 003, o que me levou a acreditar que havia desdobramento ativo. Infelizmente ele não me forneceu o XML de uma nota emitida para que eu pudesse conferir (vou tentar obter).

Após reler o artigo e analisar com mais atenção as consultas de parametrização, agora ficou claro o conceito:

  • A existência de opções no portal municipal não significa que exista desdobro ativo no Ambiente Nacional.

  • O que realmente define se o cTribMun deve ser informado é o resultado da consulta de alíquota.

  • Quando apenas o código base (01.03.02.000) retorna alíquota, não existe desdobramento, e portanto o cTribMun não deve ser declarado no XML.

De fato, ao consultar:

https://adn.producaorestrita.nfse.gov.br/parametrizacao/4205407/01.03.02.000/2025-12-12/aliquota

há retorno de alíquota, e ao consultar:

adn.producaorestrita../parametrizacao/4205407/01.03.02.001/2025-12-01/aliquota

ou

adn.producaorestrita../parametrizacao/4205407/01.03.02.003/2025-12-15/aliquota

o retorno é “Alíquotas não encontradas”, confirmando que não há desdobro.

Minha interpretação inicial foi justamente o inverso (achei que o null indicaria obrigatoriedade de preenchimento), o que agora entendi que estava incorreto.

Se possível, acho que ajudaria muito outros leitores um exemplo explícito de caso com desdobro, onde:

  • 01.03.02.000 não retorna alíquota

  • e 01.03.02.001 (ou outro) retorna, caracterizando a obrigatoriedade do cTribMun

De qualquer forma, ficou claro que, para Florianópolis neste cenário:

  • cTribNac = 010302

  • cTribMun = 000 → não declarar no XML

Obrigado novamente pela explicação e pela correção — ajudou bastante a entender o fluxo correto.

Grato!
Fernando Mondo

Olá Fernando,

O que realmente está estranho é apresentar no Portal Web com desdobro… Valide se no portal o emitente era de Florianópolis mesmo, pois o CodIbge 4205407 é de Floripa.

  • Para não ter dúvidas, tente executar você mesmo o processo, a informação de existir no portal e você consultar no WS, mostra alguma informação conflitante.
  • As datas de consultas devem ser depois da data de ativação do Município.
  • Tente, por is proprio, conduzir os testes no portal e por WS, para ter garantias de resultado, como informar data emissão no WS e no Portal, mesmo município, etc. Assim você garante que está executando a mesma ação por WS e portal sem viés de informações.

Quanto a mostras as duas abordagesn no artigo citado, tem as consultas sem desdobro nos 2 ambientes, na sequência, após algumas observações, tem a consulta com desdobro e retorno null, para exemplificas as diferenças. Caso não tenha entendido, sugira onde alterar que pode ajudar outros leitores, mas tem as consultas com sucesso e com erro.

As alterações de desdobro podem ocorrer pelo Município, mas achei estranho no portal ter uma informação e nos WS de produção e produção restrita não apresentarem o desdobro.

O Município pode alterar a qualquer momento informações de configuraçõea, a dica é que você faça todo processo, não sei se o contador fez um teste em uma data bem anteriror e ocorreram mudanças ou não.

Para evitar problemas, a sugestão é que você entre no portal restrito (pode usar o certificado do cliente ou login/senha) e faça uma emissão até o final, se tiver problema de schema, vai dar erro ao concluir.

AMBIENTE DE PRODUÇÃO RESTRITA (Teste portal nacional)

Depois execute a emissão de testes por Web Services. Compare os resultados.

Como a coisa toda é dinâmica, melhor você garantir todos os passos para não se incomodar. É novidade para todos, programadores, analistas, contadores, clientes e municípios….

O fórum é composto por alguns moderadores que também tem seus afazeres, e quanto mais detalhado e validado pelos participantes, melhor, ajuda a todos e compartilha conhecimentos.

Depois emita e conclua o post informando se deu certo e tente validar no portal Web e concluir emitindo o XML.

Muito estranho por WS parametros ter uma informação e outra no portal Web. Acredito que tenha alguma informação que não tenham notado, de qualquer forma, depois avisa.

Boa sorte.

Tem algum endpoint que consiga listar os desdobramentos?

Você pode usar o https://adn.nfse.gov.br/parametrizacao/docs/index.html.

Não vi rota para isso aí.

No site da nota nacional quando usuário informa a tributação nacional em alguns casos abre uma lista de opções para tributação municipal. Quero pegar o conteúdo da lista pela Api pois nesse posto explica como saber se tem ou não que passar a tributação municipal mas o que passar veneno dessa lista

quando tem desdobramento municipal, vai aparecer no consumo desta api

Pessoal, boa tarde.
Implementamos a regra e, ao realizar a consulta na API, é retornado que existe alíquota ativa. Como não estamos declarando o campo ctribmun, ocorre o erro 0312, exigindo que seja informado o desdobro nesse campo. Quando passamos o valor de ctribmun, a NFS-e é emitida corretamente. Alguém já enfrentou esse cenário?

Outra dúvida: a consulta para declarar ou não o campo ctribmun deve ser feita apenas quando o local da prestação é diferente do local do prestador?

É uma vergonha ainda não ter um endpoint onde você informe o código do município, o serviço e a API retornar a lista de desdobramentos. Se tem no portal é porque em algum lugar já tem a informação, o que custa disponibilizar?

Boa tarde. Explicitamente, não tem a informação específica se tem ou não desdobramentos, mas existe uma regra de negócio para aplicar no consumo da api https://adn.nfse.gov.br/parametrizacao/{codigoMunicipio}/{codigoServico}/{competencia}/aliquota.

Se retornar alguma alíquota informando o código de serviço no formato, por exemplo, “01.01.01.000”, então, aquele ente não tem desdobramento. se não retornar alíquota, tem desdobramento. Daí tem que iterar os valores 01.01.01.001, 01.01.01.002, etc.