POST /v1/fiscal/resolve-ncm recebe a descrição de um produto em linguagem
natural ("camiseta de algodão estampada", "refrigerante cola 2 litros") e
devolve até 5 sugestões de NCM, ordenadas por confiança. Pensado para o
cadastro de produto: quem está emitindo descreve o que vende, o sistema oferece
os códigos mais prováveis e a pessoa confirma.
- Consultivo, nunca automático: só sugere. Quem escolhe o NCM é você; o endpoint não escreve em cadastro nenhum.
- Determinístico, sem IA no caminho: uma consulta de similaridade contra o catálogo de produtos. Mesma entrada, mesma resposta.
- Silêncio honesto: sem produto parecido no catálogo,
200comsugestoes: [], nunca um NCM inventado.
Quais campos enviar? A lista completa (todos os parâmetros, tipos e
obrigatoriedade, gerada direto do contrato real) está no
Catálogo de campos: resolve-ncm.
Como chamar
descricaoé obrigatória: de 3 a 200 caracteres (o texto é normalizado comtrimantes da consulta).contexto.cnaeé opcional e aceita qualquer máscara ("4711-3/02"ou"4711302"). Ele é validado e registrado, mas não influencia a ordenação nesta versão, está reservado para desempate futuro. Documentamos isso em vez de fingir: não existe hoje uma fonte oficial CNAE → NCM para desempatar, e aqui não entra regra sem fonte.
Resposta: descrição com produtos parecidos
ncmvem sempre com 8 dígitos, sem máscara.sugestoesvem ordenada porconfidencedecrescente, no máximo 5 itens.descricaoé o produto real mais parecido que carrega aquele NCM no catálogo, serve para você reconhecer o código (“é isso mesmo que eu vendo?”). Não é o texto oficial da nomenclatura: o texto normativo da NCM vive na TIPI, não neste endpoint.
Como ler o confidence
confidence (0 a 1) é a similaridade medida entre a sua descrição e o
melhor produto parecido do catálogo, descontada quando aquele NCM aparece
isolado entre os semelhantes. Não é probabilidade de acerto fiscal e não vira
garantia.
Régua prática:
Descrições genéricas rendem confiança baixa. Detalhar o produto (tipo, material,
apresentação, volume) melhora bastante o resultado.
Resposta: nada parecido (honesto, não é erro)
Erros de validação
Descrição ausente, com menos de 3 caracteres (apóstrim), acima de 200
caracteres, ou contexto.cnae fora do formato de 7 dígitos, retorna 400 RFC 7807,
com mensagem em português apontando o campo.
Cascata de NCM e confirmação do comerciante (em implantação)
A cascata é liberada por parceiro, em piloto. Para o parceiro que não foi liberado, o comportamento acima não muda. Para o parceiro liberado, o Cérebro Fiscal deixa de chutar NCM pelo produto parecido para item sem NCM confiável e segue três degraus:- o Jev percorre a árvore oficial da NCM e só aceita sozinho quando a resposta é alta e bem separada da segunda opção;
- um modelo de raciocínio escolhe só entre códigos oficiais vigentes, aplicando as Regras Gerais de Interpretação;
- persistindo a dúvida, a emissão assistida não emite: devolve
422CONFIRMACAO_NCM_NECESSARIAantes de reservar número, comconfirmacao_ncm_necessaria(opções com a descrição oficial e em linguagem simples, uma pergunta de fato e ocontexto_id).
cascata.finalistas (códigos
oficiais vigentes, com a descrição da tabela NCM) ao lado das sugestoes.
Confirmar com o comerciante
opcao (uma das opções devolvidas, sem alterar NCM nem CEST) ou
resposta (o texto que o comerciante respondeu à pergunta de fato). Resposta
que não traz o fato que separa as opções volta com status: "pendente".
Contexto de outra empresa, vencido, já usado ou opção fora da lista é recusado
sem gravar nada (404, 409 CONFIRMACAO_EXPIRADA/CONFIRMACAO_JA_RESOLVIDA/
CONFIRMACAO_DESATUALIZADA, 422 CONFIRMACAO_OPCAO_INVALIDA). Confirmado,
reenvie a emissão: o item sai com o NCM escolhido.
O comerciante confirma uma vez
Para item sem GTIN (campo ausente ouSEM GTIN), a confirmação fica
lembrada para a empresa: a próxima emissão com a mesma descrição no mesmo
emissor sai com o NCM confirmado, sem nova pergunta. A descrição precisa ser a
mesma escrita (maiúsculas e espaços repetidos não contam; acento, número,
unidade e qualquer palavra contam): leite em pó 400g e leite em pó 800g
são produtos diferentes e cada um é confirmado uma vez. Outra empresa, mesmo
do mesmo parceiro, nunca aproveita a escolha.
Antes de reaproveitar, o código é conferido de novo na tabela vigente na data
da emissão. Código extinto ou CEST que saiu da tabela não é reaproveitado: o
item volta para a cascata e, na dúvida, para a pergunta. Uma segunda
confirmação com escolha diferente para a mesma descrição, enquanto a primeira
continua valendo, é recusada com 409 MEMORIA_DESCRICAO_CONFLITO e nada é
gravado. Item com GTIN continua resolvido pelo GTIN.
Motivo da dúvida: real ou transitório
confirmacao_ncm_necessaria.motivo diz por que o motor não decidiu
sozinho, e o reenvio se comporta de um jeito para cada família:
Para não insistir num serviço fora do ar, o reenvio consulta o classificador
no máximo 3 vezes a cada 10 minutos por item; acima disso devolve o último
contexto, ainda com
jev_indisponivel, sem nova consulta. Passada a janela,
volta a tentar. arvore_ausente fica na família real de propósito: é a tabela
NCM do motor que precisa ser carregada, e reenviar não resolve.
Corrigir ou revogar a escolha lembrada (sem GTIN)
Se a escolha lembrada para uma descrição sem GTIN estiver errada, corrija-a para a empresa. A próxima emissão com a mesma descrição já sai com o NCM corrigido, e a confirmação antiga deixa de valer:descricao é a descrição do item como vai na nota (mesma regra de igualdade
acima). cest é opcional e precisa estar listado para o NCM. O NCM precisa ser
código final vigente na tabela oficial; senão 422
CORRECAO_NCM_NAO_VIGENTE ou CORRECAO_CEST_FORA_DA_TABELA, sem gravar nada.
A resposta (200) traz efeito (criada, substituida ou mantida), a
escolha anterior e contextosRevogados.
Para apagar a escolha e voltar a classificar o produto do zero (nova decisão
ou nova pergunta):
403, nada muda), e ficam registradas na
auditoria. Produto com GTIN continua sendo corrigido em
classification/correct, que exige o ean como GTIN válido
(veja “Confirmar ou corrigir a classificação de um produto com GTIN”,
abaixo).
Código de serviço da NFS-e (em implantação)
A mesma rota fecha a dúvida sobre o código de serviço da NFS-e assistida. Com a cascata de serviço ligada, a NFS-e semdpsNacional.cTribNac cuja
descrição não basta para escolher o código volta 422
CONFIRMACAO_SERVICO_NECESSARIA antes de reservar o número, com
confirmacao_servico_necessaria (pergunta de fato e opções oficiais) em
details.camposNaoResolvidos[]. Confirme com tipo: "servico":
{ cTribNac }, exatamente como devolvida; ou mande resposta. As
recusas são as mesmas acima, e repetir a mesma confirmação devolve o mesmo
resultado sem gravar de novo. O código 99.01 (sem incidência) nunca aparece
como opção. Confirmado, reenvie a emissão.
Confirmar ou corrigir a classificação de um produto com GTIN
Depois da emissão, a empresa pode confirmar que o NCM de um produto está certo ou trocar por outro. As duas rotas gravam a escolha só para a empresa informada (não mexem no catálogo geral) e a próxima nota com o mesmo GTIN já sai com ela:POST /v1/fiscal/classification/correct recebe o mesmo corpo com o NCM novo.
Resposta 201 com o override gravado.
O ean identifica o produto, então precisa ser um GTIN de verdade: 8, 12,
13 ou 14 dígitos com o dígito verificador GS1 correto. Espaços nas pontas são
removidos. Qualquer outra coisa volta 400 VALIDATION_ERROR em
errors[].field: "ean", sem gravar nada:
Produto sem GTIN não usa estas rotas. A escolha dele é guardada pela
descrição: corrija em
POST /v1/fiscal/classification/description-memory/correct
(veja “Corrigir ou revogar a escolha lembrada”, acima).
O que fazer com a sugestão
O fluxo recomendado é: chamar o endpoint no cadastro do produto, mostrar as sugestões com adescricao de referência, deixar a pessoa escolher (ou digitar
outro NCM) e só então gravar o produto no seu sistema. Depois da emissão, o
Cérebro Fiscal usa o NCM confirmado para resolver a
tributação, e o loop de classification/confirm e classification/correct
deixa a classificação melhor a cada nota.
Veja também: Cérebro Fiscal,
Serviço Padrão por CNAE,
CFOP, NCM e CST.