Guía completa parala extracción de NF-e brasileñas

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 la recuperación de créditos de ICMS y PIS/COFINS. Sin embargo, la mayoría de los equipos de cuentas por pagar 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 que necesitas 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 →
Ilustración principal titulada Extracción de NF-e brasileñas: mapeo completo de campos XML y guía de impuestos con tres iconos vectoriales planos para rutas de etiquetas XML en portugués, cuatro impuestos por línea 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 cuentas por pagar 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 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: un solo supuesto de régimen incorrecto en una factura de BRL 100.000 cuesta BRL 9.250 en créditos no recuperados.

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

El desafío no es la disponibilidad de los datos. Es la complejidad de los datos. Una factura europea Peppol BIS utiliza aproximadamente 100 elementos XML. Una NF-e bajo la versión de diseño 4.0 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, cálculo de base imponible, tasa y regla de crédito. Los datos están 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 de trabajo. Si está configurando un flujo de extracción de NF-e por primera vez, comience con el flujo de trabajo paso a paso en la sección 2. Si ya tiene un pipeline de extracción en funcionamiento y necesita validar una tasa específica de ICMS o consultar un código CFOP, salte 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 integral: 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 es nuevo en el mundo de la NF-e, comience con nuestra guía para principiantes sobre la Nota Fiscal Eletrônica antes de profundizar en los detalles de extracción. Esta guía asume que usted comprende 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 que la extracción de NF-e sea diferente de la extracción de facturas regular

Tres diferencias estructurales definen cómo funciona la extracción de NF-e y por qué un 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 regular es un problema de lectura: el sistema de IA u OCR debe localizar texto en una página, reconocer qué cadena es el número de factura y mapearlo 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 utiliza nombres de etiquetas en portugués (<emit> para el emisor, <dest> para el receptor, <imposto> para impuestos) y jerarquías profundamente anidadas que varían según el régimen fiscal. El desafío de extracción cambia de "encontrar los datos" a "mapear la ruta XML correcta a cada columna de salida".

2. La estructura fiscal es multidimensional. Una sola línea de artículo de NF-e lleva hasta cuatro cálculos de impuestos independientes — ICMS (a nivel estatal, con más de 10 variantes según el código CST), IPI (impuesto especial federal, 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 fiscal) y reglas de elegibilidad de crédito. A diferencia de una factura de IVA de la UE donde un porcentaje de impuesto se aplica a toda la línea, una línea de artículo 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 trabajo de extracción debe tener en cuenta eventos posteriores a la emisión. Una NF-e puede cancelarse dentro de las 24 horas. Puede recibir una Carta de Correção (CC-e) que modifica campos específicos. Puede emitirse bajo modos de contingencia si SEFAZ no estaba disponible. Desencadena eventos del lado del receptor llamados manifestação do destinatário — una obligación legal para que el comprador confirme la recepción, reconozca la transacción o la rechace. Un pipeline de extracción completo debe manejar estos cambios impulsados por eventos, no solo extraer el XML inicial y darlo por terminado. Para una mirada más profunda sobre cómo las reglas de cancelación y contingencia afectan los flujos de trabajo 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 ver el otro sistema importante de facturación electrónica latinoamericano con sus propias complejidades estructurales, consulte nuestra guía completa de extracción de CFDI mexicano.

El flujo de trabajo completo de extracción de NF-e: paso a paso

Un flujo de trabajo 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 un resultado específico que alimenta al siguiente.

1

Recopile el XML, no solo el DANFE

Cada transacción de NF-e genera un archivo XML. Si su proveedor solo envió el DANFE, use la clave de acceso de 44 dígitos impresa en el DANFE para descargar el XML completo desde el portal SEFAZ del estado emisor. La ley brasileña exige que los proveedores proporcionen el XML, y usted lo necesita tanto para la extracción como para su archivo obligatorio de cinco años. Almacene los XML originales exactamente como los recibió; modificarlos invalida la firma digital y rompe su pista de auditoría.

2

Verifique la clave de acceso y el estado en SEFAZ

