Guía completa paraExtracción de NF-e brasileña

Cada XML de NF-e brasileña contiene más de 500 campos de datos estructurados, incluidos desgloses de impuestos por línea que determinan tu recuperación de créditos de ICMS y PIS/COFINS. Sin embargo, la mayoría de los equipos de AP extraen menos de 20. Esta guía es una referencia completa para convertir XML de NF-e en datos de hoja de cálculo que realmente puedas usar: tablas de mapeo de campos, validación de tasas de ICMS por par de estados, referencias de códigos CST y CFOP, manejo de ICMS-ST y los pasos prácticos para la transición al esquema dual de 2026.

Pare de digitar dados — deixe a IA ler por você
Envie uma imagem ou PDF — dados estruturados em 10 segundos
Experimente agora →
Ilustración de portada titulada Extracción de NF-e brasileña: Mapeo completo de campos XML y guía de impuestos con tres íconos vectoriales planos para rutas de etiquetas XML en portugués, cuatro impuestos por línea de artículo y la clave de acceso de 44 dígitos.

Conclusiones clave

  1. Un XML de NF-e contiene más de 500 campos de datos estructurados, pero la mayoría de los equipos de AP extraen menos de 20, dejando la recuperación de créditos de ICMS y el seguimiento de insumos de PIS/COFINS completamente invisibles.
  2. El cuello de botella no es la disponibilidad de datos (el XML está validado por el gobierno), sino que cada línea de artículo anida cuatro árboles de impuestos separados (ICMS, IPI, PIS, COFINS), cada uno con más de 10 variantes de código CST que cambian lo que significa un valor cero para tu posición de crédito.
  3. Una plantilla de extracción semántica que mapee las cuatro ramas de impuestos en una sola pasada convierte cada NF-e de un archivo XML opaco en una herramienta transparente de recuperación de créditos: una sola suposición incorrecta de régimen en una factura de BRL 100.000 cuesta BRL 9.250 en créditos perdidos.

Extrair dados de uma NF-e brasileira é fundamentalmente diferente de extrair dados de uma nota fiscal comum. Uma nota fiscal padrão em PDF exige OCR ou compreensão de documentos baseada em IA para ler campos de um layout visual. Uma NF-e chega como um arquivo XML — legível por máquina por design — com uma estrutura validada por mais de 400 regras automatizadas da SEFAZ, a autoridade fiscal estadual do Brasil, antes mesmo de as mercadorias descritas serem liberadas para sair do armazém.

O desafio não é a disponibilidade dos dados. É a complexidade dos dados. Uma fatura europeia Peppol BIS usa cerca de 100 elementos XML. Uma NF-e na versão 4.0 do leiaute carrega mais de 500 grupos de elementos estruturados distribuídos em vários níveis aninhados, com quatro ramos separados de cálculo de impostos por item de linha, cada um usando seu próprio código de situação tributária, base de cálculo, alíquota e regra de crédito. Os dados estão completos — mas extraí-los corretamente exige entender o que cada campo significa e como ele se conecta aos demais.

Este guia foi criado como uma referência de trabalho. Se você está configurando um fluxo de extração de NF-e pela primeira vez, comece com o passo a passo na seção 2. Se você já tem um pipeline de extração em funcionamento e precisa validar uma alíquota específica de ICMS ou consultar um código CFOP, vá direto para as tabelas de referência nas seções 3 a 6. Cada seção é utilizável de forma independente, mas o valor total está na visão completa: saber quais campos extrair, como verificar se estão corretos e o que fazer quando a NF-e chega com um evento de cancelamento ou um indicador de contingência.

Se você é novo no universo da NF-e, comece com nosso guia para iniciantes sobre a Nota Fiscal Eletrônica antes de mergulhar nos detalhes de extração. Este guia pressupõe que você entende a distinção básica entre DANFE e XML, o processo de autorização da SEFAZ e os quatro impostos principais — e foca em extrair esses dados corretamente.

O Que Torna a Extração de NF-e Diferente da Extração de Notas Fiscais Comum

Três diferenças estruturais definem como a extração de NF-e funciona e por que uma abordagem padrão de extração de notas fiscais — enviar um PDF, definir colunas, obter dados — só resolve parte do problema.

1. A fonte é XML, não um documento visual. A extração de notas fiscais comum é um problema de leitura: o sistema de IA ou OCR deve localizar o texto na página, reconhecer qual string é o número da nota fiscal e mapeá-la para a coluna correta. A extração de NF-e é um problema de análise e mapeamento: os dados já estão em tags legíveis por máquina, mas a estrutura XML usa nomes de tags em português (<emit> para emissor, <dest> para destinatário, <imposto> para impostos) e hierarquias profundamente aninhadas que variam conforme o regime tributário. O desafio da extração muda de "encontrar os dados" para "mapear o caminho XML correto para cada coluna de saída".

2. A estrutura tributária é multidimensional. Um único item de linha de NF-e carrega até quatro cálculos de impostos independentes — ICMS (estadual, com mais de 10 variantes dependendo do código CST), IPI (imposto federal, dependente do produto), PIS e COFINS (contribuições sociais federais). Cada imposto tem sua própria base de cálculo, alíquota, CST (código de situação tributária) e regras de elegibilidade de crédito. Diferente de uma nota fiscal de IVA da UE, onde uma única porcentagem de imposto se aplica à linha inteira, um item de linha de NF-e contém subgrupos separados de <ICMS>, <IPI>, <PIS> e <COFINS>, cada um potencialmente com bases tributáveis diferentes. Extrair apenas os totais perde o detalhe que determina se cada crédito tributário foi calculado corretamente.

3. O fluxo de extração deve considerar eventos após a emissão. Uma NF-e pode ser cancelada em até 24 horas. Ela pode receber uma Carta de Correção (CC-e) que altera campos específicos. Pode ser emitida em modos de contingência se a SEFAZ estiver inacessível. Ela aciona eventos do lado do destinatário chamados manifestação do destinatário — uma obrigação legal do comprador de confirmar o recebimento, reconhecer a transação ou rejeitá-la. Um pipeline completo de extração deve lidar com essas mudanças orientadas a eventos, não apenas extrair o XML inicial e considerar concluído. Para uma análise mais aprofundada de como as regras de cancelamento e contingência afetam os fluxos de AP, veja nossa análise da complexidade do processamento de NF-e.

