Para leer un CFDI 4.0 en C#, usa las API XML de .NET, consulta los elementos con el namespace correcto y comprueba cada atributo antes de convertirlo. Si necesitas verificar la estructura, valida el documento contra el conjunto de esquemas aplicable. Ninguno de esos pasos, por sí solo, confirma que el comprobante sea fiscalmente válido ni revela su estado ante el SAT.
Qué significa “parsear” un CFDI 4.0
Un CFDI 4.0 es un documento XML definido técnicamente por el Anexo 20. El esquema describe elementos, atributos y restricciones de formato; no convierte la lectura del archivo en una consulta fiscal. La página oficial del SAT sobre el Formato factura (Anexo 20) es el punto de referencia para la documentación oficial.
As an Amazon Associate I earn from qualifying purchases.
Conviene separar tres tareas que a menudo se confunden:
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →- Parseo: abrir el XML y extraer los datos que necesita la aplicación.
- Validación estructural: comprobar el documento contra los esquemas aplicables, además de atender las reglas que correspondan.
- Consulta fiscal: usar los servicios pertinentes del SAT para consultar información o estado del comprobante. El SAT describe sus servicios especializados de validación de comprobantes.
Un XML que se puede leer no necesariamente cumple el esquema, y un XML que cumple un XSD no acredita por sí mismo todas las reglas de negocio, catálogos, complementos o el estado de cancelación.
#1 Best Overall
Leer el XML sin depender del prefijo
Los prefijos XML son alias: dos documentos pueden usar prefijos distintos para el mismo namespace. Por eso, no busques una etiqueta suponiendo que se llamará literalmente cfdi:Comprobante. Asocia el namespace CFDI 4.0, http://www.sat.gob.mx/cfd/4, con un prefijo de consulta y usa ese nombre calificado al buscar elementos.
Este ejemplo con LINQ to XML muestra el patrón para cargar un archivo y leer emisor, receptor y conceptos. Es un ejemplo ilustrativo, no código probado contra un conjunto de CFDI ni una integración validada en producción:
Rank #2
using System.Globalization;
using System.Xml;
using System.Xml.Linq;
var settings = new XmlReaderSettings
{
DtdProcessing = DtdProcessing.Prohibit,
XmlResolver = null
};
XDocument documento;
using (var reader = XmlReader.Create(rutaDelArchivo, settings))
{
documento = XDocument.Load(reader);
}
XNamespace cfdi = "http://www.sat.gob.mx/cfd/4";
XNamespace tfd = "http://www.sat.gob.mx/TimbreFiscalDigital";
var comprobante = documento.Root;
if (comprobante is null || comprobante.Name != cfdi + "Comprobante")
throw new InvalidDataException("El elemento raíz no es Comprobante CFDI 4.0.");
var emisor = comprobante.Element(cfdi + "Emisor");
var receptor = comprobante.Element(cfdi + "Receptor");
var conceptos = comprobante.Element(cfdi + "Conceptos")?
.Elements(cfdi + "Concepto") ?? Enumerable.Empty<XElement>();
string? rfcEmisor = (string?)emisor?.Attribute("Rfc");
string? rfcReceptor = (string?)receptor?.Attribute("Rfc");
if (decimal.TryParse(
(string?)comprobante.Attribute("Total"),
NumberStyles.Number,
CultureInfo.InvariantCulture,
out var total))
{
// Usar total con la lógica de la aplicación.
}
var uuid = documento.Descendants(tfd + "TimbreFiscalDigital")
.Select(e => (string?)e.Attribute("UUID"))
.FirstOrDefault();
El nombre de los atributos XML distingue mayúsculas y minúsculas: por ejemplo, en el XML se consulta Rfc, no RFC. Ajusta el tratamiento de errores y los tipos de retorno a tu aplicación; no conviertas silenciosamente un valor ausente o inválido en cero o en una cadena vacía.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteTratar como opcionales los datos que pueden faltar
No todos los CFDI contienen los mismos nodos. Los complementos, en particular, dependen del comprobante y del uso que se le dé. El timbre fiscal digital puede encontrarse bajo el nodo de complementos con su propio namespace, pero el código debe tolerar que no haya un timbre o complemento en el XML leído y reportar esa ausencia según el caso de uso.
Los atributos también pueden ser obligatorios, opcionales o condicionales. Consulta cada atributo con comprobaciones explícitas y valida antes de convertir. Para números, especifica una cultura como InvariantCulture en lugar de depender de la configuración regional del servidor; para fechas, usa un formato y una estrategia de análisis acordes con el valor XML esperado. Distingue entre “falta el dato”, “está vacío” y “no se pudo convertir”: son situaciones diferentes y deben producir resultados o errores distintos.
El XSD CFDI 4.0 consultado describe RFC, nombre y código postal fiscal del receptor como requeridos, y limita DomicilioFiscalReceptor a cinco dígitos. El esquema está alojado en GitHub, no en el sitio del SAT; úsalo como referencia técnica y coteja la versión aplicable con la documentación oficial antes de depender de sus restricciones: XSD CFDI 4.0.
Rank #4
Validar la estructura contra los esquemas aplicables
Si tu aplicación necesita detectar incumplimientos estructurales, valida el XML con el conjunto de esquemas pertinente, no solo con una lectura manual de campos. El XSD puede ayudar a comprobar tipos, atributos requeridos, patrones y longitudes, pero no debe tratarse como garantía total de cumplimiento fiscal: también pueden importar reglas de negocio, catálogos, complementos y versiones vigentes.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallEl Anexo 20 y sus recursos relacionados —como XSD, XSLT, guías de llenado y catálogos— pueden actualizarse. Mantén identificada la versión que usa tu proceso y consulta la documentación oficial vigente del SAT. El inventario de recursos técnicos de mcp-cfdi-mx ayuda a reconocer las clases de archivos involucradas, pero no sustituye las publicaciones oficiales.
Best Value
Una validación XSD responde si el documento se ajusta a las reglas estructurales codificadas en los esquemas usados. No confirma que el comprobante aparezca como vigente, que no esté cancelado ni que haya superado todos los controles fiscales aplicables.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Consultar el estado fiscal por separado
Cuando la aplicación necesita conocer el estado del comprobante, integra el servicio SAT adecuado y trata su respuesta como una operación distinta de la lectura local. La página de servicios especializados de validación documenta el ámbito de esos servicios. Revisa allí los requisitos y el mecanismo vigentes para la consulta que necesitas; no infieras el estado fiscal a partir de que el XML se abra o pase un XSD.
Elegir entre API nativa y biblioteca externa
Las API XML de .NET permiten controlar directamente la carga, la navegación por namespaces y las conversiones. Una biblioteca externa puede ser útil si su alcance coincide con el tuyo, pero verifica específicamente que admita lectura y parseo de CFDI 4.0: que una biblioteca genere comprobantes no demuestra que pueda leerlos.
Por ejemplo, el repositorio EmiteCfdi 4.0 se describe como una biblioteca C# para generación. Esa descripción no acredita capacidades de parseo, mantenimiento actual, licencia adecuada ni compatibilidad con tu versión de .NET. Revisa el código, la licencia, las versiones y las funciones documentadas antes de adoptarla.
Preparar pruebas útiles
Prueba cada capa por separado para que un fallo de lectura no se confunda con un fallo de esquema o una respuesta de consulta fiscal. Usa XML representativos y cotejados con la documentación aplicable; no asumas que un único archivo cubre las variaciones de nodos y atributos.
Quick Recap
- Comprueba documentos con prefijos XML distintos para confirmar que las consultas dependen del namespace, no del alias.
- Incluye casos con atributos ausentes, valores vacíos y valores que no se pueden convertir.
- Prueba conceptos múltiples y la ausencia de nodos o complementos que no sean necesarios en todos los comprobantes.
- Verifica de forma independiente el resultado del parseo, el de la validación estructural y el de la consulta al servicio SAT.
- Para procesamiento por lotes, registra errores por archivo y conserva la posibilidad de volver a procesar los documentos; una lectura fallida no debe confundirse con un rechazo fiscal.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