Antes de procesar cualquier dato, confirme que la NF-e sea válida. Extraiga la chave de acesso de 44 dígitos del elemento <chNFe> y consulte el servicio web o el portal de SEFAZ. Compruebe que el estado sea "Autorizada" (autorizada), no "Cancelada" (cancelada) ni "Denegada" (denegada). Este paso debe automatizarse en cualquier flujo de trabajo basado en 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 punto de extracción evita que procese un documento que ya no tiene validez legal.

3

Analice la estructura del XML en grupos

Un XML de NF-e tiene una estructura de nivel superior predecible. Los grupos de elementos principales son: <ide> (identificación del documento), <emit> (emisor/proveedor), <dest> (destinatario/usted), <det> (partidas, repetidas por producto), <total> (totales de la factura, uno por tipo de impuesto), <transp> (transporte/flete), <cobr> (pago/facturación) y <infAdic> (información adicional). Su script o herramienta de extracción debe analizar cada grupo de forma independiente y luego unir los resultados a nivel de partida.

4

Asigne los campos a las columnas de salida mediante la tabla de referencia

Para cada campo que necesite en su hoja de cálculo o archivo de importación ERP, identifique la ruta XML exacta, el tipo de datos esperado y la transformación requerida (fechas a formato ISO, montos a decimales con dos lugares, cadenas CNPJ con relleno de ceros conservado). Utilice la referencia de asignación de campos en la sección 3 a continuación. La distinción crítica en este paso: separe los campos a nivel de encabezado (extraídos una vez por NF-e) de los campos a nivel de partida (extraídos para cada elemento <det>). Su estructura de salida debe reflejar esto: una tabla de encabezado con una fila por factura y una tabla de partidas con varias filas por factura.

5

Valide los cálculos de impuestos contra los datos de referencia

Los XML de NF-e contienen los cálculos de impuestos del proveedor, no los suyos. Su flujo de extracción debe incluir comprobaciones de validación: ¿la tasa de ICMS coincide con la tasa correcta para el par de estados de origen y destino? ¿La tasa de IPI corresponde al rango de 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 que necesita para estas comprobaciones. Marque cualquier discrepancia para revisión; no importe silenciosamente datos fiscales no coincidentes en su ERP.

6

Exporte, archive y supervise eventos

Exporte los datos estructurados a su ERP u hoja de cálculo. Archive tanto el XML original (exactamente como se recibió, sin modificaciones) como el resultado de la extracción. Luego, configure un proceso de monitoreo: revise el estado SEFAZ de los documentos NF-e extraídos 48 horas después de la extracción para detectar cancelaciones o eventos de corrección. Un proveedor puede cancelar una NF-e dentro de las 24 horas sin notificarle. Si extrajo datos de una NF-e ahora cancelada y los publicó en su ERP, tiene un registro de reversión que crear. Las herramientas automatizadas pueden manejar este paso de monitoreo; los equipos humanos a menudo lo pasan por alto.

Referencia de mapeo de campos XML de NF-e

