Guía Completa deExtracció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 su recuperación de créditos de ICMS y PIS/COFINS. Sin embargo, la mayoría de los equipos de CP extraen menos de 20. Esta guía es una referencia completa para convertir XML de NF-e en datos de hoja de cálculo realmente utilizables: tablas de mapeo de campos, validación de alícuotas ICMS por par de estados, referencias de códigos CST y CFOP, manejo de ICMS-ST y los pasos prácticos necesarios para la transición al esquema dual de 2026.

Deja de teclear datos — deja que la IA los lea por ti
Sube una imagen o PDF — datos estructurados en 10 segundos
Probar ahora
Sin registro · Sin tarjeta · Resultados en 10 segundos
Guía completa de extracción de XML de NF-e (Nota Fiscal Eletrônica) brasileña — mapeo de campos, validación de impuestos ICMS y flujo de trabajo de datos en hoja de cálculo

Extraer datos de una NF-e brasileña es fundamentalmente diferente a extraerlos de una factura común. Una factura estándar en PDF requiere OCR o comprensión documental basada en IA para leer campos de un diseño visual. Una NF-e llega como archivo XML — legible por máquina por diseño — con una estructura validada por más de 400 reglas automatizadas de SEFAZ, la autoridad tributaria estatal de Brasil, antes de que las mercancías que describe pudieran siquiera salir del almacén.

El desafío no es la disponibilidad de datos. Es la complejidad de los datos. Una factura europea Peppol BIS usa aproximadamente 100 elementos XML. Una NF-e bajo la versión 4.0 del layout contiene más de 500 grupos de elementos estructurados distribuidos en múltiples niveles anidados, con cuatro ramas de cálculo de impuestos separadas por línea de artículo, cada una con su propio código de situación tributaria, base de cálculo, tasa y regla de crédito. Los datos son completos — pero extraerlos correctamente requiere entender qué significa cada campo y cómo se conecta con los demás.

Esta guía está diseñada como una referencia práctica. Si estás configurando un flujo de extracción de NF-e por primera vez, comienza con el flujo de trabajo paso a paso en la sección 2. Si ya tienes un pipeline de extracción funcionando y necesitas validar una tasa específica de ICMS o consultar un código CFOP, salta a las tablas de referencia en las secciones 3 a 6. Cada sección es utilizable de forma independiente, pero el valor completo está en la visión global: saber qué campos extraer, cómo verificar que sean correctos y qué hacer cuando la NF-e llega con un evento de cancelación o un indicador de contingencia.

Si eres completamente nuevo en NF-e, comienza con nuestra guía para principiantes sobre la Nota Fiscal Eletrônica antes de adentrarte en los detalles de extracción. Esta guía asume que entiendes la distinción básica entre DANFE y XML, el proceso de autorización de SEFAZ y los cuatro impuestos principales — y se centra en extraer esos datos correctamente.

¿Qué hace diferente la extracción de NF-e de la extracción de facturas comunes?

Tres diferencias estructurales definen cómo funciona la extracción de NF-e y por qué el enfoque estándar de extracción de facturas —subir un PDF, definir columnas, obtener datos— solo resuelve parte del problema.

1. La fuente es XML, no un documento visual. La extracción de facturas comunes es un problema de lectura: la IA o el sistema OCR debe localizar texto en una página, reconocer qué cadena es el número de factura y asignarlo a la columna correcta. La extracción de NF-e es un problema de análisis y mapeo: los datos ya están en etiquetas legibles por máquina, pero la estructura XML usa nombres de etiquetas en portugués (<emit> para emisor, <dest> para destinatario, <imposto> para impuestos) y jerarquías profundamente anidadas que varían según el régimen fiscal. El desafío de extracción pasa de "encontrar los datos" a "mapear la ruta XML correcta a cada columna de salida".

2. La estructura impositiva es multidimensional. Un solo ítem de línea de NF-e puede tener hasta cuatro cálculos de impuestos independientes: ICMS (estatal, con más de 10 variantes según el código CST), IPI (federal selectivo, dependiente del producto), PIS y COFINS (contribuciones sociales federales). Cada impuesto tiene su propia base de cálculo, tasa, CST (código de situación tributaria) y reglas de elegibilidad de crédito. A diferencia de una factura con IVA europeo donde un porcentaje de impuesto aplica a toda la línea, un ítem de NF-e contiene subgrupos separados <ICMS>, <IPI>, <PIS> y <COFINS>, cada uno potencialmente con bases imponibles diferentes. Extraer solo los totales omite el detalle que determina si cada crédito fiscal se calculó correctamente.

3. El flujo de extracción debe considerar eventos posteriores a la emisión. Una NF-e puede cancelarse en 24 horas. Puede recibir una Carta de Correção (CC-e) que modifica campos específicos. Puede emitirse en modo contingencia si SEFAZ no estaba disponible. Genera eventos del lado del destinatario llamados manifestação do destinatário —una obligación legal del comprador de confirmar recepción, reconocer la transacción o rechazarla. Un pipeline de extracción completo debe manejar estos cambios impulsados por eventos, no solo extraer el XML inicial y darlo por terminado. Para un análisis más profundo de cómo las reglas de cancelación y contingencia afectan los flujos de AP, consulte nuestro análisis de la complejidad del procesamiento de NF-e.

Estas tres diferencias significan que la extracción de NF-e no es "extracción de facturas con nombres de campos en portugués". Es una categoría propia —más cercana al análisis EDI que al OCR de documentos, pero con una complejidad fiscal que supera la mayoría de los estándares EDI por un orden de magnitud. Para conocer el otro gran sistema de factura electrónica latinoamericano con sus propias complejidades estructurales, consulte nuestra guía completa de extracción de CFDI mexicano.

Flujo completo de extracción de NF-e: paso a paso