Essas três diferenças significam que a extração de NF-e não é "extração de notas fiscais com nomes de campos em português". É uma categoria própria — mais próxima da análise de EDI do que do OCR de documentos, mas com uma complexidade tributária que excede a maioria dos padrões EDI por uma ordem de magnitude. Para conhecer o outro grande sistema de nota fiscal eletrônica da América Latina com suas próprias complexidades estruturais, veja nosso guia completo para extração de CFDI mexicano.

O Fluxo Completo de Extração de NF-e: Passo a Passo

Um fluxo de extração de NF-e de ponta a ponta, seja manual, baseado em script ou orientado por IA, segue a mesma sequência lógica. Cada etapa produz uma saída específica que alimenta a próxima.

1

Colete o XML — Não Apenas o DANFE

Toda transação de NF-e gera um arquivo XML. Se o seu fornecedor enviou apenas o DANFE, use a chave de acesso de 44 dígitos impressa no DANFE para baixar o XML completo no portal da SEFAZ do estado emissor. A legislação brasileira exige que os fornecedores forneçam o XML, e você precisa dele tanto para a extração quanto para o arquivamento obrigatório de cinco anos. Armazene os XMLs originais exatamente como recebidos — modificá-los invalida a assinatura digital e quebra sua trilha de auditoria.

2

Verifique a Chave de Acesso e o Status na SEFAZ

Antes de processar qualquer dado, confirme se a NF-e é válida. Extraia a chave de acesso de 44 dígitos do elemento <chNFe> e consulte o web service ou portal da SEFAZ. Verifique se o status é "Autorizada" — não "Cancelada" ou "Denegada". Esta etapa deve ser automatizada em qualquer fluxo de trabalho baseado em script ou ferramenta, pois uma NF-e pode ser cancelada em até 24 horas após a emissão. Verificar a chave de acesso no momento da extração evita que você processe um documento que não tem mais validade legal.

3

Analise a Estrutura do XML em Grupos

Um XML de NF-e tem uma estrutura de nível superior previsível. Os principais grupos de elementos são: <ide> (identificação do documento), <emit> (emissor/fornecedor), <dest> (destinatário/você), <det> (itens de linha — repetidos por produto), <total> (totais da nota — um por tipo de imposto), <transp> (transporte/frete), <cobr> (cobrança/faturamento) e <infAdic> (informações adicionais). Seu script ou ferramenta de extração deve analisar cada grupo de forma independente e depois unir os resultados no nível do item de linha.

4

Mapeie os Campos para as Colunas de Saída Usando a Tabela de Referência

Para cada campo necessário na sua planilha ou arquivo de importação ERP, identifique o caminho exato no XML, o tipo de dado esperado e a transformação necessária (datas no formato ISO, valores decimais com duas casas, strings de CNPJ com zeros à esquerda preservados). Use a referência de mapeamento de campos na seção 3 abaixo. A distinção crítica nesta etapa: separe os campos de nível de cabeçalho (extraídos uma vez por NF-e) dos campos de item de linha (extraídos para cada elemento <det>). Sua estrutura de saída deve refletir isso: uma tabela de cabeçalho com uma linha por nota e uma tabela de itens de linha com várias linhas por nota.

5

Valide os cálculos de impostos com dados de referência

Os XMLs de NF-e contêm os cálculos de impostos do fornecedor, não os seus. Seu fluxo de extração deve incluir verificações de validação: a alíquota de ICMS corresponde à alíquota correta para o par de estados de origem-destino? A alíquota de IPI corresponde à faixa de código NCM do produto? O código CST é consistente com o tipo de transação descrito pelo CFOP? A seção 4 deste guia fornece as tabelas de referência necessárias para estas verificações. Marque qualquer discrepância para revisão — não importe silenciosamente dados fiscais incompatíveis no seu ERP.

6

Exporte, arquive e monitore eventos

Exporte os dados estruturados ao seu ERP ou planilha. Arquive tanto o XML original (exatamente como recebido, sem modificações) como a saída da extração. Depois, configure um processo de monitoramento: revise o status SEFAZ dos documentos NF-e extraídos 48 horas após a extração para detectar cancelamentos ou eventos de correção. Um fornecedor pode cancelar uma NF-e dentro de 24 horas sem notificá-lo. Se você extraiu dados de uma NF-e agora cancelada e os postou no seu ERP, você tem um registro de reversão a criar. Ferramentas automatizadas podem lidar com esta etapa de monitoramento — as equipes humanas muitas vezes a ignoram.

Referência de Mapeamento de Campos do XML de NF-e

As tabelas a seguir mapeiam os caminhos essenciais do XML de NF-e para colunas de planilha. Os campos são classificados por criticidade: Crítico (obrigatório para processamento básico), Importante (necessário para validação fiscal e recuperação de créditos) e Específico (necessário para cenários específicos, como despacho aduaneiro ou declarações SPED). Todos os caminhos são relativos ao namespace padrão do XML de NF-e.

Campos de Cabeçalho (Uma Linha por Nota Fiscal)

Coluna de SaídaCaminho no XML (relativo a <nfeProc>/<NFe>/<infNFe>)Exemplo de ValorCriticidade
Chave de Acesso@Id (remover prefixo "NFe") ou <ide>/<cNF> combinado com o prefixo35200600012345000106550010000012341012345678Crítico
Número da NF-e<ide>/<nNF>1234Crítico
Série da NF-e<ide>/<serie>1Crítico
Data de Emissão<ide>/<dhEmi>2026-06-15T14:30:00-03:00Crítico
Protocolo de Autorização SEFAZ<ide>/<nProt>135260001234567Crítico
Tipo de Emissão<ide>/<tpEmis>1 (normal), 2-6 (contingência)Importante
CNPJ do Fornecedor<emit>/<CNPJ>00.000.000/0001-91Crítico
Razão Social do Fornecedor<emit>/<xNome>Fornecedor Exemplo LtdaCrítico
Inscrição Estadual do Fornecedor<emit>/<IE>123.456.789.110Importante
Estado do Fornecedor (Código IBGE)<emit>/<enderEmit>/<cUF>35 (São Paulo), 33 (Rio de Janeiro)Crítico
CNPJ do Destinatário<dest>/<CNPJ>00.000.000/0002-82Crítico
Estado do Destinatário (Código IBGE)<dest>/<enderDest>/<cUF>31 (Minas Gerais)Crítico
Valor Total da NF-e<total>/<ICMSTot>/<vNF>12500.00Crítico
Valor Total do ICMS<total>/<ICMSTot>/<vICMS>1500.00Importante
Valor Total do ICMS-ST<total>/<ICMSTot>/<vST>450.00Importante
Valor Total do IPI<total>/<ICMSTot>/<vIPI>625.00Importante
Valor Total do PIS<total>/<ICMSTot>/<vPIS>206.25Importante
Valor Total do COFINS<total>/<ICMSTot>/<vCOFINS>950.00Importante
Valor do Desconto<total>/<ICMSTot>/<vDesc>250.00Específico
Valor do Frete<total>/<ICMSTot>/<vFrete>350.00Importante
Valor do Seguro<total>/<ICMSTot>/<vSeg>50.00Específico
Informações de Pagamento/Cobrança<cobr>/<dup>/<dVenc> (data de vencimento) e <vDup> (valor)2026-07-15 / 12500.00Importante
CFOP (no nível do cabeçalho — geralmente do primeiro item)<det>[1]/<prod>/<CFOP>2101Importante
Natureza da Operação<ide>/<natOp>Venda de mercadoria adquirida de terceirosEspecífico

