Cliente é contribuinte do ICMS? Como preencher o indIEDest
Toda NF-e pede o indIEDest, o indicador da IE do destinatário. Quem decide o valor é o cadastro do cliente na UF dele, não o que está gravado no ERP há dois anos.
Errar o indicador ou informar uma IE que não está ativa gera rejeição. Cliente vedado na UF gera denegação. Este guia traz a tabela de decisão e o código para automatizar.
Os três valores do indIEDest#
Do Manual de Orientação do Contribuinte (MOC 7.0), Anexo I, campo E16a:
| Valor | Significado | Tag dest/IE |
|---|---|---|
| 1 | Contribuinte do ICMS | Obrigatória |
| 2 | Contribuinte isento de inscrição no cadastro de contribuintes | Não informar |
| 9 | Não contribuinte, que pode ou não ter IE | Não informar |
Regras fixas do leiaute:
- NFC-e: sempre
9, sem IE (rejeição 789). - Operação com o exterior: sempre
9, sem IE (rejeição 790).
O que a consulta de IE responde#
Consulte pelo CNPJ (ou CPF) do cliente, na UF do destinatário:
curl -H "X-API-Key: SUA_CHAVE" \
"https://api.fiscalapi.com.br/api/consultar?uf=PR&cnpj=12345678000199" Os campos que decidem:
| Campo | Uso |
|---|---|
| results | Lista de inscrições na UF. Vazia = nenhuma IE encontrada |
| inscricao_estadual | A IE que vai na nota (só os dígitos) |
| situacao_ie | Situação da inscrição: ativa, suspensa, baixada etc. |
| situacao_nfe | Documentos que o cliente está habilitado a emitir. Para o indIEDest, é informativo |
O texto da situação varia por estado: ATIVA, Habilitado, Não habilitado... Normalize antes de comparar (maiúsculas, sem acento).
Tabela de decisão#
| Resultado na UF do destinatário | indIEDest | dest/IE | Ação |
|---|---|---|---|
| Uma IE ativa ou habilitada | 1 | A IE retornada | Emitir |
| IE encontrada, mas suspensa, baixada ou não habilitada | — | — | Não emitir no automático. Revisar com o fiscal |
| Nenhuma IE na UF (results vazio) | 9 | Não informar | Emitir como não contribuinte (veja 696 e 694 abaixo) |
| Cliente comprovou ser isento de inscrição | 2 | Não informar | Decisão do fiscal. Várias UFs não aceitam (805) |
| Mais de uma IE ativa | — | — | Usar a do estabelecimento (ou propriedade rural) que recebe a mercadoria |
| Consulta com erro ou timeout | — | — | Não decidir. Tentar de novo |
O valor 2 não sai da consulta. Ele depende de um enquadramento que o cliente precisa comprovar.
Rejeições que a consulta evita#
| Código | Mensagem | Causa comum |
|---|---|---|
| 232 | IE do destinatário não informada | Cliente tem IE ativa na UF e a nota saiu sem a IE |
| 233 | IE do destinatário não cadastrada | IE digitada errada ou de outra UF |
| 234 | IE do destinatário não vinculada ao CNPJ | IE de outra filial ou de outro cliente |
| 306 | IE do destinatário não está ativa na UF | IE suspensa, baixada ou não habilitada |
| 305 | Destinatário bloqueado na UF | Cliente bloqueado no cadastro da UF |
| 302 e 303 | Uso denegado | Cliente vedado de operar na UF |
| 728 | NF-e sem informação da IE do destinatário | 1 sem a tag IE |
| 791 | Destinatário isento de IE com a IE informada | 2 com a tag IE |
| 805 | SEFAZ do destinatário não permite contribuinte isento | 2 em UF que não aceita |
| 696 | Operação com não contribuinte deve indicar consumidor final | 9 em saída sem indFinal=1 |
| 694 | Não informado o grupo de ICMS para a UF de destino | 9 em venda interestadual sem o grupo ICMSUFDest |
A denegação (302 e 303) é a pior: a nota não é autorizada e o número fica usado.
805: em operação interestadual, não aceitam o 2 AM, BA, CE, GO, MG, MS, MT, PA, PE, RN, SE e SP. A regra tem exceções, como itens com ICMS-ST e operações isentas ou imunes. Em operação interna, cada UF decide.
696 e 694: venda para empresa sem IE é operação com consumidor final (indFinal=1). Se for interestadual, entra o DIFAL a cargo do remetente (EC 87/2015, regulamentada pela LC 190/2022) e a nota exige o grupo ICMSUFDest. Confirme o tratamento com o fiscal.
A partir de 16/11/2026: CNPJ conferido na Receita#
Com a NT 2026.007, a SEFAZ passa a conferir o CNPJ do destinatário na Receita Federal. Não cadastrado gera a rejeição 181. Situação diferente de Ativa gera a 182. Produção em 16/11/2026 (homologação até 26/10/2026).
A mesma NT permite emitente sem IE (contribuinte só de IBS/CBS). Se o seu cliente estiver nesse caso, ele é não contribuinte do ICMS: indIEDest=9.
Código: decidir o indIEDest em Python#
import os
import time
import unicodedata
import requests
API = "https://api.fiscalapi.com.br/api/consultar"
CHAVE = os.environ["FISCALAPI_KEY"] # nunca no código-fonte
SITUACOES_ATIVAS = {"ATIVA", "ATIVO", "HABILITADA", "HABILITADO"}
def normalizar(texto: str) -> str:
sem_acento = unicodedata.normalize("NFKD", texto or "")
return "".join(c for c in sem_acento if not unicodedata.combining(c)).strip().upper()
def consultar_ie(uf: str, cnpj: str, tentativas: int = 3) -> list[dict]:
for _ in range(tentativas):
resp = requests.get(
API,
headers={"X-API-Key": CHAVE},
params={"uf": uf, "cnpj": cnpj},
timeout=90,
)
if resp.status_code == 429: # limite do plano: espere o que a API pedir
time.sleep(int(resp.headers.get("Retry-After", "60")))
continue
resp.raise_for_status() # erro = não decide
return resp.json()["results"]
raise RuntimeError("Limite de requisições atingido. Tente mais tarde.")
def decidir_ind_ie_dest(uf_destinatario: str, cnpj: str) -> dict:
inscricoes = consultar_ie(uf_destinatario, cnpj)
if not inscricoes:
# Não contribuinte: sem tag IE. Em saída, a nota exige indFinal=1 (rejeição 696).
return {"indIEDest": 9, "IE": None, "acao": "emitir"}
ativas = [i for i in inscricoes if normalizar(i["situacao_ie"]) in SITUACOES_ATIVAS]
if len(ativas) == 1:
ie = "".join(ch for ch in ativas[0]["inscricao_estadual"] if ch.isdigit())
return {"indIEDest": 1, "IE": ie, "acao": "emitir"}
# Nenhuma ativa, ou mais de uma: decisão humana.
return {"indIEDest": None, "IE": None, "acao": "revisar", "inscricoes": inscricoes}
print(decidir_ind_ie_dest("PR", "12345678000199")) O CNPJ do exemplo é fictício. A chave da API exige um plano ativo ou créditos.
Quando consultar#
- No cadastro do cliente. Grave a IE, a situação e a data da consulta.
- Antes de faturar, se a última consulta for antiga. Defina a idade máxima com o fiscal.
- Em rotina periódica, num job seu. Respeite o limite do plano: 5, 20, 60 ou 120 requisições por minuto. Detalhes em rate limiting.
- Sem código: suba uma planilha de até 20.000 linhas no painel. Veja a consulta de IE em massa.
Para começar, veja a API de consulta de inscrição estadual.
Perguntas frequentes#
Como saber se o cliente é contribuinte do ICMS? Consulte a inscrição estadual pelo CNPJ na UF do cliente. IE ativa indica contribuinte (indIEDest=1). Nenhuma IE na UF indica não contribuinte (9).
Quando usar o indIEDest 2? Quando o cliente é contribuinte, mas está dispensado de inscrição e comprova isso. A consulta não mostra esse enquadramento. Em operação interestadual, 12 UFs rejeitam o 2 (805).
Cliente com IE suspensa pode receber NF-e? Informar uma IE que não está ativa gera a rejeição 306. Não emita no automático: revise o caso com o fiscal ou o contador.
Posso consultar pelo CPF? Sim, para produtor rural com IE no CPF. Use o parâmetro cpf. A busca por CPF depende do estado: São Paulo, por exemplo, só consulta por CNPJ ou pela IE.
Fontes#
- MOC 7.0, Anexo I: Leiaute e Regras de Validação da NF-e e da NFC-e (PDF), Portal da NF-e: campo E16a; regras E16a-10 a E16a-40, E17-20, E17-30, 5E17-10 a 5E17-63 e NA01-20
- Nota Técnica 2026.007 v1.10 (PDF), Portal da NF-e
- Documentação da consulta de IE, FiscalAPI
Artigos relacionados#
Consulte dados fiscais via API
Consulte Inscrições Estaduais, CNPJs e Certidões Negativas via API REST. Dados direto da SEFAZ e Receita Federal. Planos a partir de R$ 19,99/mês.
Criar conta →