Un flujo de extracción de NF-e de extremo a extremo, ya sea manual, basado en scripts o impulsado por IA, sigue la misma secuencia lógica. Cada paso produce una salida específica que alimenta al siguiente.

1

Obtén el XML, no solo el DANFE

Cada transacción NF-e genera un archivo XML. Si tu proveedor solo envió el DANFE, usa la clave de acceso de 44 dígitos impresa en él para descargar el XML completo desde el portal SEFAZ del estado emisor. La ley brasileña exige que el proveedor entregue el XML; lo necesitas tanto para la extracción como para el archivo obligatorio de cinco años. Almacena los XML originales tal como los recibiste: modificarlos invalida la firma digital y rompe la pista de auditoría.

2

Verifica la Clave de Acceso y el Estado en SEFAZ

Antes de procesar cualquier dato, confirma que la NF-e sea válida. Extrae la chave de acesso de 44 dígitos del elemento <chNFe> y consulta el servicio web o portal de SEFAZ. Revisa que el estado sea "Autorizada" — no "Cancelada" ni "Denegada". Este paso debe automatizarse en cualquier flujo con scripts o herramientas, porque una NF-e puede cancelarse dentro de las 24 horas posteriores a su emisión. Verificar la clave de acceso en el momento de la extracción evita que proceses un documento sin validez legal.

3

Analiza la Estructura del XML en Grupos

Un XML de NF-e tiene una estructura predecible de alto nivel. Los grupos principales de elementos son: <ide> (identificación del documento), <emit> (emisor/proveedor), <dest> (destinatario/tú), <det> (ítems de línea — se repite por producto), <total> (totales de la factura — uno por tipo de impuesto), <transp> (transporte/flete), <cobr> (pago/facturación) y <infAdic> (información adicional). Tu script o herramienta de extracción debe analizar cada grupo de forma independiente y luego unir los resultados a nivel de ítem de línea.

4

Asigna Campos a Columnas de Salida Usando la Tabla de Referencia

Para cada campo que necesites en tu hoja de cálculo o archivo de importación ERP, identifica la ruta XML exacta, el tipo de dato esperado y la transformación requerida (fechas a formato ISO, montos a decimales con dos posiciones, cadenas CNPJ con relleno de ceros conservado). Usa la referencia de mapeo de campos en la sección 3 a continuación. La distinción crítica en este paso: separa los campos de nivel de cabecera (extraídos una vez por NF-e) de los campos de nivel de ítem de línea (extraídos para cada elemento <det>). Tu estructura de salida debe reflejar esto: una tabla de cabecera con una fila por factura y una tabla de ítems de línea con varias filas por factura.

5

Validar cálculos fiscales contra datos de referencia

Los XML de NF-e contienen los cálculos fiscales del proveedor, no los tuyos. Tu flujo de extracción debe incluir validaciones: ¿la tasa de ICMS coincide con la correcta para el par origen-destino? ¿La tasa de IPI corresponde al rango del código NCM del producto? ¿El código CST es coherente con el tipo de transacción descrito por el CFOP? La sección 4 de esta guía proporciona las tablas de referencia necesarias. Señala cualquier discrepancia para revisión — no importes datos fiscales incorrectos a tu ERP sin verificar.

6

Exportar, archivar y monitorear eventos

Exporta los datos estructurados a tu ERP u hoja de cálculo. Archiva tanto el XML original (exactamente como se recibió, sin modificaciones) como el resultado de la extracción. Luego, configura un proceso de monitoreo: revisa el estado SEFAZ de los NF-e extraídos 48 horas después para detectar cancelaciones o eventos de corrección. Un proveedor puede cancelar un NF-e dentro de 24 horas sin notificarte. Si extrajiste datos de un NF-e ahora cancelado y los publicaste en tu ERP, debes crear un registro de reversión. Herramientas automatizadas pueden encargarse de este monitoreo — los equipos humanos suelen pasarlo por alto.

Referencia de mapeo de campos XML de NF-e

Las siguientes tablas mapean las rutas XML esenciales de NF-e a las columnas de la hoja de cálculo. Los campos se clasifican por criticidad: Crítico (requerido para el procesamiento básico), Importante (necesario para validación fiscal y recuperación de créditos) y Específico (necesario para escenarios concretos como aduanas o declaraciones SPED). Todas las rutas son relativas al espacio de nombres XML estándar de NF-e.

Campos de cabecera (una fila por factura)