Campos de Item de Linha (Uma Linha por Produto)

Cada elemento <det> dentro de <infNFe> representa uma linha de produto. O atributo nItem fornece o número da linha (indexado a partir de 1). Os seguintes campos se repetem para cada <det>:

Coluna de SaídaCaminho no XML (por <det>)Criticidade
Número da Linha@nItemCrítico
Código do Produto (Código Interno do Fornecedor)<prod>/<cProd>Importante
Descrição do Produto<prod>/<xProd>Crítico
Código NCM (classificação do produto com 8 dígitos)<prod>/<NCM>Crítico
Código CFOP (operação fiscal com 4 dígitos)<prod>/<CFOP>Crítico
CST — Código da Situação Tributária do ICMS<imposto>/<ICMS>/<ICMS00>/<CST> (varia conforme o subgrupo)Crítico
Quantidade<prod>/<qCom>Crítico
Preço Unitário<prod>/<vUnCom>Crítico
Total da Linha (Bruto)<prod>/<vProd>Crítico
Base de Cálculo do ICMS (BC ICMS)<imposto>/<ICMS>/<ICMS00>/<vBC>Importante
Alíquota do ICMS (%)<imposto>/<ICMS>/<ICMS00>/<pICMS>Importante
Valor do ICMS<imposto>/<ICMS>/<ICMS00>/<vICMS>Crítico
Base de Cálculo do ICMS-ST (se aplicável)<imposto>/<ICMS>/<ICMSST>/<vBCST>Importante
Valor do ICMS-ST (se aplicável)<imposto>/<ICMS>/<ICMSST>/<vICMSST>Importante
Base de Cálculo do IPI<imposto>/<IPI>/<IPITrib>/<vBC>Importante
Alíquota de IPI (%)<imposto>/<IPI>/<IPITrib>/<pIPI>Importante
Valor do IPI<imposto>/<IPI>/<IPITrib>/<vIPI>Importante
Base de Cálculo do PIS<imposto>/<PIS>/<PISAliq>/<vBC>Importante
Alíquota do PIS (%)<imposto>/<PIS>/<PISAliq>/<pPIS>Importante
Valor do PIS<imposto>/<PIS>/<PISAliq>/<vPIS>Importante
Base de Cálculo do COFINS<imposto>/<COFINS>/<COFINSAliq>/<vBC>Importante
Alíquota do COFINS (%)<imposto>/<COFINS>/<COFINSAliq>/<pCOFINS>Importante
Valor do COFINS<imposto>/<COFINS>/<COFINSAliq>/<vCOFINS>Importante
UOM (Unidade de Medida)<prod>/<uCom>Nicho
GTIN/EAN (Código de Barras do Produto)<prod>/<cEAN>Nicho
EX TIPI (código de desoneração do IPI)<prod>/<EXTIPI>Nicho

Nota importante sobre subgrupos de ICMS: O caminho do ICMS no XML dentro de <imposto> varia dependendo do código CST. Um ICMS tributado normalmente usa o subgrupo <ICMS00>. Outros códigos CST usam <ICMS10> (tributado + ST), <ICMS20> (base reduzida), <ICMS30> (ST isento de ICMS regular), <ICMS40> (isento), <ICMS51> (diferido), <ICMS60> (já recolhido), <ICMS90> (outros), <ICMSPart> (DIFAL — diferencial de alíquota interestadual) e <ICMSST> (substituição tributária). Seu mapeamento de extração deve lidar com todas essas variantes, não apenas com <ICMS00>.

Validação de Impostos: Como Verificar os Números Extraídos

Um XML de NF-e contém os cálculos de impostos do próprio fornecedor, que podem estar incorretos. O SEFAZ valida que a estrutura do XML está completa e que a aritmética básica é consistente, mas não verifica que a alíquota correta de ICMS foi usada para o par origem-destino, ou que a alíquota de IPI corresponde à alíquota oficial do TIPI para o código NCM. Isso é sua responsabilidade como comprador — e é a fonte mais comum de pagamentos a maior recuperáveis na AP brasileira.

Validação da Alíquota de ICMS Interestadual por Par de Estados

A alíquota de ICMS em uma transação interestadual depende do estado de origem (de onde o fornecedor envia) e do estado de destino (onde sua entidade está localizada). Use esta tabela para validar que a alíquota de ICMS na NF-e corresponde à alíquota correta para o par de estados:

Estado de OrigemEstado de DestinoAlíquota ICMS PadrãoNota
Qualquer estado do Sul/Sudeste (SP, RJ, MG, ES, PR, SC, RS)Qualquer estado do Sul/Sudeste12%Alíquota interestadual padrão dentro da região Sul/Sudeste
Qualquer estado do Sul/SudesteQualquer estado do Norte/Nordeste/Centro-Oeste7%Alíquota reduzida para regiões menos desenvolvidas (Art. 2, I, LC 87/96)
Qualquer estado do Norte/Nordeste/Centro-OesteQualquer estado (incl. Sul/Sudeste)12%Alíquota padrão para envios de regiões em desenvolvimento
Qualquer estadoQualquer estado (mercancías importadas com >40% de conteúdo estrangeiro)4%Resolução Senado 13/2012 — aplica a produtos com mais de 40% de conteúdo importado
Estado fornecedor = estado receptor (intraestadual)Mesmo estado17%–22%Varia por estado: SP=18%, RJ=20%, MG=18%, PR=19%, RS=17%, etc.
Gráfico de barras intitulado Verifique a Alíquota de ICMS Contra o Par de Estados mostrando 4% para mercancías com mais de 40% de importação, 7% do Sudeste ao Norte/Nordeste, 12% do Sudeste ao Sudeste, e 18% dentro de São Paulo.