Las siguientes tablas mapean las rutas XML esenciales de NF-e a columnas de hoja de cálculo. Los campos se clasifican por criticidad: Crítico (requerido para el procesamiento básico), Importante (necesario para la validación de impuestos y la recuperación de créditos) y Específico (necesario para escenarios concretos como trámites aduaneros o de 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
Clave de Acceso (Chave de Acesso)@Id (quitar prefijo "NFe") o <ide>/<cNF> combinado con el prefijo35200600012345000106550010000012341012345678Crítico
Número de NF-e<ide>/<nNF>1234Crítico
Serie de 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 de la NF-e<total>/<ICMSTot>/<vNF>12500.00Crítico
Monto Total de ICMS<total>/<ICMSTot>/<vICMS>1500.00Importante
Monto Total de ICMS-ST<total>/<ICMSTot>/<vST>450.00Importante
Monto Total de IPI<total>/<ICMSTot>/<vIPI>625.00Importante
Monto Total de PIS<total>/<ICMSTot>/<vPIS>206.25Importante
Monto Total de COFINS<total>/<ICMSTot>/<vCOFINS>950.00Importante
Monto de Descuento<total>/<ICMSTot>/<vDesc>250.00Específico
Monto de Flete<total>/<ICMSTot>/<vFrete>350.00Importante
Monto de Seguro<total>/<ICMSTot>/<vSeg>50.00Específico
Información de Pago/Cobranza<cobr>/<dup>/<dVenc> (fecha de vencimiento) y <vDup> (monto)2026-07-15 / 12500.00Importante
CFOP (a nivel de encabezado — normalmente del primer ítem de línea)<det>[1]/<prod>/<CFOP>2101Importante
Naturaleza de la Operación<ide>/<natOp>Venda de mercadoria adquirida de terceirosEspecífico

Campos de líneas de artículo (una fila por línea de producto)

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

Columna de salidaRuta XML (por <det>)Criticidad
Número de Línea@nItemCrítico
Código de Producto (Código Interno del Proveedor)<prod>/<cProd>Importante
Descripción del Producto<prod>/<xProd>Crítico
Código NCM (clasificación de 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 Fiscal del ICMS<imposto>/<ICMS>/<ICMS00>/<CST> (varía según el subgrupo)Crítico
Cantidad<prod>/<qCom>Crítico
Precio Unitario<prod>/<vUnCom>Crítico
Total de Línea (Bruto)<prod>/<vProd>Crítico
Base Imponible del ICMS (BC ICMS)<imposto>/<ICMS>/<ICMS00>/<vBC>Importante
Tasa de ICMS (%)<imposto>/<ICMS>/<ICMS00>/<pICMS>Importante
Monto del ICMS<imposto>/<ICMS>/<ICMS00>/<vICMS>Crítico
Base Imponible del ICMS-ST (si aplica)<imposto>/<ICMS>/<ICMSST>/<vBCST>Importante
Monto del ICMS-ST (si aplica)<imposto>/<ICMS>/<ICMSST>/<vICMSST>Importante
Base Imponible del IPI<imposto>/<IPI>/<IPITrib>/<vBC>Importante
Tasa de IPI (%)<imposto>/<IPI>/<IPITrib>/<pIPI>Importante
Monto de IPI<imposto>/<IPI>/<IPITrib>/<vIPI>Importante
Base de cálculo de PIS<imposto>/<PIS>/<PISAliq>/<vBC>Importante
Tasa de PIS (%)<imposto>/<PIS>/<PISAliq>/<pPIS>Importante
Monto de PIS<imposto>/<PIS>/<PISAliq>/<vPIS>Importante
Base de cálculo de COFINS<imposto>/<COFINS>/<COFINSAliq>/<vBC>Importante
Tasa de COFINS (%)<imposto>/<COFINS>/<COFINSAliq>/<pCOFINS>Importante
Monto de COFINS<imposto>/<COFINS>/<COFINSAliq>/<vCOFINS>Importante
UOM (Unidad de medida)<prod>/<uCom>Específico
GTIN/EAN (Código de barras del producto)<prod>/<cEAN>Específico
EX TIPI (Código de exención de IPI)<prod>/<EXTIPI>Específico

Nota importante sobre los subgrupos de ICMS: La ruta XML de ICMS dentro de <imposto> varía según el código CST. Un ICMS gravado normalmente utiliza el subgrupo <ICMS00>. Otros códigos CST utilizan <ICMS10> (gravado + ST), <ICMS20> (base reducida), <ICMS30> (ST exento de ICMS regular), <ICMS40> (exento), <ICMS51> (diferido), <ICMS60> (ya recaudado), <ICMS90> (otros), <ICMSPart> (DIFAL — diferencial de tasa interestatal) y <ICMSST> (sustitución tributaria). Su mapeo de extracción debe manejar todas estas variantes, no solo <ICMS00>.

Validación de Impuestos: Cómo Verificar los Números Extraídos

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

Validación de la Tasa de ICMS Interestatal por Par de Estados

La tasa de ICMS en una transacción interestatal depende del estado de origen (desde donde el proveedor envía) y del estado de destino (donde se encuentra su entidad). Use esta tabla para validar que la tasa de ICMS en la NF-e coincida con la tasa correcta para el par de estados:

Estado de OrigenEstado de DestinoTasa Estándar de ICMSNota
Cualquier estado del Sur/Sudeste (SP, RJ, MG, ES, PR, SC, RS)Cualquier estado del Sur/Sudeste12%Tasa interestatal estándar dentro de la región Sur/Sudeste
Cualquier estado del Sur/SudesteCualquier estado del Norte/Nordeste/Centro-Oeste7%Tasa reducida para regiones menos desarrolladas (Art. 2, I, LC 87/96)
Cualquier estado del Norte/Nordeste/Centro-OesteCualquier estado (incluido Sur/Sudeste)12%Tasa estándar de salida desde regiones en desarrollo
Cualquier estadoCualquier estado (bienes importados con >40% de contenido extranjero)4%Resolução Senado 13/2012 — se aplica a productos con más del 40% de contenido importado
Estado proveedor = estado receptor (intraestatal)Mismo estado17%–22%Varía según el estado: SP=18%, RJ=20%, MG=18%, PR=19%, RS=17%, etc.
Gráfico de barras titulado Verifique la Tasa de ICMS Contra el Par de Estados que muestra 4% para bienes con más del 40% de importación, 7% del Sudeste al Norte/Nordeste, 12% del Sudeste al Sudeste y 18% dentro de São Paulo.

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

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 tributable, exento, diferido, sustituido (ST) o recaudado mediante un régimen especial. Los códigos CST de ICMS de tres dígitos siguen una lógica específica:

CSTSignificado¿Crédito disponible?Impacto en AP
00Gravado — se aplica la tasa completa de ICMSSíCompra estándar. Extraiga vBC, pICMS, vICMS normalmente.
10Gravado + Sustitución Tributaria (ICMS-ST)Sí (solo ICMS regular)Dos montos de ICMS: regular y ST. Extraiga ambos — el monto de ST no es su crédito.
20Gravado con base de cálculo reducidaSí (proporcional)La base tributable se reduce (p. 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 de ST. Su costo incluye el monto de ST.
40Exento — no se cobra ICMSNoSin valor de ICMS. El total de la línea permanece igual, pero no se genera crédito.
41Exento — no tributableNoSimilar al CST 40. No hay ICMS que extraer ni crédito.
51Diferido — el pago de ICMS se pospone a una etapa posteriorDependeExtraiga vBC y pICMS incluso si vICMS es cero — el diferimiento afecta eventos futuros.
60ICMS ya recaudado por el proveedor (o eslabón anterior de la cadena)NoComún en combustible, energía, telecomunicaciones. El ICMS no es una partida — se pagó aguas arriba.
70Gravado con base reducida + STSí (proporcional)Híbrido: base reducida sobre ICMS regular + monto de ST separado. Ambos deben extraerse.
90Otros — régimen especial no cubierto anteriormenteDependeRevise manualmente. El <infAdic> de la NF-e debe explicar el régimen.

Su 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 de 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 debe investigar.

Validación de IPI, PIS y COFINS

Verificación del IPI: La tasa de IPI se determina por el código NCM del producto. Brasil publica la TIPI (Tabela de Incidência do IPI), una tabla integral de tasas que asigna cada código NCM a una tasa de IPI. Si bien no puede mantener la hoja de cálculo completa de TIPI internamente (contiene miles de entradas y se actualiza periódicamente por la Receita Federal), puede verificar por muestreo los artículos de alto valor: extraiga el NCM, consulte su rango de tasa TIPI y confirme que el campo pIPI se encuentre dentro del rango esperado. El código CST del IPI también es importante — el CST 50 significa que el IPI está exento, mientras que el 00 significa que es gravable.

Verificación de PIS y COFINS: Estas contribuciones federales se aplican bajo el régimen acumulativo o no acumulativo. El régimen se determina por la clasificación fiscal del proveedor y rige tanto la tasa como la disponibilidad de créditos para usted como comprador:

RégimenTasa de PISTasa de COFINSCombinado¿El comprador obtiene créditos?
No acumulativo (Lucro Real)1.65%7.6%9.25%Sí — el comprador puede acreditar PIS y COFINS contra sus propias contribuciones
Acumulativo (Lucro Presumido)0.65%3.0%3.65%No — no se generan créditos de entrada bajo el régimen acumulativo

Si la tasa de PIS en la NF-e es 1.65% y la de COFINS es 7.6%, el proveedor está bajo el régimen no acumulativo y usted puede reclamar créditos de entrada de PIS/COFINS. Si las tasas son 0.65% y 3.0%, no hay créditos disponibles. El CST del proveedor (típicamente 01 = no acumulativo o 02 = acumulativo) confirma el régimen. Extraer y validar estas tasas afecta directamente su posición de impuestos recuperables.

Regla de validación práctica: Para cada NF-e, extraiga la tasa de PIS y la tasa de COFINS a nivel de artículo. Si la tasa combinada es 9.25%, márquela para seguimiento de créditos. Si es 3.65%, confirme el régimen del proveedor y tenga en cuenta que no aplican créditos de PIS/COFINS. Una sola suposición incorrecta de régimen en una factura de BRL 100,000 es BRL 9,250 de créditos perdidos — o BRL 5,600 de créditos reclamados incorrectamente.

Sustitución Tributaria del ICMS (ICMS-ST): El mecanismo que no puedes ignorar

El ICMS-ST (Substituição Tributária) es un mecanismo en el que la autoridad fiscal asigna al primer eslabón de la cadena — normalmente 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.

Comparación de dos columnas titulada ICMS-ST es un costo, no un crédito de entrada, con una insignia de verificación verde para el ICMS regular recuperable (CST 00) y una insignia de cruz ámbar para el ICMS-ST (CST 10 o CST 30) que nunca puede reclamarse.

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 que ya incluye el costo y que fue remitido a SEFAZ por el proveedor aguas arriba. 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 por ST. La NF-e incluye un único monto de ICMS-ST (CST 30 — exento de ICMS regular, se aplica ST). Todo el costo de 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 usa un subgrupo separado: <imposto>/<ICMS>/<ICMSST>/<vICMSST> para el monto de ST y <vBCST> para la base de cálculo de 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 registran un monto combinado, lo que exagera su posición de crédito de ICMS y genera hallazgos de auditoría.

CFOP y NCM: Extracción de los Códigos de Clasificación que Controlan el Cumplimiento

Cada línea de artículo en una NF-e lleva dos códigos que juntos determinan el tratamiento fiscal de ese producto. No son metadatos opcionales — son las entradas para su lógica de determinación fiscal.

Referencia de Código 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 primer dígito indica la dirección y naturaleza de la transacción. Para el procesamiento de NF-e entrante (lado de compra), los códigos CFOP que encontrará con más frecuencia se encuentran en los rangos 1xxx, 2xxx y 3xxx:

Primer DígitoClasificaciónCódigos Entrantes Comunes
1Entrante — dentro del mismo estado (intraestatal)1102 = compra para reventa, 1101 = compra para industrialización, 1116 = compra para uso/consumo
2Entrante — de otro estado (interestatal)2101 = compra para industrialización, 2102 = compra para reventa, 2116 = compra para uso/consumo
3Entrante — del extranjero (importación)3101 = importación para industrialización, 3102 = importación para reventa, 3126 = importación para uso/consumo
5Saliente (venta) — rara vez aparece en NF-e de compra—
6Saliente interestatal — relevante solo si usted emite NF-e—
7Saliente al extranjero — operaciones de exportación—

Por qué el CFOP es importante para la extracción: el código CFOP determina qué reglas de ICMS se aplican a la transacción. Un CFOP que comienza con 1 (intraestatal) significa que la tasa de ICMS debe ser la tasa interna del estado del proveedor (17-22%), no una tasa interestatal. Un CFOP que comienza con 2 (interestatal) significa que la tasa debe coincidir con la tabla de tasas interestatales anterior. Si el CFOP y la tasa de ICMS son inconsistentes — por ejemplo, CFOP 1102 (intraestatal) con tasa de ICMS 12% (que es una tasa interestatal) — la factura tiene un desajuste estructural que necesita corrección. Su flujo de trabajo de extracción debería marcar esto automáticamente.

Código NCM: La clasificación de productos que determina el IPI y los aranceles de importación

El 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 (donde los primeros 6 dígitos son el código SA). El código NCM determina:

  • Tasa de IPI: Mapeada mediante la tabla TIPI. Los productos con NCM que comienza en capítulos específicos enfrentan tasas de IPI más altas o más bajas.
  • Aplicabilidad de ICMS-ST: Ciertos capítulos del NCM están sujetos a protocolos obligatorios de ICMS-ST (convênios) entre estados.
  • Arancel de importación (II) para compras internacionales.
  • Tasa de impuesto sustituto (p. ej., cálculos simplificados de ICMS-ST según el protocolo CONFAZ).

Para la extracción, el NCM siempre debe capturarse como un campo de texto que conserve los ceros iniciales. Nunca lo convierta a un número: el NCM 8471.30.00 (equipo de cómputo) perdería su estructura inicial si se tratara numéricamente. El NCM también sirve como clave principal para consultar las tasas de IPI si su flujo de trabajo incluye validación automatizada de tasas.

Manejo 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, porque pueden cambiar los datos que ya extrajo.

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 se hayan movido físicamente. El evento de cancelación se registra ante la SEFAZ y se vincula a la misma clave de acceso. Después de 24 horas, la cancelación ya no es posible: el emisor debe solicitar una cancelación especial a través de la autoridad tributaria o emitir una nota de crédito (NF-e de devolução). 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 programáticamente, incluya un paso de verificación de estado que consulte el servicio web ConsNFeDest de la SEFAZ para obtener la lista de estado de las 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 (p. ej., corregir la descripción del producto, corregir 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 debe, al procesar documentos NF-e, 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 de vencimiento del XML original, está pagando según un calendario incorrecto.

Modos de contingencia. Si la SEFAZ no está disponible, los proveedores pueden emitir NF-e en modo de 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 en formulario), 6 = SVC (Contingencia Virtual de SEFAZ: un servidor de autorización de respaldo). En modo de contingencia, la NF-e puede carecer del protocolo completo de autorización de 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 debe recuperar el XML final y reextraer si algún campo cambió.

Manifestação do Destinatário. Este no es un evento del proveedor, sino una obligación del comprador. Según la ley brasileña, el comprador de mercancías debe registrar su respuesta al evento en el portal de SEFAZ dentro de plazos específicos: confirmar la recepción dentro de los 10 días posteriores a la emisión, y aceptar o rechazar la transacción. Este proceso se denomina manifestação do destinatário y se gestiona a través de la plataforma DF-e de SEFAZ. Si bien la manifestação es un paso de cumplimiento separado de la extracción, su flujo de trabajo 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 la emisión futura de NF-e por parte de ese proveedor.

Para un análisis más profundo de estos tipos de eventos y cómo afectan las operaciones de cuentas por pagar, 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 el detalle de impuestos por línea o solo los totales del encabezado.

MétodoCómo funcionaCampos extraídosVolumen idealLimitación clave
Ingreso manual de DANFEEl empleado lee el DANFE impreso y lo escribe en Excel o ERP~20 campos de encabezado, sin detalle de impuestos por línea< 10 por mesOmite el 90% de los datos, incluidos todos los desgloses de impuestos; alta tasa de error
Scripting XML (Python, Power Query)Un script personalizado analiza el XML de NF-e y extrae los campos a CSV/ExcelTodos los campos de encabezado y por línea; requiere un mapeo XPath predefinido10–100 por mesRequiere habilidades de programación; se rompe cuando el esquema se actualiza (doble esquema 2026); sin validación de impuestos integrada
Módulo de localización ERP (SAP/Oracle/Dynamics)Módulo ERP específico para Brasil que recibe el XML de NF-e y contabiliza automáticamente en el libro mayorConjunto completo de campos, mapeo de cuentas de impuestos, integración con SPED100+ por mesCosto elevado (licencias + implementación); solo funciona si tiene ese ERP; mapeo de esquema rígido
Extracción basada en IACargue PDF de DANFE o XML de NF-e; la IA analiza y mapea a columnas definidas por el usuarioTodos los campos visibles del DANFE desde PDF; campos completos desde XML10–500+ por mesEl análisis de XML requiere que la herramienta admita entrada de datos estructurados (no solo PDF 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 combinación — 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 admite ambas: puede cargar archivos XML de NF-e junto con PDF de DANFE en el mismo lote, definir una única 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 recorrido práctico del 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 de 2026

Línea de tiempo de tres nodos titulada El esquema NF-e contiene dos sistemas tributarios hasta 2033, que muestra los campos de prueba de CBS 2026 al 0,9 %, CBS activa en 2027 con PIS y COFINS eliminados, y CBS reemplazando completamente a PIS en 2033.

La Enmienda Constitucional 132/2023 de Brasil y la Ley Complementaria 214/2025 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 está analizando hoy contendrá tanto los campos de impuestos antiguos como los 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 permanece: La estructura general del XML (<ide>, <emit>, <det>, <total>) sigue siendo la misma. Los campos de encabezado, las cantidades de los artículos, los códigos NCM y los códigos CFOP no se ven afectados.

Lo que cambia: Se agregan nuevos grupos de elementos XML a la sección <imposto> de cada artículo y al grupo de resumen <total>. Los nuevos grupos contienen los cálculos de impuestos CBS (federal) e IBS (estatal/municipal) junto con 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 la ExtracciónCronología 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 a PIS por completo para 2033.2026: campos de prueba de CBS (tasa 0.9%). 2027: CBS activo, PIS abolido.
COFINS (7.6% / 3.0%)CBS (federal, ~8.8%)Igual que PIS: los campos de COFINS coexisten con los de CBS. La extracción combinada de PIS+COFINS debe contemplar la tasa CBS fusionada.2027: COFINS abolido, 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 artículo. La extracción debe capturar ambas bases imponibles: pueden diferir.2026: campos de prueba de IBS (tasa 0.1%). 2029-2032: IBS se implementa gradualmente por estado, reemplazando a ICMS de forma incremental.
IPI (0-330% según NCM)IS (Impuesto Selectivo, variable)IS reemplaza a 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 para 2033.

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

1

Audite su mapa de campos actual

Revise su plantilla de extracción e identifique cada campo que actualmente se asigna 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). Incluso si aún no utiliza los nuevos campos, el espacio del esquema debe estar mapeado para que las columnas de salida de su extracción existan y estén listas para recibir datos cuando los campos CBS/IBS se completen.

2

Pruebe con documentos NF-e de muestra con esquema dual

Solicite XML de NF-e de muestra a sus proveedores que ya incluyan los nuevos campos CBS e IBS (todas las NF-e emitidas a partir del 1 de agosto de 2026 incluirán ambos). Ejecútelos a través de 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

Decida su estrategia de doble campo

Durante los próximos 7-8 años, sus datos extraídos incluirán tanto los campos de impuestos heredados como los 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 introducen gradualmente y otras se eliminan 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 los espacios de nombres XML al extraer campos de NF-e?

Sí. El XML de NF-e utiliza un espacio de nombres predeterminado declarado en el elemento <nfeProc> (típicamente xmlns="http://www.portalfiscal.inf.br/nfe"). Cualquier consulta XPath debe registrar este espacio de nombres (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 los espacios de nombres automáticamente en la mayoría de los casos. Si su herramienta de extracción requiere un registro explícito del espacio de nombres, asegúrese de que use el URI correcto; una discrepancia producirá silenciosamente conjuntos de resultados vacíos.

¿Debo sumar los montos de impuestos de las líneas de detalle y compararlos con los totales del encabezado?

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

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

No. SPED (Sistema Público de Escrituración Digital) es el sistema de Brasil para presentaciones de contabilidad digital — EFD-ICMS/IPI para impuestos estatales y EFD-Contribuciones para contribuciones federales — que requieren que los datos se formateen en diseños específicos de SPED y se envíen 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, PIS, COFINS, CFOP, NCM, CST a nivel de línea) son los mismos datos que alimentan las presentaciones de SPED. Si su flujo de trabajo de extracción captura correctamente el detalle de impuestos a nivel de línea, su equipo de contabilidad brasileño puede usar esos datos para completar los registros de SPED requeridos en lugar de volver a capturarlos de los documentos fuente. El mapeo de los campos de NF-e a las posiciones del diseño de SPED es un paso de transformación separado que algunos módulos de localización de ERP manejan automáticamente.

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

Esto es común en organizaciones más 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 resultado de extracción por el CNPJ del destinatario (<dest>/<CNPJ>) y mantenga asignaciones de GL separadas por entidad. La validación de la tasa de ICMS también difiere por entidad: los bienes enviados a su CNPJ en São Paulo enfrentan tasas diferentes que los enviados a su CNPJ en Bahía, incluso del mismo proveedor. Para más información sobre cómo manejar la complejidad estado por estado en Brasil, consulte nuestra guía para la 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 anualmente, pero a veces con ajustes a mitad de año mediante 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 debidos. Si realiza análisis retrospectivos o ajustes de SPED, use el NCM registrado en el documento original, no la lista actual de NCM.

¿Qué sucede 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 trabajo de extracción debe manejar estos casos 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 esenciales. Para campos críticos (clave de acceso, CNPJ, totales de partidas), un valor faltante debe provocar el rechazo de esa NF-e del lote con un mensaje de error claro. Un informe resumido de validación es esencial: registre cada NF-e que tuvo campos faltantes o anómalos para que su equipo pueda investigar antes de contabilizar en el GL.

¿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 alícuota interestatal pagada en el origen. El comprador debe pagar la diferencia de alícuota a su propio estado. En la NF-e, el DIFAL se representa mediante el subgrupo <ICMSPart> bajo <imposto>/<ICMS>. Este subgrupo contiene vBC (la base de cálculo), pICMS (la alícuota interestatal ya aplicada), pICMSUf (la alícuota interna del estado de destino) y vICMS (el monto del DIFAL = diferencia entre las dos alícuotas sobre la base). Debe extraer el monto del DIFAL por separado y manejarlo 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 de los productos?

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 comprensión 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 manejar 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 PDF de DANFE (documento visual) en el mismo lote. Cuando sube un XML, la herramienta lee los elementos estructurados directamente — sin necesidad de OCR — y los asigna a su plantilla de columnas. Cuando sube un PDF de DANFE, la IA lee el contenido visual y extrae los campos visibles. La ventaja clave de una plataforma única para ambos es la consistencia: usted define una plantilla de columnas para "Clave de Acceso NF-e", "Monto ICMS", "Código CFOP", y la herramienta las completa desde el documento fuente que reciba. Esto elimina la necesidad de mantener flujos de trabajo separados para proveedores basados en XML vs. basados en DANFE — un punto común de fragmentación en las operaciones de AP brasileñas.

¿Necesito archivar el resultado 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 final del ejercicio fiscal en el que ocurrió la transacción. El resultado de la extracción (su hoja de cálculo o registros de ERP) no reemplaza al XML. Sin embargo, mantener un resultado de extracción estructurado junto con el archivo XML sin procesar 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 demostrar que los documentos existen y fueron autorizados correctamente) y sus registros contables (para mostrar cómo se procesaron los datos). Un flujo de trabajo de extracción que archive automáticamente tanto el XML de origen como el resultado extraído en una estructura vinculada — con la clave de acceso como clave de unión — le ahorrará tiempo significativo 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.

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 a tus 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]