Columna de salidaRuta XML (relativa a <nfeProc>/<NFe>/<infNFe>)Valor de ejemploCriticidad
Chave de Acesso@Id (remover prefixo "NFe") o <ide>/<cNF> combinado con prefijo35200600012345000106550010000012341012345678Crítico
Número NF-e<ide>/<nNF>1234Crítico
Serie NF-e<ide>/<serie>1Crítico
Fecha de Emisión<ide>/<dhEmi>2026-06-15T14:30:00-03:00Crítico
Protocolo de Autorización SEFAZ<ide>/<nProt>135260001234567Crítico
Tipo de Emisión<ide>/<tpEmis>1 (normal), 2-6 (contingencia)Importante
CNPJ del Proveedor<emit>/<CNPJ>00.000.000/0001-91Crítico
Razón Social del Proveedor<emit>/<xNome>Fornecedor Exemplo LtdaCrítico
Inscripción Estatal del Proveedor<emit>/<IE>123.456.789.110Importante
Estado del Proveedor (Código IBGE)<emit>/<enderEmit>/<cUF>35 (São Paulo), 33 (Rio de Janeiro)Crítico
CNPJ del Comprador<dest>/<CNPJ>00.000.000/0002-82Crítico
Estado del Comprador (Código IBGE)<dest>/<enderDest>/<cUF>31 (Minas Gerais)Crítico
Valor Total NF-e<total>/<ICMSTot>/<vNF>12500.00Crítico
Valor Total ICMS<total>/<ICMSTot>/<vICMS>1500.00Importante
Valor Total ICMS-ST<total>/<ICMSTot>/<vST>450.00Importante
Valor Total IPI<total>/<ICMSTot>/<vIPI>625.00Importante
Valor Total PIS<total>/<ICMSTot>/<vPIS>206.25Importante
Valor Total COFINS<total>/<ICMSTot>/<vCOFINS>950.00Importante
Valor Desconto<total>/<ICMSTot>/<vDesc>250.00Específico
Valor Frete<total>/<ICMSTot>/<vFrete>350.00Importante
Valor Seguro<total>/<ICMSTot>/<vSeg>50.00Específico
Info. Cobrança/Faturamento<cobr>/<dup>/<dVenc> (vencimento) e <vDup> (valor)2026-07-15 / 12500.00Importante
CFOP (nível 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 ítems (una fila por línea de producto)

Cada elemento <det> dentro de <infNFe> representa una línea de producto. El atributo nItem indica el número de línea (comenzando en 1). Los siguientes campos se repiten por cada <det>:

Columna de salidaRuta XML (por <det>)Criticidad
Número de Línea@nItemCrítico
Código del Producto (Código Interno del Proveedor)<prod>/<cProd>Importante
Descripción del Producto<prod>/<xProd>Crítico
Código NCM (Clasificación del producto de 8 dígitos)<prod>/<NCM>Crítico
Código CFOP (Operación fiscal de 4 dígitos)<prod>/<CFOP>Crítico
CST — Código de Situación Tributaria del ICMS<imposto>/<ICMS>/<ICMS00>/<CST> (varía según subgrupo)Crítico
Cantidad<prod>/<qCom>Crítico
Precio Unitario<prod>/<vUnCom>Crítico
Total de la Línea (Bruto)<prod>/<vProd>Crítico
Base de Cálculo del ICMS (BC ICMS)<imposto>/<ICMS>/<ICMS00>/<vBC>Importante
Alícuota del ICMS (%)<imposto>/<ICMS>/<ICMS00>/<pICMS>Importante
Valor del ICMS<imposto>/<ICMS>/<ICMS00>/<vICMS>Crítico
Base de Cálculo del ICMS-ST (si aplica)<imposto>/<ICMS>/<ICMSST>/<vBCST>Importante
Valor del ICMS-ST (si aplica)<imposto>/<ICMS>/<ICMSST>/<vICMSST>Importante
Base de Cálculo del IPI<imposto>/<IPI>/<IPITrib>/<vBC>Importante
Alícuota IPI (%)<imposto>/<IPI>/<IPITrib>/<pIPI>Importante
Valor IPI<imposto>/<IPI>/<IPITrib>/<vIPI>Importante
Base de cálculo PIS<imposto>/<PIS>/<PISAliq>/<vBC>Importante
Alícuota PIS (%)<imposto>/<PIS>/<PISAliq>/<pPIS>Importante
Valor PIS<imposto>/<PIS>/<PISAliq>/<vPIS>Importante
Base de cálculo COFINS<imposto>/<COFINS>/<COFINSAliq>/<vBC>Importante
Alícuota COFINS (%)<imposto>/<COFINS>/<COFINSAliq>/<pCOFINS>Importante
Valor COFINS<imposto>/<COFINS>/<COFINSAliq>/<vCOFINS>Importante
UOM (Unidad de Medida)<prod>/<uCom>Específico
GTIN/EAN (Código de Barras)<prod>/<cEAN>Específico
EX TIPI (Código de exención IPI)<prod>/<EXTIPI>Específico

Nota importante sobre subgrupos de ICMS: La ruta XML de ICMS dentro de <imposto> varía según el código CST. Un ICMS tributado normalmente usa el subgrupo <ICMS00>. Otros códigos CST usan <ICMS10> (tributado + ST), <ICMS20> (base reducida), <ICMS30> (ST exenta de ICMS regular), <ICMS40> (exenta), <ICMS51> (diferida), <ICMS60> (ya recaudada), <ICMS90> (otras), <ICMSPart> (DIFAL — diferencial de alícuota interestatal) y <ICMSST> (sustitución tributaria). Su mapeo de extracción debe manejar todas estas variantes, no solo <ICMS00>.

Validación del ICMS: Cómo Verificar los Valores Extraídos

Un XML de NF-e incluye los cálculos tributarios del proveedor, que pueden ser incorrectos. SEFAZ valida que la estructura del XML esté completa y que la aritmética básica sea coherente, pero no verifica que se haya aplicado la alícuota correcta de ICMS para el par origen-destino, ni que la alícuota de IPI coincida con la TIPI oficial del código NCM. Esa responsabilidad es suya como comprador — y es la fuente más común de pagos en exceso recuperables en AP brasileño.

Validación de la Alícuota Interestatal de ICMS por Par de Estados

La alícuota de ICMS en una operación interestatal depende del estado de origen (donde el proveedor envía) y del estado de destino (donde está ubicada su empresa). Use esta tabla para validar que la alícuota de ICMS en la NF-e coincida con la correcta para el par de estados:

Estado de OrigenEstado de DestinoAlícuota Estándar de ICMSNota
Cualquier estado del Sur/Sudeste (SP, RJ, MG, ES, PR, SC, RS)Cualquier estado del Sur/Sudeste12%Alícuota interestatal estándar dentro de la región Sur/Sudeste
Cualquier estado del Sur/SudesteCualquier estado del Norte/Nordeste/Centro-Oeste7%Alícuota reducida para regiones menos desarrolladas (Art. 2, I, LC 87/96)
Cualquier estado del Norte/Nordeste/Centro-OesteCualquier estado (incluyendo Sur/Sudeste)12%Alícuota estándar de salida de regiones en desarrollo
Cualquier estadoCualquier estado (bienes importados con >40% de contenido extranjero)4%Resolução Senado 13/2012 — aplica a productos con más del 40% de contenido importado
Estado proveedor = estado receptor (intraestatal)Mismo estado17%–22%Varía por estado: SP=18%, RJ=20%, MG=18%, PR=19%, RS=17%, etc.

Si la alícuota de ICMS en la NF-e no coincide con la esperada para el par origen-destino (de <emit>/<enderEmit>/<cUF> a <dest>/<enderDest>/<cUF>), marque el documento para revisión. Las discrepancias en las alícuotas son uno de los errores más comunes en facturas de proveedores brasileños y pueden generar cálculos incorrectos de créditos tributarios.

Códigos CST: Los códigos de situación tributaria que lo cambian todo

El CST (Código da Situação Tributária) es un código de tres dígitos que indica cómo se aplicó un impuesto, no solo la tasa. Cada cálculo de ICMS, IPI, PIS y COFINS en una NF-e lleva su propio CST. El primer dígito del CST indica el origen del régimen tributario (0=nacional, 1=extranjero, 2=extranjero con contenido nacional — varía según el impuesto). Para el ICMS específicamente, el CST determina si el ICMS es gravable, exento, diferido, sustituido (ST) o recaudado mediante un régimen especial. Los códigos CST de tres dígitos del ICMS siguen una lógica específica:

CST (ICMS)Significado¿Crédito disponible?Impacto en AP
00Gravado — se aplica la tasa completa de ICMSCompra estándar. Extrae vBC, pICMS, vICMS normalmente.
10Gravado + Sustitución Tributaria (ICMS-ST)Sí (solo ICMS regular)Dos montos de ICMS: regular y ST. Extrae ambos — el monto ST no es tu crédito.
20Gravado con base de cálculo reducidaSí (proporcional)La base gravable se reduce (ej., en 1/3). El campo vBC refleja la base reducida.
30Exento de ICMS regular + se aplica STNoNo hay ICMS regular que extraer. Solo existen campos ST. Tu costo incluye el monto ST.
40Exento — no se cobra ICMSNoSin valor de ICMS. El total de la línea sigue igual pero no se genera crédito.
41Exento — no gravableNoSimilar al CST 40. No hay ICMS que extraer ni crédito.
51Diferido — pago de ICMS pospuesto a etapa posteriorDependeExtrae vBC y pICMS incluso si vICMS es cero — el diferimiento afecta eventos futuros.
60ICMS ya cobrado por el proveedor (o eslabón anterior en la cadena)NoComún en combustibles, energía, telecomunicaciones. El ICMS no es un ítem de línea — se pagó aguas arriba.
70Gravado con base reducida + STSí (proporcional)Híbrido: base reducida en ICMS regular + monto ST separado. Ambos deben extraerse.
90Otros — régimen especial no cubierto arribaDependeRevisa manualmente. El <infAdic> de la NF-e debe explicar el régimen.

Tu flujo de extracción siempre debe capturar el código CST junto con el monto del impuesto — un "ICMS cero" con CST 40 (exento) es una situación muy diferente a un "ICMS cero" con CST 00 (error). El CST determina si el cero es un tratamiento fiscal legítimo o una brecha de datos que debes 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 para uma alíquota de IPI. Embora você não possa manter a planilha completa da TIPI internamente (ela contém milhares de entradas e é atualizada periodicamente pela Receita Federal), você pode 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 fiscal do fornecedor e rege tanto a alíquota quanto a disponibilidade de créditos para você, comprador:

RegimeAlíquota PISAlíquota COFINSCombinadaComprador 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 recuperação tributária.

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 reivindicados incorretamente.

Sustitución Tributaria del ICMS (ICMS-ST): El Mecanismo Que No Puedes Ignorar

El ICMS-ST (Substituição Tributária) es un mecanismo donde la autoridad fiscal asigna al primer eslabón —generalmente el fabricante o importador— la responsabilidad de recaudar el ICMS de toda la cadena de suministro. En lugar de que cada comprador de la cadena (fabricante → distribuidor → minorista) pague el ICMS sobre su propio margen, el fabricante recauda el ICMS sobre el precio final presunto de venta al consumidor al inicio de la cadena. Esta "sustitución" del contribuyente traslada el punto de recaudación del impuesto aguas arriba.

Para los equipos de Cuentas por Pagar que procesan documentos NF-e, el ICMS-ST aparece en dos escenarios:

Escenario 1 — Tu empresa está en el medio de la cadena (comprando a la parte sustituida). Compras bienes a un distribuidor que ya los adquirió bajo ST del fabricante. La NF-e incluye el ICMS regular (CST 00, gravado normalmente) y un monto separado de ICMS-ST (CST 10, bajo <ICMS10> o <ICMSST>). Tu extracción debe capturar ambos: el ICMS regular es tu crédito de entrada; el ICMS-ST no es un crédito — es un cargo incluido en el costo que ya fue remitido a SEFAZ por el proveedor anterior. No puedes reclamarlo.

Escenario 2 — Tu empresa es el eslabón final (minorista o consumidor directo). Compras a un proveedor que es la parte sustituida del ST. La NF-e incluye un solo monto de ICMS-ST (CST 30 — exento de ICMS regular, aplica ST). Todo el costo del ICMS de la cadena está incluido en este único monto. Tu extracción captura solo los campos de ST, y no hay crédito de ICMS regular disponible.

Para distinguir entre estos dos escenarios en tu flujo de extracción, verifica el código CST: CST 10 = ICMS regular + ST (obtienes créditos parciales), CST 30 = solo ST (sin créditos de ICMS regular). La ruta XML del ICMS-ST utiliza un subgrupo separado: <imposto>/<ICMS>/<ICMSST>/<vICMSST> para el monto del ST y <vBCST> para la base de cálculo del ST. Extráelos como columnas separadas del ICMS regular — nunca los sumes en un solo campo de "ICMS total". Algunos equipos de Cuentas por Pagar suman el ICMS regular y el ST y contabilizan un monto combinado, lo que sobreestima su posición de crédito de ICMS y genera hallazgos de auditoría.

CFOP y NCM: Cómo extraer los códigos que determinan el cumplimiento fiscal

Cada ítem de una NF-e lleva dos códigos que juntos definen el tratamiento tributario del producto. No son metadatos opcionales, sino los insumos de la lógica de determinación fiscal.

Referencia de códigos CFOP (clasificación por primer dígito)

El CFOP (Código Fiscal de Operações e Prestações) es un código de cuatro dígitos donde el primero indica la dirección y naturaleza de la operación. En el procesamiento de NF-e de entrada (compra), los CFOP más comunes están en los rangos 1xxx, 2xxx y 3xxx:

Primer dígitoClasificaciónCódigos de entrada comunes
1Entrada — dentro del mismo estado (intraestatal)1102 = compra para reventa, 1101 = compra para industrialización, 1116 = compra para uso/consumo
2Entrada — de otro estado (interestatal)2101 = compra para industrialización, 2102 = compra para reventa, 2116 = compra para uso/consumo
3Entrada — del exterior (importación)3101 = importación para industrialización, 3102 = importación para reventa, 3126 = importación para uso/consumo
5Salida (venta) — rara vez aparece en NF-e de entrada
6Salida interestatal — relevante solo si emites NF-e
7Salida al exterior — operaciones de exportación

Por qué el CFOP es clave en la extracción: el CFOP determina qué reglas del ICMS aplican a la operación. Un CFOP que empieza con 1 (intraestatal) implica que la alícuota del ICMS debe ser la interna del estado del proveedor (17-22%), no una interestatal. Un CFOP que empieza con 2 (interestatal) implica que la alícuota debe coincidir con la tabla interestatal anterior. Si el CFOP y la alícuota del ICMS son inconsistentes —por ejemplo, CFOP 1102 (intraestatal) con alícuota ICMS 12% (que es interestatal)— la factura tiene una discrepancia estructural que debe corregirse. Tu flujo de extracción debería detectar esto automáticamente.

Código NCM: La clasificación de productos que define IPI e impuestos de importación

NCM (Nomenclatura Comum do Mercosul) es un código de clasificación de productos de ocho dígitos basado en el Sistema Armonizado (SA) con dos dígitos adicionales específicos del Mercosur. Formato: NNNN.NN.NN (los primeros 6 dígitos son el código SA). El código NCM determina:

  • Alícuota de IPI: Asignada según la tabla TIPI. Productos con NCM que inician en capítulos específicos tienen alícuotas de IPI más altas o más bajas.
  • Aplicabilidad de ICMS-ST: Ciertos capítulos NCM están sujetos a protocolos obligatorios de ICMS-ST (convênios) entre estados.
  • Impuesto de importación (II) para compras internacionales.
  • Alícuota de impuesto sustituto (ej.: cálculos simplificados de ICMS-ST según protocolo CONFAZ).

Para extracción, el NCM siempre debe capturarse como campo de texto conservando los ceros a la izquierda. Nunca lo convierta a número — el NCM 8471.30.00 (equipo informático) perdería su estructura inicial si se tratara numéricamente. El NCM también sirve como clave primaria para consultar alícuotas de IPI si su flujo incluye validación automatizada de tasas.

Gestión de eventos especiales de NF-e en su flujo de extracción

Una NF-e no es un documento estático. Puede modificarse, cancelarse o reemitirse mediante una serie de eventos legalmente definidos. Un flujo de extracción completo debe considerar estos eventos, ya que pueden alterar los datos ya extraídos.

Cancelación. El emisor puede cancelar una NF-e dentro de las 24 horas posteriores a la recepción del protocolo de autorización, siempre que las mercancías no hayan sido movilizadas físicamente. El evento de cancelación se registra en SEFAZ y se vincula a la misma clave de acceso. Pasadas 24 horas, la cancelación ya no es posible — el emisor debe solicitar una cancelación especial ante la autoridad fiscal o emitir una nota de crédito (NF-e de devolución). Para su flujo de extracción: la validación clave es verificar el estado de la NF-e al momento de la extracción y nuevamente antes del pago. Si procesa documentos NF-e mediante programación, incluya un paso de verificación de estado que consulte el servicio web ConsNFeDest de SEFAZ para la lista de estados de NF-e recibidas por el comprador.

Carta de Correção (CC-e). Si el proveedor necesita corregir un campo en una NF-e ya autorizada (ej.: corregir la descripción del producto, ajustar la dirección de envío, actualizar la fecha de vencimiento del pago), emite una CC-e — una carta de corrección electrónica vinculada a la clave de acceso de la NF-e. La CC-e no reemplaza el XML; modifica campos específicos. Su flujo de extracción, al procesar documentos NF-e, debe consultar si existen eventos CC-e para esa clave de acceso. El procesamiento por lotes de ImageToTable.ai incluye la opción de verificar eventos de corrección en los documentos extraídos — porque si el proveedor corrigió la fecha de vencimiento mediante CC-e y su flujo usó la fecha del XML original, estará pagando en el plazo incorrecto.

Modos de contingencia. Si SEFAZ no está disponible, los proveedores pueden emitir NF-e en modo contingencia. El tipo de emisión (<ide>/<tpEmis>) indica el método de contingencia: 2 = FS-DA (DANFE digitado), 3 = EPEC (contingencia previa al evento), 4 = DPEC (contingencia electrónica), 5 = FS-IA (contingencia formulario), 6 = SVC (Contingencia Virtual SEFAZ — servidor de autorización de respaldo). En modo contingencia, la NF-e puede carecer del protocolo completo de autorización SEFAZ al momento de la extracción. Su flujo debe marcar los documentos emitidos en contingencia para seguimiento: una vez que el sistema se recupere, el proveedor transmitirá la NF-e completa, y usted deberá recuperar el XML final y reextraer si algún campo cambió.

Manifestação do Destinatário. No es un evento del proveedor, sino una obligación del comprador. Según la ley brasileña, el comprador de bienes debe registrar su respuesta en el portal SEFAZ dentro de plazos específicos: confirmar la recepción en 10 días desde la emisión, y aceptar o rechazar la transacción. Este proceso se llama manifestação do destinatário y se gestiona a través de la plataforma DF-e de SEFAZ. Aunque la manifestação es un paso de cumplimiento separado de la extracción, su flujo de extracción debe registrar la clave de acceso de cada NF-e procesada en un sistema de seguimiento de manifestação para que el área de cumplimiento pueda presentar los eventos requeridos a tiempo. Si no registra la manifestação, SEFAZ asume que la transacción no fue reconocida, lo que puede bloquear futuras emisiones de NF-e de ese proveedor.

Para un análisis más profundo de estos tipos de eventos y cómo afectan las operaciones de AP, consulte nuestro análisis de la complejidad del procesamiento de NF-e.

Métodos de Extracción Comparados: ¿Cuál se Adapta a su Volumen?

Existen cuatro enfoques comunes para extraer datos de NF-e, y el adecuado depende de su volumen, sus recursos técnicos y si necesita detalle de impuestos por línea o solo totales de cabecera.

MétodoCómo FuncionaCampos ExtraídosVolumen IdealLimitación Clave
Ingreso Manual de DANFEUn asistente lee el DANFE impreso y lo escribe en Excel o ERP~20 campos de cabecera, sin detalle de impuestos por línea< 10 por mesOmite el 90% de los datos, incluyendo todos los desgloses de impuestos; alta tasa de error
Scripting XML (Python, Power Query)Un script personalizado analiza el XML de la NF-e y extrae campos a CSV/ExcelTodos los campos de cabecera y línea; requiere mapeo XPath predefinido10–100 por mesRequiere habilidades de programación; se rompe con actualizaciones de esquema (doble esquema 2026); sin validación de impuestos incorporada
Módulo de Localización ERP (SAP/Oracle/Dynamics)Módulo ERP específico para Brasil que recibe XML de NF-e y contabiliza automáticamente en el libro mayorConjunto completo de campos, mapeo de cuentas de impuestos, integración SPED100+ por mesAlto costo (licencia + implementación); solo funciona si tiene ese ERP; mapeo de esquema rígido
Extracción Basada en IACargue PDFs de DANFE o XMLs de NF-e; la IA analiza y mapea a columnas definidas por el usuarioTodos los campos visibles del DANFE desde PDFs; campos completos desde XML10–500+ por mesEl análisis de XML requiere que la herramienta soporte entrada de datos estructurados (no solo PDFs visuales)

La distinción crítica para NF-e es si el método de extracción maneja tanto el DANFE como el XML. Si sus proveedores envían una mezcla — algunos transmiten el XML directamente, otros solo imprimen y envían el DANFE — necesita un método que maneje ambas fuentes de manera consistente. ImageToTable.ai soporta ambas: puede cargar archivos XML de NF-e junto con PDFs de DANFE en el mismo lote, definir una sola plantilla de columnas y obtener una hoja de cálculo unificada. La herramienta también maneja las rutas variables de subgrupos de ICMS descritas anteriormente, una ventaja significativa cuando la complejidad del esquema obliga a los equipos de scripting a mantener docenas de variaciones de XPath. Para un tutorial práctico sobre el procesamiento por lotes de múltiples documentos NF-e, consulte nuestra guía para el procesamiento por lotes de NF-e.

XML / PDF / JPG Extracción con IA

Los archivos se procesan de forma segura y no se almacenan.

Preparando su flujo de extracción para la Reforma Tributaria 2026

La Enmienda Constitucional 132/2023 y la Ley Complementaria 214/2025 de Brasil introdujeron un sistema de IVA dual que reemplaza cinco impuestos existentes por dos nuevos. Para la extracción de NF-e, esto significa que el esquema XML que analiza hoy incluirá campos de impuestos antiguos y nuevos durante un período de transición que va de agosto de 2026 a 2033. Esto es lo que cambia a nivel de extracción y lo que debe hacer al respecto.

Lo que se mantiene: La estructura general del XML (<ide>, <emit>, <det>, <total>) sigue igual. Los campos de encabezado, cantidades por línea, códigos NCM y CFOP no se ven afectados.

Lo que cambia: Se agregan nuevos grupos de elementos XML a la sección <imposto> de cada línea de producto y al grupo de resumen <total>. Los nuevos grupos incluyen cálculos de CBS (federal) e IBS (estatal/municipal) junto a los campos existentes de ICMS, IPI, PIS y COFINS. Durante el período de transición, debe extraer ambos conjuntos de campos y tener ambos disponibles para los sistemas posteriores.

Impuesto ActualReemplazado PorImpacto en ExtracciónCronograma de Transición
PIS (1,65% / 0,65%)CBS (federal, ~8,8%)Nuevos elementos <CBS> aparecen junto a <PIS>. Ambos deben extraerse durante la transición. CBS reemplaza completamente a PIS en 2033.2026: campos de prueba CBS (tasa 0,9%). 2027: CBS activo, PIS eliminado.
COFINS (7,6% / 3,0%)CBS (federal, ~8,8%)Igual que PIS — campos COFINS coexisten con campos CBS. La extracción combinada PIS+COFINS debe considerar la tasa unificada de CBS.2027: COFINS eliminado, CBS a tasa completa.
ICMS (estatal, 17-22% interno, 4-12% interestatal)IBS (estatal/municipal, ~17,7%)Nuevo grupo de elementos <IBS> con vBC, pIBS, vIBS. ICMS e IBS coexisten por línea de ítem. La extracción debe capturar ambas bases imponibles — pueden diferir.2026: campos de prueba IBS (tasa 0,1%). 2029-2032: IBS se implementa por estado, reemplazando ICMS gradualmente.
IPI (0-330% por NCM)IS (Impuesto Selectivo, variable)IS reemplaza IPI gradualmente. IPI e IS pueden coexistir durante la transición. NCM sigue siendo el clasificador de productos.Las tasas de IPI comienzan a reducirse a cero en 2027. Reemplazo completo en 2033.

Tres pasos prácticos para preparar tu flujo de extracción:

1

Audite su mapa de campos actual

Revise su plantilla de extracción e identifique cada campo que actualmente mapea a ICMS, IPI, PIS o COFINS. Para cada uno, agregue un campo paralelo para el nuevo impuesto correspondiente (CBS para PIS/COFINS, IBS para ICMS, IS para IPI). Aunque aún no use los nuevos campos, el espacio del esquema debe estar mapeado para que sus columnas de salida existan y estén listas para recibir datos cuando los campos CBS/IBS se llenen.

2

Pruebe con documentos NF-e de esquema dual

Solicite XML de NF-e de muestra a sus proveedores que ya incluyan los nuevos campos CBS e IBS (toda NF-e emitida a partir del 1 de agosto de 2026 los incluirá). Ejecútelos en su pipeline de extracción y verifique que los campos de impuestos antiguos y nuevos se extraigan correctamente. Si su extracción se basa en scripts, confirme que las consultas XPath para ICMS no capturen accidentalmente valores de IBS; los grupos de elementos comparten patrones de nombres similares.

3

Defina su estrategia de campos duales

Durante los próximos 7-8 años, sus datos extraídos incluirán campos de impuestos antiguos y nuevos. Decida si (a) mantiene columnas paralelas en su hoja de cálculo de salida y deja que los usuarios finales elijan cuál usar, o (b) implementa un cronograma de migración donde ciertas columnas se introduzcan y otras se eliminen en fechas específicas. La mayoría de los equipos de AP preferirán la opción (a) durante los primeros años de transición: crea una tabla de salida más larga pero evita el riesgo de eliminar el único campo válido durante el período de régimen mixto.

Preguntas Frecuentes

¿Necesito manejar namespaces XML al extraer campos de NF-e?

Sí. El XML de NF-e usa un namespace predeterminado declarado en el elemento <nfeProc> (normalmente xmlns="http://www.portalfiscal.inf.br/nfe"). Cualquier consulta XPath debe registrar este namespace (en lxml de Python: ns = {'nfe': 'http://www.portalfiscal.inf.br/nfe'}) o usar local-name() para omitirlo. El conector XML de Power Query maneja namespaces automáticamente en la mayoría de los casos. Si su herramienta de extracción requiere registro explícito del namespace, asegúrese de usar la URI correcta; una discrepancia producirá silenciosamente conjuntos de resultados vacíos.

¿Debo sumar los impuestos por línea y compararlos con los totales del encabezado?

Sí — esta es una de las validaciones más valiosas que puede implementar. El XML de NF-e contiene los totales de impuestos en <total>/<ICMSTot> y el detalle por línea en cada <det>. Deben coincidir. Una discrepancia entre la suma por línea y el total del encabezado es una señal de alerta: puede indicar que se omitió un ítem en la generación del XML, que un descuento se aplicó de forma inconsistente, o que el ERP del proveedor tiene un error de configuración. Concilie los montos de impuestos por línea con los totales del encabezado como paso estándar en cada lote de extracción.

¿La extracción de NF-e cubre los requisitos de reporte SPED?

No. SPED (Sistema Público de Escrituración Digital) es el sistema brasileño de presentación de libros digitales — EFD-ICMS/IPI para impuestos estatales y EFD-Contribuciones para contribuciones federales — que requieren datos formateados en layouts específicos de SPED y enviados a través de software acreditado. La extracción de NF-e lleva los datos de la factura a una hoja de cálculo; no genera registros compatibles con SPED. Sin embargo, los datos que extrae de NF-e (ICMS por línea, PIS, COFINS, CFOP, NCM, CST) son los mismos que alimentan las declaraciones SPED. Si su flujo de extracción captura correctamente el detalle fiscal a nivel de línea, su equipo contable brasileño puede usar esos datos para llenar los registros SPED requeridos en lugar de volver a tipearlos desde documentos fuente. El mapeo de campos NF-e a posiciones del layout SPED es un paso de transformación separado que algunos módulos de localización de ERP manejan automáticamente.

¿Qué pasa si mi empresa tiene varios CNPJ en diferentes estados brasileños?

Esto es común en organizaciones grandes. Cada CNPJ (o "estabelecimento" en portugués) es una entidad legal separada a efectos fiscales, y el estado de destino en la NF-e corresponde al CNPJ que recibió los bienes. Al extraer datos de NF-e para una organización con múltiples entidades, filtre su extracción por el CNPJ del destinatario (<dest>/<CNPJ>) y mantenga asignaciones contables separadas por entidad. La validación de la tasa de ICMS también difiere por entidad: los bienes enviados a su CNPJ de São Paulo enfrentan tasas diferentes a los enviados a su CNPJ de Bahía, incluso del mismo proveedor. Para más información sobre cómo manejar la complejidad de los estados brasileños, consulte nuestra guía de extracción asequible de NF-e.

¿Qué sucede si el código NCM cambia mientras tengo datos extraídos de un período anterior?

Los códigos NCM se actualizan periódicamente por la Receita Federal (generalmente cada año, pero a veces con ajustes a medio año a través de Notas Técnicas). Si un código NCM cambia, la tasa de IPI para esa clasificación de producto también puede cambiar. Para fines de extracción, debe capturar el código NCM tal como aparece en la NF-e en el momento de la emisión: es el código vigente en la fecha de la factura y determina los impuestos legalmente adeudados. Si realiza análisis retrospectivos o ajustes de SPED, use el NCM registrado en el documento original, no la lista actual de NCM.

¿Qué pasa si el XML de la NF-e del proveedor tiene elementos faltantes o mal formados?

Sucede. Los problemas más comunes son: grupo <cobr> (facturación) faltante, dirección incompleta en <enderEmit>, o subgrupos de ICMS que no siguen la variante de esquema esperada para el código CST declarado. Su flujo de extracción debe manejar esto con elegancia: devuelva nulo o un marcador de posición para campos faltantes y registre una advertencia de validación. Nunca falle de forma crítica por elementos faltantes no críticos. Para campos críticos (clave de acceso, CNPJ, totales de líneas de artículos), un valor faltante debe provocar el rechazo de esa NF-e del lote con un mensaje de error claro. Un informe de resumen de validación es esencial: registre cada NF-e que tenga campos faltantes o anómalos para que su equipo pueda investigar antes de contabilizar en el libro mayor.

¿Cómo manejo el DIFAL (diferencial de alícuota del ICMS entre estados)?

El DIFAL (Diferencial de Alíquota do ICMS) se aplica cuando los bienes se venden entre estados y la alícuota del ICMS en el estado de destino es mayor que la tasa interestatal pagada en el origen. El comprador debe pagar la diferencia de tasa a su propio estado. En la NF-e, el DIFAL se representa mediante el subgrupo <ICMSPart> dentro de <imposto>/<ICMS>. Este subgrupo contiene vBC (la base de cálculo), pICMS (la tasa interestatal ya aplicada), pICMSUf (la tasa interna del estado de destino) y vICMS (el monto del DIFAL = diferencia entre las dos tasas sobre la base). Debe extraer el monto del DIFAL por separado y gestionarlo a través de sus flujos de trabajo de crédito de ICMS específicos del estado; no forma parte del crédito regular de ICMS.

¿Debo extraer el flete y el seguro por separado de los valores del producto?

Sí. El XML de la NF-e desglosa la transacción en valor del producto (vProd), flete (vFrete), seguro (vSeg) y otros cargos (vOutro). La base imponible del ICMS a menudo incluye la suma del valor del producto + flete + seguro + otros cargos, pero no siempre. Algunos productos tienen el ICMS calculado solo sobre el valor del producto. Extraer cada componente por separado le permite validar que la base imponible del ICMS coincida con su entendimiento de la estructura de precios. Si el flete está incluido en la base del ICMS en la NF-e, pero su modelo ERP espera que el flete esté fuera de la base del ICMS, tiene un elemento de conciliación que resolver.

¿Pueden las herramientas de extracción basadas en IA procesar el XML completo de la NF-e, o solo el PDF del DANFE?

Depende de la herramienta. La extracción basada en IA de ImageToTable.ai puede procesar tanto archivos XML de NF-e (datos estructurados) como PDFs de DANFE (documento visual) en el mismo lote. Cuando carga un XML, la herramienta lee los elementos estructurados directamente (sin necesidad de OCR) y los asigna a su plantilla de columnas. Cuando carga un PDF de DANFE, la IA lee el contenido visual y extrae los campos visibles. La principal ventaja de una plataforma única para ambos es la consistencia: usted define una plantilla de columnas para "Clave de acceso de la NF-e", "Monto del ICMS", "Código CFOP", y la herramienta los completa desde el documento fuente que reciba. Esto elimina la necesidad de mantener flujos de trabajo separados para proveedores basados en XML versus DANFE, un punto de fragmentación común en las operaciones de cuentas por pagar brasileñas.

¿Necesito archivar la salida de la extracción junto con el XML?

La ley brasileña exige que el XML original de la NF-e se archive durante cinco años a partir del cierre del ejercicio fiscal en que ocurrió la transacción. La salida de la extracción (su hoja de cálculo o registros ERP) no reemplaza al XML. Sin embargo, mantener una salida de extracción estructurada junto con el archivo XML original es una buena práctica para la conciliación interna y la respuesta a auditorías. Durante una auditoría de SEFAZ, probablemente necesitará presentar ambos: los XML originales (para probar que los documentos existen y fueron autorizados correctamente) y sus registros contables (para mostrar cómo se procesaron los datos). Un flujo de extracción que archive automáticamente tanto el XML fuente como la salida extraída en una estructura vinculada —con la clave de acceso como clave de unión— le ahorrará mucho tiempo durante la preparación para la auditoría. Para opciones de cumplimiento rentables, consulte nuestra guía de extracción de NF-e para pequeñas empresas.

Pruebe la Extracción con Sus Propios Documentos NF-e

La extracción de NF-e no es un ejercicio teórico. Cada XML que recibe contiene datos completamente estructurados, validados por el gobierno y listos para usar. La única pregunta es si su flujo de trabajo extrae suficientes datos — y los valida correctamente — antes de que lleguen a su ERP o registros financieros. Los mapas de campo, las tablas de validación fiscal y las referencias de códigos de esta guía le brindan la capa de referencia. El motor de extracción procesa los documentos. La combinación transforma una NF-e brasileña de un archivo XML opaco que su equipo tiene dificultades para analizar en una fuente transparente de datos financieros que puede usar con confianza — para contabilización, recuperación de créditos y defensa en auditorías.

📮 contact email: [email protected]