Se a alíquota de ICMS na NF-e não corresponder à alíquota esperada para o par origem-destino (de <emit>/<enderEmit>/<cUF> a <dest>/<enderDest>/<cUF>), marque o documento para revisão. Discrepancias de alíquota são um dos erros mais comuns em faturas de fornecedores brasileiros e podem levar a cálculos incorretos de créditos fiscais.

Códigos CST: Os Códigos de Situação Tributária Que Mudam Tudo

O CST (Código da Situação Tributária) é um código de três dígitos que indica como um imposto foi aplicado, não apenas a alíquota. Cada cálculo de ICMS, IPI, PIS e COFINS em uma NF-e carrega seu próprio CST. O primeiro dígito do CST indica a origem do regime tributário (0=nacional, 1=estrangeiro, 2=estrangeiro com conteúdo nacional — varia por imposto). Especificamente para ICMS, o CST determina se o ICMS é tributável, isento, diferido, substituído (ST) ou cobrado por regime especial. Os códigos CST de ICMS de três dígitos seguem uma lógica específica:

CSTSignificadoCrédito Disponível?Impacto no AP
00Tributado — alíquota integral de ICMS aplicadaSimCompra padrão. Extraia vBC, pICMS, vICMS normalmente.
10Tributado + Substituição Tributária (ICMS-ST)Sim (apenas ICMS regular)Dois valores de ICMS: regular e ST. Extraia ambos — o valor de ST não é seu crédito.
20Tributado com base de cálculo reduzidaSim (proporcional)A base tributável é reduzida (ex.: por 1/3). O campo vBC reflete a base reduzida.
30Isento de ICMS regular + ST aplicávelNãoSem ICMS regular para extrair. Apenas campos de ST existem. Seu custo inclui o valor de ST.
40Isento — ICMS não cobradoNãoSem valor de ICMS. O total da linha permanece o mesmo, mas nenhum crédito é gerado.
41Isento — não tributávelNãoSemelhante ao CST 40. Sem ICMS para extrair ou creditar.
51Diferido — pagamento de ICMS adiado para etapa posteriorDependeExtraia vBC e pICMS mesmo se vICMS for zero — o diferimento afeta eventos futuros.
60ICMS já recolhido pelo fornecedor (ou elo anterior na cadeia)NãoComum em combustível, energia, telecomunicações. O ICMS não é um item de linha — foi pago a montante.
70Tributado com base reduzida + STSim (proporcional)Híbrido: base reduzida no ICMS regular + valor de ST separado. Ambos devem ser extraídos.
90Outros — regime especial não coberto acimaDependeRevise manualmente. O <infAdic> da NF-e deve explicar o regime.

Seu fluxo de extração deve sempre capturar o código CST junto com o valor do imposto — um "ICMS zero" com CST 40 (isento) é uma situação muito diferente de um "ICMS zero" com CST 00 (erro). O CST determina se o zero é um tratamento fiscal legítimo ou uma lacuna de dados que você precisa investigar.

Validação de IPI, PIS e COFINS

Verificación de IPI: A alíquota de IPI é determinada pelo código NCM do produto. O Brasil publica a TIPI (Tabela de Incidência do IPI), uma tabela de alíquotas abrangente que mapea cada código NCM a uma alíquota de IPI. Embora você não possa manter a planilha completa da TIPI internamente (contiene milhares de entradas e é atualizada periodicamente pela Receita Federal), você pode verificar itens de alto valor: extraer o NCM, buscar o intervalo de alíquota TIPI e confirmar que o campo pIPI está dentro do intervalo esperado. O código CST de IPI também é importante — CST 50 significa que o IPI está isento, enquanto 00 significa que é tributável.

Verificación de PIS e COFINS: Estas contribuciones federales se aplican bajo el régimen cumulativo ou não cumulativo. O regime é determinado pela classificação fiscal do fornecedor e governa tanto a alíquota como a disponibilidade de créditos para você como comprador:

RegimeAlíquota PISAlíquota COFINSCombinadoO Comprador Obtiene Créditos?
Não Cumulativo (Lucro Real)1,65%7,6%9,25%Sí — o comprador pode creditar PIS e COFINS contra suas próprias contribuciones
Cumulativo (Lucro Presumido)0,65%3,0%3,65%No — não se generan créditos de entrada sob o regime cumulativo

Se a alíquota de PIS na NF-e é 1,65% e a de COFINS é 7,6%, o fornecedor está sob o regime não cumulativo e você pode reclamar créditos de entrada de PIS/COFINS. Se as alíquotas são 0,65% e 3,0%, não há créditos disponíveis. O CST do fornecedor (tipicamente 01 = não cumulativo ou 02 = cumulativo) confirma o regime. Extraer e validar estas alíquotas afeta diretamente sua posição de imposto recuperável.

Regla de validación práctica: Para cada NF-e, extraiga la alíquota de PIS y la alíquota de COFINS a nivel de línea. Si la alíquota combinada es 9,25%, márquela para seguimiento de crédito. Si es 3,65%, confirme el régimen del proveedor y tenga en cuenta que no se aplican créditos de PIS/COFINS. Un único supuesto de régimen incorrecto en una factura de BRL 100.000 es BRL 9.250 de créditos perdidos — o BRL 5.600 de créditos reclamados incorrectamente.

Substituição Tributária do ICMS (ICMS-ST): O Mecanismo Que Você Não Pode Ignorar

ICMS-ST (Substituição Tributária) é um mecanismo em que o fisco atribui ao primeiro elo da cadeia — geralmente o fabricante ou importador — a responsabilidade pela coleta do ICMS de toda a cadeia de suprimentos. Em vez de cada comprador da cadeia (fabricante → distribuidor → varejista) pagar ICMS sobre a própria margem, o fabricante coleta o ICMS sobre o preço final presumido de venda ao consumidor no início da cadeia. Essa "substituição" do contribuinte desloca o ponto de coleta do imposto para o início da cadeia.

