{
  "id": 10291798,
  "title": "Cómo parsear un CFDI 4.0 en C# sin sufrir (y sin tropezar con los detalles del SAT)",
  "url": "https://urgent.news/2026/09/27/como-parsear-un-cfdi-4-0-en-c-sin-sufrir-y-sin-tropezar-con-los",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-27T20:57:45.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/mattgatexd/como-parsear-un-cfdi-40-en-c-sin-sufrir-y-sin-tropezar-con-los-detalles-del-sat-3pkl"
  },
  "original_language": "es",
  "account": "Para procesar un CFDI 4.0 en C# sin problemas, es necesario seguir una serie de pasos cuidadosos. Primero, cargue el XML de forma segura utilizando XmlReaderSettings con DtdProcessing seteado a Prohibit, para evitar ataques de inclusión de archivos externos o bombas de entidades. A continuación, detecte la versión del CFDI antes de leer nada, ya que los namespaces varían entre versiones. La versión 4.0 es la única válida desde abril de 2023, pero las versiones 3.3 siguen circulando. Defina las constantes XNamespace cfdi40 y cfdi33 para manejar ambas versiones. Luego, obtenga el nodo raíz del XML y verifique que sea un CFDI 3.3 o 4.0. Finalmente, extraiga los datos básicos como RFC del emisor y receptor, y el total de la factura utilizando decimal.Parse con CultureInfo.InvariantCulture para evitar problemas relacionados con la cultura del servidor.",
  "summary": "Si trabajas con facturación electrónica en México, tarde o temprano te toca leer un XML de CFDI: para conciliar pagos, cargar facturas recibidas en un ERP o mostrarle al usuario qué le facturaron. Parece fácil. Es un XML, ¿no? Luego te topas con los namespaces, con el timbre metido en un complemento, con facturas 3.3 que siguen circulando y con impuestos que a veces no traen importe. Aquí va cómo…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}