Guia Completo para
Extração de NF-e Brasileira
Cada XML de NF-e brasileira contém mais de 500 campos de dados estruturados — incluindo detalhamentos de impostos por item que determinam sua recuperação de créditos de ICMS e PIS/COFINS. No entanto, a maioria das equipes de AP extrai menos de 20. Este guia é uma referência completa para transformar XML de NF-e em dados de planilha que você pode realmente usar: tabelas de mapeamento de campos, validação de alíquotas ICMS por par de estados, referências de códigos CST e CFOP, tratamento de ICMS-ST e as etapas práticas para a transição para o esquema duplo de 2026.
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 documental 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 que as mercadorias descritas pudessem 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 de layout 4.0 carrega mais de 500 grupos de elementos estruturados espalhados por vários níveis aninhados, com quatro ramos de cálculo de imposto separados por item de linha, cada um usando seu próprio código de situação tributária, cálculo de base tributável, alíquota e regra de crédito. Os dados são completos — mas extraí-los corretamente exige entender o que cada campo significa e como ele se conecta aos outros.
Este guia foi projetado como uma referência prática. 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ê é totalmente novo em NF-e, comece com nosso guia para iniciantes sobre a Nota Fiscal Eletrônica antes de mergulhar nos detalhes da 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 Comuns
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 — resolve apenas parte do problema.
1. A fonte é XML, não um documento visual. A extração de notas fiscais comuns é um problema de leitura: o sistema de IA ou OCR deve localizar o texto em uma página, reconhecer qual string é o número da nota 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 emitente, <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 uma NF-e carrega até quatro cálculos de imposto independentes — ICMS (estadual, com mais de 10 variantes dependendo do CST), IPI (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. Diferentemente de uma nota fiscal de IVA europeia, onde uma porcentagem de imposto se aplica a toda a linha, 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 ignora 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. 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. Desencadeia 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 de extração completo deve lidar com essas mudanças orientadas a eventos, não apenas extrair o XML inicial e considerar o trabalho 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 supera a maioria dos padrões EDI em uma ordem de grandeza. 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.
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.
Colete o XML — Não Apenas o DANFE
Toda transação de NF-e gera um arquivo XML. Se 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 SEFAZ do estado emissor. A lei brasileira exige que o fornecedor forneça o XML, e você precisa dele tanto para extração quanto para o arquivo obrigatório de cinco anos. Armazene os XMLs originais exatamente como recebidos — modificá-los invalida a assinatura digital e quebra sua trilha de auditoria.
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 serviço web ou portal da SEFAZ. Verifique se o status é "Autorizada" — não "Cancelada" ou "Denegada". Esta etapa deve ser automatizada em qualquer 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.
Analise a Estrutura do XML em Grupos
Um XML de NF-e tem uma estrutura de alto nível previsível. Os principais grupos de elementos são: <ide> (identificação do documento), <emit> (emitente/fornecedor), <dest> (destinatário/você), <det> (itens da linha — repetido por produto), <total> (totais da nota — um por tipo de imposto), <transp> (transporte/frete), <cobr> (pagamento/cobrança) 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 da linha.
Mapeie Campos para Colunas de Saída Usando a Tabela de Referência
Para cada campo necessário em sua planilha ou arquivo de importação ERP, identifique o caminho XML exato, o tipo de dado esperado e a transformação necessária (datas para formato ISO, valores para decimais com duas casas decimais, strings de CNPJ com preservação de zeros à esquerda). Use a referência de mapeamento de campos na seção 3 abaixo. A distinção crítica nesta etapa: separe campos de nível de cabeçalho (extraídos uma vez por NF-e) de 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 fiscal e uma tabela de itens de linha com várias linhas por nota fiscal.
Validar Cálculos Tributários com Dados de Referência
Os XMLs da NF-e contêm os cálculos tributários do fornecedor, não os seus. Seu fluxo de extração deve incluir validações: a alíquota do ICMS corresponde à correta para o par de estados de origem e destino? A alíquota do IPI está de acordo com a faixa do 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 essas verificações. Sinalize quaisquer divergências para revisão — não importe dados tributários incorretos silenciosamente para o seu ERP.
Exportar, Arquivar e Monitorar Eventos
Exporte os dados estruturados para seu ERP ou planilha. Arquive tanto o XML original (exatamente como recebido, sem modificações) quanto o resultado da extração. Em seguida, configure um processo de monitoramento: reconsulte 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 em até 24 horas sem notificá-lo. Se você extraiu dados de uma NF-e agora cancelada e os lançou em seu ERP, precisará criar um registro de estorno. Ferramentas automatizadas podem cuidar dessa etapa de monitoramento — equipes humanas frequentemente a negligenciam.
Referência de Mapeamento de Campos do XML da NF-e
As tabelas a seguir mapeiam os caminhos essenciais do XML da NF-e para as colunas da 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édito) e Específico (necessário para cenários específicos como desembaraço aduaneiro ou declarações SPED). Todos os caminhos são relativos ao namespace padrão do XML da NF-e.
Campos do Cabeçalho (Uma Linha por Nota Fiscal)
| Coluna de Saída | Caminho XML (relativo a <nfeProc>/<NFe>/<infNFe>) | Exemplo de Valor | Criticidade |
|---|---|---|---|
| Chave de Acesso | @Id (remover prefixo "NFe") ou <ide>/<cNF> combinado com prefixo | 35200600012345000106550010000012341012345678 | Crítico |
| Número da NF-e | <ide>/<nNF> | 1234 | Crítico |
| Série da NF-e | <ide>/<serie> | 1 | Crítico |
| Data de Emissão | <ide>/<dhEmi> | 2026-06-15T14:30:00-03:00 | Crítico |
| Protocolo de Autorização SEFAZ | <ide>/<nProt> | 135260001234567 | Crítico |
| Tipo de Emissão | <ide>/<tpEmis> | 1 (normal), 2-6 (contingência) | Importante |
| CNPJ do Fornecedor | <emit>/<CNPJ> | 00.000.000/0001-91 | Crítico |
| Razão Social do Fornecedor | <emit>/<xNome> | Fornecedor Exemplo Ltda | Crítico |
| Inscrição Estadual do Fornecedor | <emit>/<IE> | 123.456.789.110 | Importante |
| 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-82 | Crí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.00 | Crítico |
| Valor Total ICMS | <total>/<ICMSTot>/<vICMS> | 1500.00 | Importante |
| Valor Total ICMS-ST | <total>/<ICMSTot>/<vST> | 450.00 | Importante |
| Valor Total IPI | <total>/<ICMSTot>/<vIPI> | 625.00 | Importante |
| Valor Total PIS | <total>/<ICMSTot>/<vPIS> | 206.25 | Importante |
| Valor Total COFINS | <total>/<ICMSTot>/<vCOFINS> | 950.00 | Importante |
| Valor Desconto | <total>/<ICMSTot>/<vDesc> | 250.00 | Específico |
| Valor Frete | <total>/<ICMSTot>/<vFrete> | 350.00 | Importante |
| Valor Seguro | <total>/<ICMSTot>/<vSeg> | 50.00 | Específico |
| Informações de Cobrança | <cobr>/<dup>/<dVenc> (vencimento) e <vDup> (valor) | 2026-07-15 / 12500.00 | Importante |
| CFOP (nível cabeçalho — geralmente do primeiro item) | <det>[1]/<prod>/<CFOP> | 2101 | Importante |
| Natureza da Operação | <ide>/<natOp> | Venda de mercadoria adquirida de terceiros | Específico |
Campos de Itens da 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 campos a seguir se repetem para cada <det>:
| Coluna de Saída | Caminho XML (por <det>) | Criticidade |
|---|---|---|
| Número da Linha | @nItem | Crí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 de 4 dígitos) | <prod>/<CFOP> | Crítico |
| CST — Código da Situação Tributária do ICMS | <imposto>/<ICMS>/<ICMS00>/<CST> (varia por 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 IPI (%) | <imposto>/<IPI>/<IPITrib>/<pIPI> | Importante |
| Valor IPI | <imposto>/<IPI>/<IPITrib>/<vIPI> | Importante |
| Base de Cálculo PIS | <imposto>/<PIS>/<PISAliq>/<vBC> | Importante |
| Alíquota PIS (%) | <imposto>/<PIS>/<PISAliq>/<pPIS> | Importante |
| Valor PIS | <imposto>/<PIS>/<PISAliq>/<vPIS> | Importante |
| Base de Cálculo COFINS | <imposto>/<COFINS>/<COFINSAliq>/<vBC> | Importante |
| Alíquota COFINS (%) | <imposto>/<COFINS>/<COFINSAliq>/<pCOFINS> | Importante |
| Valor COFINS | <imposto>/<COFINS>/<COFINSAliq>/<vCOFINS> | Importante |
| UOM (Unidade de Medida) | <prod>/<uCom> | Específico |
| GTIN/EAN (Código de Barras) | <prod>/<cEAN> | Específico |
| EX TIPI (Código de isenção IPI) | <prod>/<EXTIPI> | Específico |
Nota importante sobre subgrupos do ICMS: O caminho do ICMS no XML dentro de <imposto> varia conforme o código CST. Um ICMS tributado normalmente usa o subgrupo <ICMS00>. Outros códigos CST usam <ICMS10> (tributado + ST), <ICMS20> (base reduzida), <ICMS30> (ST isenta de ICMS regular), <ICMS40> (isenta), <ICMS51> (diferida), <ICMS60> (já recolhida), <ICMS90> (outras), <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 Tributária: Como Verificar os Números Extraídos
Um NF-e XML carrega os próprios cálculos tributários do fornecedor, que podem estar incorretos. A SEFAZ valida se a estrutura do XML está completa e se a aritmética básica é consistente, mas não verifica se a alíquota correta de ICMS foi usada para o par origem-destino, ou se a alíquota de IPI corresponde à alíquota TIPI oficial do código NCM. Essas são suas responsabilidades como comprador — e são a fonte mais comum de pagamentos a maior recuperáveis na AP brasileira.
Tabela de Alíquotas Interestaduais de ICMS 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 empresa está localizada). Use esta tabela para validar se a alíquota de ICMS na NF-e corresponde à alíquota correta para o par de estados:
| Estado de Origem | Estado de Destino | Alíquota Padrão de ICMS | Observação |
|---|---|---|---|
| Qualquer estado do Sul/Sudeste (SP, RJ, MG, ES, PR, SC, RS) | Qualquer estado do Sul/Sudeste | 12% | Alíquota interestadual padrão dentro da região Sul/Sudeste |
| Qualquer estado do Sul/Sudeste | Qualquer estado do Norte/Nordeste/Centro-Oeste | 7% | Alíquota reduzida para regiões menos desenvolvidas (Art. 2, I, LC 87/96) |
| Qualquer estado do Norte/Nordeste/Centro-Oeste | Qualquer estado (incluindo Sul/Sudeste) | 12% | Alíquota padrão de saída de regiões em desenvolvimento |
| Qualquer estado | Qualquer estado (mercadorias importadas com >40% de conteúdo estrangeiro) | 4% | Resolução Senado 13/2012 — aplica-se a produtos com mais de 40% de conteúdo importado |
| Estado fornecedor = estado recebedor (intraestadual) | Mesmo estado | 17%–22% | Varia por estado: SP=18%, RJ=20%, MG=18%, PR=19%, RS=17%, etc. |
Se a alíquota de ICMS na NF-e não corresponder à alíquota esperada para o par origem-destino (de <emit>/<enderEmit>/<cUF> para <dest>/<enderDest>/<cUF>), sinalize o documento para revisão. Divergências de alíquota são um dos erros mais comuns em notas fiscais de fornecedores brasileiros e podem levar a cálculos incorretos de crédito tributário.
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 possui 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). Para o ICMS especificamente, o CST determina se o ICMS é tributável, isento, diferido, substituído (ST) ou recolhido por regime especial. Os códigos CST de ICMS de três dígitos seguem uma lógica específica:
| CST (ICMS) | Significado | Crédito Disponível? | Impacto no AP |
|---|---|---|---|
| 00 | Tributado — alíquota integral do ICMS | Sim | Compra padrão. Extraia vBC, pICMS, vICMS normalmente. |
| 10 | Tributado + Substituição Tributária (ICMS-ST) | Sim (apenas ICMS regular) | Dois valores de ICMS: regular e ST. Extraia ambos — o valor ST não é seu crédito. |
| 20 | Tributado com base de cálculo reduzida | Sim (proporcional) | A base tributável é reduzida (ex.: por 1/3). O campo vBC reflete a base reduzida. |
| 30 | Isento de ICMS regular + ST aplicável | Não | Não há ICMS regular para extrair. Apenas campos ST existem. Seu custo inclui o valor ST. |
| 40 | Isento — ICMS não cobrado | Não | Nenhum valor de ICMS. O total da linha permanece o mesmo, mas nenhum crédito é gerado. |
| 41 | Isento — não tributável | Não | Similar ao CST 40. Nenhum ICMS para extrair ou creditar. |
| 51 | Diferido — pagamento do ICMS adiado para etapa posterior | Depende | Extraia vBC e pICMS mesmo que vICMS seja zero — o diferimento afeta eventos futuros. |
| 60 | ICMS já recolhido pelo fornecedor (ou elo anterior da cadeia) | Não | Comum em combustíveis, energia, telecomunicações. O ICMS não é um item de linha — foi pago a montante. |
| 70 | Tributado com base reduzida + ST | Sim (proporcional) | Híbrido: base reduzida no ICMS regular + valor ST separado. Ambos devem ser extraídos. |
| 90 | Outros — regime especial não coberto acima | Depende | Revise 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 zero é um tratamento fiscal legítimo ou uma lacuna de dados que você precisa investigar.
Validação de IPI, PIS e COFINS
Verificação do IPI: A alíquota do IPI é determinada pelo código NCM do produto. O Brasil publica a TIPI (Tabela de Incidência do IPI), uma tabela completa de alíquotas que mapeia cada código NCM a uma alíquota de IPI. Embora não seja possível manter a planilha completa da TIPI internamente (ela contém milhares de entradas e é atualizada periodicamente pela Receita Federal), é possível verificar itens de alto valor: extraia o NCM, consulte a faixa de alíquota da TIPI e confirme se o campo pIPI está dentro da faixa esperada. O código CST do IPI também é importante — CST 50 significa IPI isento, enquanto 00 significa tributável.
Verificação de PIS e COFINS: Essas contribuições federais se aplicam no regime cumulativo ou não cumulativo. O regime é determinado pela classificação tributária do fornecedor e rege tanto a alíquota quanto a disponibilidade de créditos para você, comprador:
| Regime | Alíquota PIS | Alíquota COFINS | Combinada | Comprador tem créditos? |
|---|---|---|---|---|
| Não Cumulativo (Lucro Real) | 1,65% | 7,6% | 9,25% | Sim — o comprador pode creditar PIS e COFINS contra suas próprias contribuições |
| Cumulativo (Lucro Presumido) | 0,65% | 3,0% | 3,65% | Não — nenhum crédito de entrada é gerado no regime cumulativo |
Se a alíquota de PIS na NF-e for 1,65% e a de COFINS for 7,6%, o fornecedor está no regime não cumulativo e você pode solicitar créditos de PIS/COFINS. Se as alíquotas forem 0,65% e 3,0%, nenhum crédito está disponível. O CST do fornecedor (normalmente 01 = não cumulativo ou 02 = cumulativo) confirma o regime. Extrair e validar essas alíquotas afeta diretamente sua posição de imposto recuperável.
Regra prática de validação: Para cada NF-e, extraia a alíquota de PIS e COFINS no nível do item. Se a alíquota combinada for 9,25%, sinalize para rastreamento de crédito. Se for 3,65%, confirme o regime do fornecedor e observe que nenhum crédito de PIS/COFINS se aplica. Uma única suposição incorreta de regime em uma nota fiscal de R$ 100.000 representa R$ 9.250 em créditos perdidos — ou R$ 5.600 em créditos indevidamente solicitados.
Substituição Tributária do ICMS (ICMS-ST): O Mecanismo que Você Não Pode Ignorar
O ICMS-ST (Substituição Tributária) é um mecanismo onde o fisco atribui ao primeiro elo da cadeia — geralmente o fabricante ou importador — a responsabilidade pela cobrança do ICMS sobre toda a cadeia de suprimentos. Em vez de cada comprador na cadeia (fabricante → distribuidor → varejista) pagar o ICMS sobre sua própria margem, o fabricante recolhe o ICMS sobre o preço presumido de venda ao consumidor final no início da cadeia. Essa "substituição" do contribuinte desloca o ponto de cobrança do imposto para montante.
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 recolhido à 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 da ST. A NF-e traz um único valor de ICMS-ST (CST 30 — isento de ICMS regular, ST se aplica). Todo o custo do ICMS da cadeia está embutido neste ú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 em 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 estes 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 contabilizam um valor combinado, o que superestima sua posição de crédito de ICMS e gera achados de auditoria.
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 mais comuns estão nas faixas 1xxx, 2xxx e 3xxx:
| Primeiro Dígito | Classificação | Códigos de Entrada Comuns |
|---|---|---|
| 1 | Entrada — dentro do mesmo estado (intraestadual) | 1102 = compra para revenda, 1101 = compra para industrialização, 1116 = compra para uso/consumo |
| 2 | Entrada — de outro estado (interestadual) | 2101 = compra para industrialização, 2102 = compra para revenda, 2116 = compra para uso/consumo |
| 3 | Entrada — do exterior (importação) | 3101 = importação para industrialização, 3102 = importação para revenda, 3126 = importação para uso/consumo |
| 5 | Saída (venda) — raramente aparece em NF-e de entrada | — |
| 6 | Saída interestadual — relevante apenas se você emitir NF-e | — |
| 7 | Saída para o exterior — operações de exportação | — |
Por que o CFOP é importante 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%), e 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 incompatibilidade estrutural que precisa ser corrigida. Seu fluxo de extração deve sinalizar isso automaticamente.
Código NCM: A Classificação de Produtos que Define IPI e Impostos de Importação
NCM (Nomenclatura Comum do Mercosul) é um código de classificação de produtos de oito dígitos baseado no Sistema Harmonizado (SH) com dois dígitos adicionais específicos do Mercosul. Formato: NNNN.NN.NN (onde os primeiros 6 dígitos são o código SH). O código NCM determina:
- Alíquota do IPI: Mapeada pela tabela TIPI. Produtos com NCM iniciando em capítulos específicos têm alíquotas de IPI maiores ou menores.
- Aplicabilidade do ICMS-ST: Certos capítulos do NCM estão sujeitos a protocolos obrigatórios de ICMS-ST (convênios) entre estados.
- Imposto de Importação (II) para compras internacionais.
- Alíquota do imposto substituto (ex.: cálculos simplificados de ICMS-ST por protocolo CONFAZ).
Para extração, o NCM deve sempre ser capturado como campo de texto preservando zeros à esquerda. Nunca converta para número — o NCM 8471.30.00 (equipamentos de informática) perderia sua estrutura inicial se tratado numericamente. O NCM também serve como chave primária para consulta de alíquotas de IPI se seu fluxo incluir validação automática de alíquotas.
Tratamento de Eventos Especiais da NF-e no Seu Fluxo de Extração
Uma NF-e não é um documento estático. Ela pode ser modificada, cancelada ou reemitida por meio de uma série de eventos legalmente definidos. Um fluxo de extração completo deve considerar esses eventos, pois eles podem alterar os dados já extraídos.
Cancelamento. O emissor pode cancelar uma NF-e em até 24 horas do recebimento do protocolo de autorização, desde que as mercadorias não tenham circulado fisicamente. O evento de cancelamento é registrado na SEFAZ e vinculado à mesma chave de acesso. Após 24 horas, o cancelamento não é mais possível — o emissor deve solicitar um cancelamento especial junto à autoridade fiscal ou emitir uma nota fiscal de devolução. Para seu fluxo de extração: a validação principal é verificar o status da NF-e no momento da extração e novamente antes do pagamento. Se você processa NF-e programaticamente, inclua uma etapa de verificação de status que consulte o web service ConsNFeDest da SEFAZ para a lista de NF-e recebidas pelo comprador.
Carta de Correção (CC-e). Se o fornecedor precisar corrigir um campo em uma NF-e já autorizada (ex.: corrigir a descrição do produto, ajustar o endereço de entrega, atualizar a data de vencimento), ele emite uma CC-e — uma carta de correção eletrônica vinculada à chave de acesso da NF-e. A CC-e não substitui o XML; ela altera campos específicos. Seu fluxo de extração deve, ao processar NF-e, consultar se existem eventos de CC-e para aquela chave de acesso. O processamento em lote do ImageToTable.ai inclui a opção de verificar eventos de correção em 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ê estará pagando no cronograma errado.
Modos de contingência. Se a SEFAZ estiver inacessível, 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 formulário), 6 = SVC (Contingência Virtual da SEFAZ — um servidor de autorização de backup). Em modo de contingência, a NF-e pode não ter o protocolo completo de autorização da SEFAZ no momento da extração. Seu fluxo deve sinalizar documentos emitidos em contingência para acompanhamento: quando o sistema se recuperar, o fornecedor transmitirá a NF-e completa, e você deve recuperar o XML final e reextrair se algum campo tiver sido alterado.
Manifestação do Destinatário. Este não é um evento do fornecedor — é uma obrigação do comprador. De acordo com a legislação brasileira, o comprador de mercadorias deve registrar sua manifestação no portal da SEFAZ dentro de prazos específicos: confirmar o recebimento em até 10 dias da emissão, e aceitar ou rejeitar a transação. Esse processo é chamado de manifestação do destinatário e é gerenciado pela plataforma DF-e da SEFAZ. Embora a manifestação seja uma etapa de conformidade separada da extração, seu fluxo de extração deve registrar a chave de acesso de cada NF-e processada em um sistema de rastreamento de manifestação, para que a área de conformidade possa registrar os eventos exigidos no prazo. Se você não registrar a manifestação, a SEFAZ considera que a transação não foi reconhecida, o que pode bloquear futuras emissões de NF-e desse fornecedor.
Para um aprofundamento sobre esses tipos de evento e como eles afetam as operações de contas a pagar, veja nossa análise da complexidade do processamento de NF-e.
Métodos de Extração Comparados: Qual Abordagem se Adequa ao Seu Volume
Existem quatro abordagens comuns para extrair dados de NF-e, e a escolha certa depende do seu volume, recursos técnicos e se você precisa de detalhes fiscais por item ou apenas totais do cabeçalho.
| Método | Como Funciona | Campos Extraídos | Volume Ideal | Principal Limitação |
|---|---|---|---|---|
| Digitação Manual do DANFE | Funcionário lê o DANFE impresso e digita no Excel ou ERP | ~20 campos do cabeçalho, sem detalhes fiscais por item | < 10 por mês | Perde 90% dos dados, incluindo todas as discriminações de impostos; alta taxa de erro |
| Scripting XML (Python, Power Query) | Script personalizado analisa o XML da NF-e e extrai campos para CSV/Excel | Todos os campos do cabeçalho + itens; requer mapeamento XPath predefinido | 10–100 por mês | Requer habilidades de programação; quebra com atualizações de esquema (esquema duplo 2026); sem validação fiscal integrada |
| Módulo de Localização do ERP (SAP/Oracle/Dynamics) | Módulo ERP específico para o Brasil que recebe XML da NF-e e lança automaticamente no razão | Conjunto completo de campos, mapeamento de contas fiscais, integração SPED | 100+ por mês | Custo elevado (licenciamento + implementação); funciona apenas se você tiver esse ERP; mapeamento de esquema rígido |
| Extração Baseada em IA | Envie PDFs do DANFE ou XMLs da NF-e; a IA analisa e mapeia para colunas definidas pelo usuário | A análise de XML exige que a ferramenta suporte entrada de dados estruturados (não apenas PDFs visuais) |
A distinção crítica para NF-e é se o método de extração lida com tanto o DANFE quanto o XML. Se seus fornecedores enviam uma mistura — alguns transmitem o XML diretamente, outros apenas imprimem e enviam o DANFE — você precisa de um método que lide com ambas as fontes de forma consistente. O ImageToTable.ai suporta ambas: você pode enviar arquivos XML brutos de NF-e junto com PDFs do DANFE no mesmo lote, definir um modelo de coluna único e obter uma planilha unificada. A ferramenta também lida com os caminhos variáveis dos subgrupos de ICMS descritos acima — uma vantagem significativa quando a complexidade do esquema força as equipes de script a manter dezenas de variações de XPath. Para um guia prático sobre processamento em lote de vários documentos NF-e, veja nosso guia para processamento em lote de NF-e.
Arquivos processados com segurança e não armazenados.
Preparando seu Fluxo de Extração para a Reforma Tributária de 2026
A Emenda Constitucional 132/2023 e a Lei Complementar 214/2025 introduziram um sistema de IVA dual que substitui cinco tributos atuais por dois novos. Para a extração de NF-e, isso significa que o esquema XML que você analisa hoje trará campos de impostos antigos e novos durante um período de transição de agosto de 2026 a 2033. Veja o que muda no nível de extração e o que você precisa fazer.
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 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 trazem 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 tê-los disponíveis para os sistemas downstream.
| Imposto Atual | Substituído Por | Impacto na Extração | Cronograma 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. CBS substitui PIS totalmente até 2033. | 2026: campos de teste CBS (alíquota de 0,9%). 2027: CBS ativo, PIS extinto. |
| COFINS (7,6% / 3,0%) | CBS (federal, ~8,8%) | Mesmo que PIS — campos COFINS coexistem com campos 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 IBS (alíquota de 0,1%). 2029-2032: IBS implementado gradualmente por estado, substituindo ICMS progressivamente. |
| IPI (0-330% por NCM) | IS (Imposto Seletivo, variável) | IS substitui IPI gradualmente. IPI e IS podem coexistir durante a transição. NCM permanece como classificador de produtos. | Alíquotas de IPI começam a ser zeradas em 2027. Substituição total até 2033. |
Três passos práticos para preparar seu fluxo de extração:
Audite seu mapa de campos atual
Revise seu template de extração e identifique todos os campos que atualmente mapeiam 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 esteja usando os novos campos, o espaço do esquema deve ser mapeado para que suas colunas de saída de extração existam e estejam prontas para receber dados quando os campos CBS/IBS forem preenchidos.
Teste com documentos NF-e de esquema duplo
Solicite XMLs de NF-e de amostra de 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 em seu pipeline de extração e verifique se os campos de imposto 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.
Defina sua estratégia de campos duplos
Pelos próximos 7 a 8 anos, seus dados extraídos conterão campos de imposto legados e novos. Decida se (a) você mantém colunas paralelas em sua planilha de saída e deixa os usuários downstream escolherem qual usar, ou (b) implementa um cronograma de migração onde certas colunas são introduzidas e outras desativadas em datas específicas. A maioria das equipes de AP preferirá a opção (a) durante os primeiros anos de transição — isso cria 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 este 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 do namespace, certifique-se de usar a URI correta — uma incompatibilidade produzirá silenciosamente conjuntos de resultados vazios.
Devo somar os valores de imposto dos itens e comparar com os totais do cabeçalho?
Sim — esta é 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 imposto dos itens com os totais do cabeçalho como uma 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 submetidos através de software credenciado. A extração de NF-e obtém 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 os detalhes fiscais no nível do item, sua equipe contábil brasileira pode usar esses dados para preencher os registros SPED necessários, em vez de redigitá-los 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 com múltiplas entidades, filtre a saída da extração pelo CNPJ do destinatário (<dest>/<CNPJ>) e mantenha mapeamentos contábeis 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 mais informações sobre como lidar com a complexidade estadual brasileira, veja nosso guia para extração acessível de NF-e.
O que acontece se o código NCM mudar enquanto eu tenho dados extraídos 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 aquela 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 fiscal 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 CST declarado. Seu fluxo de extração deve lidar com isso de forma elegante — retorne nulo ou um placeholder para campos ausentes e registre um aviso de validação. Nunca falhe completamente em elementos não críticos ausentes. Para campos críticos (chave de acesso, CNPJ, totais de 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 que tinha campos ausentes ou anômalos para que sua equipe possa investigar antes de lançar na contabilidade.
Como lidar com o DIFAL (diferencial 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 que a alíquota interestadual paga na origem. O comprador deve pagar a diferença da alíquota para seu próprio estado. Na NF-e, o DIFAL é representado pelo subgrupo <ICMSPart> dentro de <imposto>/<ICMS>. Este subgrupo contém vBC (base de cálculo), pICMS (alíquota interestadual já aplicada), pICMSUf (alíquota interna do estado de destino) e vICMS (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 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 de ICMS na NF-e, mas seu modelo de ERP esperar que o frete fique fora da base de ICMS, você terá um item de reconciliação a resolver.
Ferramentas de extração baseadas em IA conseguem processar o XML completo da NF-e ou apenas o PDF do DANFE?
Depende da ferramenta. A extração baseada em IA do ImageToTable.ai pode processar tanto arquivos XML da NF-e (dados estruturados) quanto PDFs do DANFE (documento visual) no mesmo lote. Ao enviar um XML, a ferramenta lê os elementos estruturados diretamente — sem necessidade de OCR — e os mapeia para seu modelo de colunas. Ao enviar um PDF do 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 recebido. Isso elimina a necessidade de manter fluxos de trabalho separados para fornecedores baseados em XML versus DANFE — um ponto comum de fragmentação nas operações de AP brasileiras.
Preciso arquivar a saída da extração junto com o XML?
A lei brasileira exige que o XML da NF-e original seja arquivado por cinco anos a partir do final do exercício fiscal em que a transação ocorreu. A saída da extração (sua planilha ou registros do 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 a existência e autorização dos documentos) e seus registros contábeis (para demonstrar como os dados foram processados). Um fluxo de extração que arquive automaticamente tanto o XML fonte quanto a saída extraída em uma estrutura vinculada — usando a chave de acesso como chave de junção — economizará um tempo significativo durante a preparação para auditoria. Para opções de conformidade econômicas, consulte nosso guia de extração de NF-e para pequenas empresas.
Teste a Extração em Seus Próprios Documentos NF-e
A extração de NF-e não é um exercício teórico. Cada XML que você recebe contém dados totalmente estruturados, validados pelo governo e prontos para uso. A única questão é se seu fluxo de trabalho extrai o suficiente — e valida corretamente — antes de chegar ao seu ERP ou registros financeiros. Os mapas de campo, tabelas de validação de impostos e referências de código deste guia fornecem a camada de referência. O mecanismo de extração processa os documentos. A combinação transforma uma NF-e brasileira de um arquivo XML opaco que sua equipe tem dificuldade em analisar em uma fonte transparente de dados financeiros que você pode usar com confiança — para lançamento, recuperação de créditos e defesa em auditoria.