Comparação em duas colunas intitulada ICMS-ST É um Custo, Não um Crédito de Entrada, com um selo de verificação verde para ICMS regular recuperável (CST 00) e um selo de cruz âmbar para ICMS-ST (CST 10 ou CST 30) que nunca pode ser recuperado.

Para equipes de AP que processam documentos NF-e, o ICMS-ST aparece em dois cenários:

Cenário 1 — Sua empresa está no meio da cadeia (comprando da parte substituída). Você compra mercadorias de um distribuidor que já as adquiriu sob ST do fabricante. A NF-e traz o ICMS regular (CST 00, tributado normalmente) e um valor separado de ICMS-ST (CST 10, sob <ICMS10> ou <ICMSST>). Sua extração deve capturar ambos: o ICMS regular é seu crédito de entrada; o ICMS-ST não é um crédito — é um encargo incluso no custo que já foi remetido à SEFAZ pelo fornecedor upstream. Você não pode recuperá-lo.

Cenário 2 — Sua empresa é o elo final (varejista ou consumidor direto). Você compra de um fornecedor que é a parte substituída pela ST. A NF-e traz um único valor de ICMS-ST (CST 30 — isento de ICMS regular, ST aplicável). Todo o custo de ICMS da cadeia está embutido nesse único valor. Sua extração captura apenas os campos de ST, e nenhum crédito de ICMS regular está disponível.

Para distinguir entre esses dois cenários no seu fluxo de extração, verifique o código CST: CST 10 = ICMS regular + ST (você obtém créditos parciais), CST 30 = apenas ST (sem créditos de ICMS regular). O caminho XML do ICMS-ST usa um subgrupo separado: <imposto>/<ICMS>/<ICMSST>/<vICMSST> para o valor da ST e <vBCST> para a base de cálculo da ST. Extraia-os como colunas separadas do ICMS regular — nunca os some em um único campo de "ICMS total". Algumas equipes de AP somam ICMS regular e ST e lançam um valor combinado, o que superestima sua posição de crédito de ICMS e gera apontamentos em auditorias.

CFOP e NCM: Extraindo os Códigos de Classificação que Controlam a Conformidade

Cada item de uma NF-e carrega dois códigos que juntos determinam o tratamento tributário daquele produto. Eles não são metadados opcionais — são as entradas para sua lógica de determinação tributária.

Referência de Código CFOP (Classificação pelo Primeiro Dígito)

O CFOP (Código Fiscal de Operações e Prestações) é um código de quatro dígitos onde o primeiro dígito indica a direção e a natureza da transação. Para o processamento de NF-e de entrada (lado comprador), os códigos CFOP que você encontrará com mais frequência estão nas faixas 1xxx, 2xxx e 3xxx:

Primeiro DígitoClassificaçãoCódigos Comuns de Entrada
1Entrada — dentro do mesmo estado (intraestadual)1102 = compra para revenda, 1101 = compra para industrialização, 1116 = compra para uso/consumo
2Entrada — de outro estado (interestadual)2101 = compra para industrialização, 2102 = compra para revenda, 2116 = compra para uso/consumo
3Entrada — do exterior (importação)3101 = importação para industrialização, 3102 = importação para revenda, 3126 = importação para uso/consumo
5Saída (venda) — raramente aparece em NF-e de entrada—
6Saída interestadual — relevante apenas se você emitir NF-e—
7Saída para o exterior — operações de exportação—

Por que o CFOP importa para a extração: o código CFOP determina quais regras de ICMS se aplicam à transação. Um CFOP começando com 1 (intraestadual) significa que a alíquota de ICMS deve ser a alíquota interna do estado do fornecedor (17-22%), não uma alíquota interestadual. Um CFOP começando com 2 (interestadual) significa que a alíquota deve corresponder à tabela de alíquotas interestaduais acima. Se o CFOP e a alíquota de ICMS forem inconsistentes — por exemplo, CFOP 1102 (intraestadual) com alíquota de ICMS de 12% (que é uma alíquota interestadual) — a nota fiscal tem uma inconsistência estrutural que precisa de correção. Seu fluxo de extração deve sinalizar isso automaticamente.

Código NCM: A Classificação de Produtos que Impulsa IPI e Direitos de Importação

NCM (Nomenclatura Común do Mercosur) é um código de classificação de produtos de oito dígitos baseado no Sistema Harmonizado (HS) com dois dígitos adicionais específicos do Mercosur. Formato: NNNN.NN.NN (onde os primeiros 6 dígitos são o código HS). O código NCM determina:

  • Alíquota IPI: Mapeada via tabela TIPI. Produtos com NCM iniciando em capítulos específicos enfrentam alíquotas IPI maiores ou menores.
  • Aplicabilidade ICMS-ST: Certos capítulos NCM estão sujeitos a protocolos ICMS-ST obrigatórios (convênios) entre estados.
  • Direito de importação (II) para compras internacionais.
  • Alíquota de imposto substituto (por exemplo, cálculos simplificados de ICMS-ST conforme protocolo CONFAZ).

Para extração, o NCM deve sempre ser capturado como campo de texto preservando zeros à esquerda. Nunca converta a número — NCM 8471.30.00 (equipamento de computação) perderia sua estrutura inicial se tratado numericamente. O NCM também serve como chave primária para consultar alíquotas IPI se seu fluxo de trabalho inclui validação automatizada de alíquotas.

Gerenciando Eventos Especiais de NF-e em seu Fluxo de Extração

Uma NF-e não é um documento estático. Pode ser modificada, cancelada ou reemitida através de uma série de eventos legalmente definidos. Um fluxo de extração completo deve considerar esses eventos, porque eles podem alterar os dados que você já extraiu.

Cancelamento. O emitente pode cancelar uma NF-e dentro de 24 horas após o recepção do protocolo de autorização, desde que as mercancías não tenham sido fisicamente movidas. O evento de cancelamento é registrado com SEFAZ e vinculado à mesma chave de acesso. Após 24 horas, o cancelamento não é mais possível — o emitente deve solicitar um cancelamento especial através da autoridade fiscal ou emitir uma nota de crédito (NF-e de devolução). Para seu fluxo de extração: a validação clave é verificar o status da NF-e no momento da extração e novamente antes do pagamento. Se você processa documentos NF-e programaticamente, inclua uma etapa de verificação de status que consulte o serviço web SEFAZ ConsNFeDest para a lista de status de NF-e recebidas pelo comprador.

