Skip to main content
A Lei 12.741/2012 manda o documento fiscal informar o valor aproximado dos tributos federais, estaduais e municipais que incidem sobre o preço de venda. No leiaute da NF-e e da NFC-e esse valor é o vTotTrib, que aparece no item e no total do documento. A engineAPI resolve esse valor sozinha, pela tabela do IBPT (“De Olho no Imposto”), quando você liga a opção no cadastro da empresa. É opcional de propósito: emissor que não liga a opção continua exatamente como está hoje, sem nenhuma mudança no documento emitido.
Você não informa o valor. O vTotTrib não é campo do corpo da requisição, nem com a opção ligada. Quem calcula é a engineAPI, a partir do NCM do item, da UF do emissor e da origem da mercadoria; é isso que permite citar a fonte no documento, como o termo de uso da tabela exige. Se você mandar o campo, a requisição é recusada com a mesma mensagem de sempre, e nada é ignorado em silêncio.

Como ligar

No cadastro da empresa (emissor), ligue valorAproximadoTributosEnabled:
A partir daí, toda NF-e e NFC-e desse emissor sai com o valor calculado. Para voltar ao comportamento anterior, mande false.

O que entra no documento

Com a opção ligada, cada nota passa a levar três coisas: O texto acrescentado às informações complementares tem esta forma:
Ele é acrescentado ao que você mandou em informacoesComplementares: nada do seu texto é apagado ou cortado.

Como o valor é calculado

Para cada item:
  1. A UF do emissor e o NCM do item selecionam a linha da tabela.
  2. A origem da mercadoria (items[].icms.origem) decide qual percentual federal vale: produto nacional usa a coluna nacional; produto estrangeiro, ou nacional com conteúdo de importação acima de 40% (origens 1, 2, 3, 6, 7 e 8), usa a coluna importado.
  3. O percentual total (federal + estadual + municipal) incide sobre o valor da operação do item, o mesmo valor líquido que serve de base no resto do documento (produto menos desconto, mais frete/seguro/outras despesas quando cobrados de você).
  4. O total do documento é a soma dos valores já arredondados de cada item, e por isso sempre fecha com o somatório dos itens.
O número é aproximado por definição legal (Decreto 8.264/2014, art. 2º, § 2º: a apuração pode se dar por valores médios). A fonte dos percentuais é o IBPT, e é por isso que a citação da fonte acompanha o valor: a responsabilidade pelo cálculo é do instituto que publica a tabela.

Quando a emissão é recusada

Todas as recusas acontecem antes de qualquer número fiscal ser consumido.

Quando a tabela vence

A tabela do IBPT tem prazo de validade publicado pela própria fonte, e o termo de uso proíbe exibir o dado fora da validade. Se a validade passar e a engineAPI ainda não tiver renovado o espelho, o comportamento é:
  • a nota é emitida normalmente, sem o vTotTrib e sem a citação;
  • o time da engineAPI é avisado na hora, porque renovar a tabela é obrigação nossa, não sua.
Recusar a sua emissão por uma falha de operação nossa seria trocar um problema por outro pior.

Quando o NCM não está na tabela

A tabela do IBPT não cobre todo código da NCM. Quando ela não tem linha para o NCM do seu item na UF do emissor, o padrão da engineAPI é o mesmo da tabela vencida:
  • a nota é emitida normalmente, sem o vTotTrib e sem a citação da fonte em nenhum item, nem nos que têm linha, porque o total precisa fechar com a soma dos itens;
  • a ausência não é silenciosa: sai em log e num contador que o time da engineAPI acompanha.
Derrubar uma nota legítima por causa de um código fora da tabela seria o pior dos dois lados, e é um estrago sem desfazer. Se a sua operação precisar do comportamento oposto (recusar em vez de emitir sem o valor), fale com o suporte: é uma chave de ambiente (IBPT_BLOQUEAR_NCM_DESCONHECIDO), sem mudança de código, e aí volta o 422 IBPT_NCM_SEM_TABELA. Vale notar um caso que engana: a fonte responde a alguns códigos (como 00000000) com uma linha genérica descrita como “produto não especificado na lista de NCM”. A engineAPI não usa esse número: é a fonte dizendo que não conhece o produto, e citá-la sobre um valor genérico não seria honesto. Esse caso cai na mesma regra acima.

No sandbox

O sandbox exercita o fluxo inteiro com uma tabela de demonstração: o documento sintético sai com vTotTrib no item e no total, e a citação declara, no próprio texto, que o dado é de demonstração e não tem valor fiscal. Dois NCMs reproduzem, no sandbox, o que a fonte real faz com código que ela não conhece: 00000000 (a linha genérica “não especificado”) e qualquer código começado por 9999 (o “não conheço” direto). Nos dois, o documento sai sem vTotTrib e sem a citação. Exercite esse caminho antes de ligar a opção em produção.

Perguntas rápidas

Posso mandar o valor já calculado pelo meu ERP? Hoje não. O campo não existe no corpo da requisição, e a citação da fonte que vai no documento só é honesta sobre um número que a engineAPI calculou. Vale para NFS-e? Não. Na NFS-e o total de tributos tem grupo próprio no leiaute nacional (totTrib, com pTotTribSN para o Simples). Veja o guia de NFS-e. A tabela é a mesma para todas as UFs? Não: os percentuais mudam por UF, e a linha usada é sempre a da UF do emissor.