Carta de Correção (CC-e). Se o fornecedor precisa corrigir um campo em uma NF-e já autorizada (por exemplo, corrigir a descrição do produto, endereço de entrega, atualizar a data de vencimento do pagamento), ele emite uma CC-e — uma carta de correção eletrónica vinculada à chave de acesso da NF-e. A CC-e não substituye o XML; ela modifica campos específicos. Seu fluxo de extração deve, ao processar documentos NF-e, consultar se existem eventos CC-e para essa chave de acesso. O processamento em lote de ImageToTable.ai incluye a opção de verificar eventos de correção contra documentos extraídos — porque se o fornecedor corrigiu a data de vencimento via CC-e e seu fluxo usou a data de vencimento do XML original, você está pagando no cronograma errado.

Modos de contingência. Se SEFAZ está inaccesible, os fornecedores podem emitir NF-e em modo de contingência. O tipo de emissão (<ide>/<tpEmis>) indica o método de contingência: 2 = FS-DA (DANFE digitado), 3 = EPEC (contingência pré-evento), 4 = DPEC (contingência eletrónica), 5 = FS-IA (contingência de formulário), 6 = SVC (Contingência Virtual SEFAZ — um servidor de autorização de backup). No modo de contingência, a NF-e pode carecer do protocolo completo de autorização SEFAZ no momento da extração. Seu fluxo deve marcar documentos emitidos em contingência para acompanhamento: uma vez que o sistema se recupere, o fornecedor transmitirá a NF-e completa, e você deve recuperar o XML final e re-extraer se algum campo foi alterado.

Manifestação do Destinatário. Este não é um evento do fornecedor — é uma obrigação do comprador. Segundo a legislação brasileira, o comprador de mercancías deve registrar sua resposta de evento no portal SEFAZ dentro de prazos específicos: confirmar o recebimento dentro de 10 días após a emissão, e aceitar ou rejeitar a transação. Este processo é chamado de manifestação do destinatário e é gerenciado através da plataforma DF-e do SEFAZ. Embora a manifestação seja uma etapa de conformidade separada da extração, seu fluxo de trabalho de extração deve registrar a chave de acesso de cada NF-e processada em um sistema de rastreo de manifestação para que a conformidade possa registrar os eventos requeridos a tempo. Se você não registrar a manifestação, o SEFAZ assume que a transação não foi reconhecida, o que pode bloquear futuras emissões de NF-e desse fornecedor.

Para uma análise mais profunda desses tipos de eventos e como afetam as operações de AP, veja nossa análise da complexidade do processamento de NF-e.

Métodos de Extração Comparados: Qual Enfoque se Adapta ao Seu Volume

Existem quatro enfoques comuns para extrair dados de NF-e, e o correto depende do seu volume, dos seus recursos técnicos, e de si você precisa de detalhes de impuestos por linha ou apenas totais de cabeçalho.

MétodoComo FuncionaCampos ExtraídosPunto Óptimo de VolumeLimitación Clave
Entrada Manual de DANFEO funcionário lê o DANFE impresso e digita no Excel ou ERP~20 campos de cabeçalho, sem detalhes de impuestos por linha< 10 por mêsPerde 90% dos dados, incluindo todos os desgloses de impuestos; alta taxa de erro
Scripting XML (Python, Power Query)Script personalizado analiza o XML da NF-e e extrae campos a CSV/ExcelTodos os campos de cabeçalho + por linha; requer mapeo XPath predefinido10–100 por mêsRequiere habilidades de programación; se rompe quando o esquema é atualizado (duplo esquema 2026); sem validação fiscal integrada
Módulo de Localización ERP (SAP/Oracle/Dynamics)Módulo ERP específico para Brasil que recebe XML de NF-e e posta automáticamente ao GLConjunto completo de campos, mapeo de cuentas fiscales, integración SPED100+ por mêsAlto custo (licencia + implementación); só funciona se você tem esse ERP; mapeo de esquema rígido
Extração Baseada em IAEnvie PDFs de DANFE ou XMLs de NF-e; a IA analiza e mapea a colunas definidas pelo usuárioTodos os campos visibles no DANFE de PDFs; campos completos de XML10–500+ por mêsO parsing de XML requer que a ferramenta suporte entrada de dados estruturados (não só PDFs visuais)

A distinción crítica para NF-e é se o método de extração maneja tanto o DANFE como o XML. Se seus fornecedores enviam uma mistura — alguns transmitem o XML diretamente, outros só imprimem e enviam o DANFE — você precisa de um método que maneje ambas fontes de forma consistente. ImageToTable.ai suporta ambos: você pode enviar arquivos XML de NF-e junto com PDFs de DANFE no mesmo lote, definir um único modelo de columna, e obter uma planilla unificada. A ferramenta também maneja os caminhos variáveis de subgrupos de ICMS descritos acima — uma vantagem significativa quando a complexidade do esquema força às equipes de scripting a manter dezenas de variaciones de XPath. Para um tutorial prático de processamento em lote de múltiples documentos NF-e, veja nosso guía para processamento em lote de NF-e.

XML / PDF / JPG Extração com IA

Os arquivos são processados com segurança e não são armazenados.

Preparando seu Fluxo de Extração para a Reforma Tributária de 2026

Linha do tempo de três nós intitulada O Esquema da NF-e Carrega Dois Sistemas Tributários até 2033, mostrando campos de teste da CBS em 2026 a 0,9%, CBS ativa em 2027 com PIS e COFINS extintos, e CBS substituindo totalmente o PIS em 2033.

A Emenda Constitucional 132/2023 e a Lei Complementar 214/2025 introduziram um sistema de IVA dual que substitui cinco tributos existentes por dois novos. Para a extração de NF-e, isso significa que o esquema XML que você analisa hoje carregará campos de tributos antigos e novos durante um período de transição que vai de agosto de 2026 até 2033. Veja o que muda no nível de extração e o que você precisa fazer a respeito.

O que permanece: A estrutura geral do XML (<ide>, <emit>, <det>, <total>) continua a mesma. Campos de cabeçalho, quantidades de itens, códigos NCM e códigos CFOP não são afetados.

O que muda: Novos grupos de elementos XML são adicionados à seção <imposto> de cada item e ao grupo de resumo <total>. Os novos grupos carregam os cálculos de CBS (federal) e IBS (estadual/municipal) junto com os campos existentes de ICMS, IPI, PIS e COFINS. Durante o período de transição, você deve extrair ambos os conjuntos de campos e disponibilizar ambos para os sistemas downstream.

Imposto AtualSubstituído PorImpacto na ExtraçãoCronograma de Transição
PIS (1,65% / 0,65%)CBS (federal, ~8,8%)Novos elementos <CBS> aparecem junto com <PIS>. Ambos devem ser extraídos durante a transição. A CBS substitui o PIS completamente até 2033.2026: campos de teste da CBS (alíquota de 0,9%). 2027: CBS ativa, PIS extinto.
COFINS (7,6% / 3,0%)CBS (federal, ~8,8%)Igual ao PIS — os campos de COFINS coexistem com os campos da CBS. A extração combinada de PIS+COFINS deve considerar a alíquota unificada da CBS.2027: COFINS extinto, CBS com alíquota integral.
ICMS (estadual, 17-22% interno, 4-12% interestadual)IBS (estadual/municipal, ~17,7%)Novo grupo de elementos <IBS> com vBC, pIBS, vIBS. ICMS e IBS coexistem por item de linha. A extração deve capturar ambas as bases de cálculo — elas podem diferir.2026: campos de teste do IBS (alíquota de 0,1%). 2029-2032: IBS entra em vigor estado por estado, substituindo o ICMS gradualmente.
IPI (0-330% por NCM)IS (Imposto Seletivo, variável)O IS substitui o IPI gradualmente. IPI e IS podem coexistir durante a transição. O NCM permanece como classificador do produto.As alíquotas do IPI começam a zerar em 2027. Substituição completa até 2033.

Três passos práticos para preparar seu fluxo de extração:

1

Audite seu mapa de campos atual

Revise seu modelo de extração e identifique cada campo que atualmente mapeia para ICMS, IPI, PIS ou COFINS. Para cada um, adicione um campo paralelo para o novo imposto correspondente (CBS para PIS/COFINS, IBS para ICMS, IS para IPI). Mesmo que você ainda não use os novos campos, o espaço no esquema precisa ser mapeado para que as colunas de saída da extração existam e estejam prontas para receber dados quando os campos CBS/IBS forem preenchidos.

2

Teste com documentos NF-e de amostra com esquema duplo

Solicite NF-e XML de amostra aos seus fornecedores que já incluam os novos campos CBS e IBS (todas as NF-e emitidas a partir de 1º de agosto de 2026 trarão ambos). Execute-os no seu pipeline de extração e verifique se os campos de impostos antigos e novos são extraídos corretamente. Se sua extração for baseada em script, confirme que as consultas XPath para ICMS não capturam acidentalmente valores de IBS — os grupos de elementos compartilham padrões de nomenclatura semelhantes.

3

Decida sua estratégia de campos duplos

Nos próximos 7 a 8 anos, seus dados extraídos conterão campos de impostos legados e novos. Decida se (a) você mantém colunas paralelas na sua planilha de saída e deixa os usuários downstream escolherem qual usar, ou (b) você implementa um cronograma de migração em que certas colunas são introduzidas e outras descontinuadas em datas específicas. A maioria das equipes de contas a pagar preferirá a opção (a) durante os primeiros anos de transição — ela gera uma tabela de saída mais longa, mas evita o risco de descartar o único campo válido durante o período de regime misto.

Perguntas Frequentes

Preciso lidar com namespaces XML ao extrair campos de NF-e?

Sim. O XML da NF-e usa um namespace padrão declarado no elemento <nfeProc> (normalmente xmlns="http://www.portalfiscal.inf.br/nfe"). Qualquer consulta XPath deve registrar esse namespace (no lxml do Python: ns = {'nfe': 'http://www.portalfiscal.inf.br/nfe'}) ou usar local-name() para contorná-lo. O conector XML do Power Query lida com namespaces automaticamente na maioria dos casos. Se sua ferramenta de extração exigir registro explícito de namespace, certifique-se de usar a URI correta — uma incompatibilidade produzirá silenciosamente conjuntos de resultados vazios.

Devo somar os valores de impostos dos itens e comparar com os totais do cabeçalho?

Sim — essa é uma das verificações de validação mais valiosas que você pode implementar. O XML da NF-e traz os totais de impostos em <total>/<ICMSTot> e o detalhe dos itens em cada <det>. Eles devem ser reconciliados. Uma divergência entre a soma dos itens e o total do cabeçalho é um sinal de alerta: pode indicar que um item foi omitido na geração do XML, que um desconto foi aplicado de forma inconsistente ou que o ERP do fornecedor tem um erro de configuração. Reconcilie os valores de impostos dos itens com os totais do cabeçalho como etapa padrão em cada lote de extração.

A extração de NF-e cobre os requisitos de relatórios do SPED?

Não. O SPED (Sistema Público de Escrituração Digital) é o sistema brasileiro de escrituração digital — EFD-ICMS/IPI para impostos estaduais e EFD-Contribuições para contribuições federais — que exige que os dados sejam formatados em layouts específicos do SPED e enviados por meio de software credenciado. A extração de NF-e coloca os dados da nota fiscal em uma planilha; ela não gera registros compatíveis com o SPED. No entanto, os dados que você extrai da NF-e (ICMS, PIS, COFINS, CFOP, NCM, CST por item) são os mesmos dados que alimentam as declarações do SPED. Se seu fluxo de extração capturar corretamente o detalhe dos impostos no nível do item, sua equipe contábil brasileira pode usar esses dados para preencher os registros exigidos pelo SPED em vez de redigitar a partir dos documentos de origem. O mapeamento dos campos da NF-e para as posições do layout do SPED é uma etapa de transformação separada que alguns módulos de localização de ERP tratam automaticamente.

E se minha empresa tiver vários CNPJs em diferentes estados brasileiros?

Isso é comum em organizações maiores. Cada CNPJ (ou "estabelecimento") é uma entidade legal separada para fins fiscais, e o estado de destino na NF-e corresponde ao CNPJ que recebeu as mercadorias. Ao extrair dados de NF-e para uma organização multi-entidade, filtre a saída da extração pelo CNPJ do destinatário (<dest>/<CNPJ>) e mantenha mapeamentos de GL separados por entidade. A validação da alíquota de ICMS também difere por entidade — mercadorias enviadas para seu CNPJ em São Paulo enfrentam alíquotas diferentes das enviadas para seu CNPJ na Bahia, mesmo do mesmo fornecedor. Para saber mais sobre como lidar com a complexidade estadual do Brasil, veja nosso guia para extração acessível de NF-e.

O que acontece se o código NCM mudar enquanto eu já extraí dados de um período anterior?

Os códigos NCM são atualizados periodicamente pela Receita Federal (geralmente anualmente, mas às vezes com ajustes no meio do ano por meio de Notas Técnicas). Se um código NCM mudar, a alíquota de IPI para essa classificação de produto também pode mudar. Para fins de extração, você deve capturar o código NCM conforme aparece na NF-e no momento da emissão — é o código vigente na data da nota e determina os impostos legalmente devidos. Se estiver fazendo análise retrospectiva ou ajustes de SPED, use o NCM registrado no documento original, não a lista atual de NCM.

E se o XML da NF-e do fornecedor tiver elementos ausentes ou malformados?

Acontece. Os problemas mais comuns são: grupo <cobr> (cobrança) ausente, endereço incompleto em <enderEmit> ou subgrupos de ICMS que não seguem a variante de esquema esperada para o código CST declarado. Seu fluxo de extração deve lidar com isso de forma graciosa — retorne nulo ou um espaço reservado para campos ausentes e registre um aviso de validação. Nunca falhe completamente em elementos ausentes não críticos. Para campos críticos (chave de acesso, CNPJ, totais dos itens), um valor ausente deve acionar a rejeição dessa NF-e do lote com uma mensagem de erro clara. Um relatório resumido de validação é essencial: registre cada NF-e com campos ausentes ou anômalos para que sua equipe possa investigar antes de lançar no GL.

Como lidar com o DIFAL (diferença de alíquota do ICMS entre estados)?

O DIFAL (Diferencial de Alíquota do ICMS) se aplica quando mercadorias são vendidas entre estados e a alíquota de ICMS no estado de destino é maior do que a alíquota interestadual paga na origem. O comprador deve pagar a diferença de alíquota ao seu próprio estado. Na NF-e, o DIFAL é representado pelo subgrupo <ICMSPart> sob <imposto>/<ICMS>. Esse subgrupo contém vBC (a base de cálculo), pICMS (a alíquota interestadual já aplicada), pICMSUf (a alíquota interna do estado de destino) e vICMS (o valor do DIFAL = diferença entre as duas alíquotas sobre a base). Você deve extrair o valor do DIFAL separadamente e tratá-lo nos seus fluxos de crédito de ICMS específicos do estado — ele não faz parte do crédito regular de ICMS.

Devo extrair frete e seguro separadamente dos valores dos produtos?

Sim. O XML da NF-e detalha a transação em valor do produto (vProd), frete (vFrete), seguro (vSeg) e outras despesas (vOutro). A base de cálculo do ICMS geralmente inclui a soma do valor do produto + frete + seguro + outras despesas — mas nem sempre. Alguns produtos têm ICMS calculado apenas sobre o valor do produto. Extrair cada componente separadamente permite validar se a base de cálculo do ICMS corresponde ao seu entendimento da estrutura de preços. Se o frete estiver incluído na base do ICMS na NF-e, mas o seu modelo de ERP esperar que o frete fique fora da base do ICMS, você tem um item de conciliação para resolver.

Ferramentas de extração baseadas em IA conseguem lidar com o XML completo da NF-e, ou apenas com o PDF do DANFE?

Depende da ferramenta. A extração baseada em IA do ImageToTable.ai consegue processar tanto arquivos XML de NF-e (dados estruturados) quanto PDFs de DANFE (documento visual) no mesmo lote. Quando você envia um XML, a ferramenta lê os elementos estruturados diretamente — sem necessidade de OCR — e os mapeia para o seu modelo de colunas. Quando você envia um PDF de DANFE, a IA lê o conteúdo visual e extrai os campos visíveis. A principal vantagem de uma plataforma única para ambos é a consistência: você define um modelo de colunas para "Chave de Acesso da NF-e", "Valor do ICMS", "Código CFOP", e a ferramenta os preenche a partir do documento de origem que receber. Isso elimina a necessidade de manter fluxos de trabalho separados para fornecedores baseados em XML vs. DANFE — um ponto comum de fragmentação nas operações de contas a pagar no Brasil.

Preciso arquivar a saída da extração junto com o XML?

A legislação brasileira exige que o XML original da NF-e seja arquivado por cinco anos a partir do fim do exercício fiscal em que a transação ocorreu. A saída da extração (sua planilha ou registros no ERP) não substitui o XML. No entanto, manter uma saída de extração estruturada junto com o arquivo XML bruto é uma boa prática para conciliação interna e resposta a auditorias. Durante uma auditoria da SEFAZ, você provavelmente precisará apresentar ambos: os XMLs originais (para comprovar que os documentos existem e foram devidamente autorizados) e seus registros contábeis (para mostrar como os dados foram processados). Um fluxo de extração que arquiva automaticamente tanto o XML de origem quanto a saída extraída em uma estrutura vinculada — usando a chave de acesso como chave de junção — economizará um tempo significativo na preparação para auditorias. Para opções de conformidade econômicas, consulte nosso guia de extração de NF-e para pequenas empresas.

Prueba la extracción con tus propios documentos NF-e

La extracción de NF-e no es un ejercicio teórico. Cada XML que recibes contiene datos totalmente estructurados, validados por el gobierno y listos para usar. La única pregunta es si tu flujo de trabajo extrae suficiente información y la valida correctamente antes de que llegue a tu ERP o registros financieros. Los mapas de campos, las tablas de validación de impuestos y las referencias de códigos de esta guía te brindan la capa de referencia. El motor de extracción procesa los documentos. La combinación convierte una NF-e brasileña de un archivo XML opaco que tu equipo lucha por analizar en una fuente transparente de datos financieros que puedes usar con confianza: para contabilización, recuperación de créditos y defensa en auditorías.

📮 contact email: [email protected]