Descargar los XML del SAT de una manera más sencilla

Descargar los XML del SAT no es una tarea sencilla, puede resultar trivial cuando se trata de una o dos facturas, pero cuando se quiere descargar un número importante se puede convertir en una pesadilla.

En el 2015 es obligación de los contribuyentes tener una copia de las facturas digitales en formato XML tanto de las facturas que emite como de las que recibe para que tengan validez fiscal.

I.2.23.3.2. Para los efectos del artículo 29, fracción V, tercer párrafo, del CFF, los contribuyentes que emitan y reciban CFDI, deberán almacenarlos en medios magnéticos, ópticos o de cualquier otra tecnología, en su formato electrónico XML.

Se supone que los proveedores deben mandar los archivos XML por correo electrónico. La factura impresa en si no tiene ningún valor. Algunos negocios cuando dan de alta los datos del cliente no incluyen en la captura una dirección de correo electrónico o el cliente no tiene una y se va contento con una representación impresa. Como sea la responsabilidad de guardar esos archivos recae en el contribuyente.

El método tradicional dicta que te puedes conectar al sitio del SAT, ingresar con el RFC y una contraseña, consultar y descargar los XML. Pero el sitio es algo caprichoso y hacer una descarga masiva puede ser una tarea que consuma mucho tiempo.

ADMIN CFDI es la solución

Afortunadamente me encontré con Admin CFDI de los buenos amigos de Factura Libre.

Admin CFDI es una herramienta escrita en Python que automatiza algunas tareas que nos tomaría mucho más tiempo hacerlas de modo manual, como por ejemplo la descarga de los archivos XML.

Su instalación no es tan sencilla. En este caso me voy a centrar en los usuarios que usan Windows, aunque en teoría no debería de tener problemas para funcionar en Linux.

Descargar Admin CFDI

Para descargar el programa hay que visitar el sitio facturalibre.net/servicios en la sección que dice Admin CFDI con descarga SAT, es un pequeño archivo en formato 7-zip que pueden descomprimir con winrar o con el mismo programa 7-zip.

Este lo pueden descomprimir en la carpeta de su preferencia.

Descargar Python

Python es el lenguaje de programación necesario para poder ejecutar Admin CFDI, de hecho, el archivo que descargamos anteriormente contiene el código fuente del programa ¡Genial!

En la página de descargas elegí la versión recomendada Python 3.4 y misma que instalé.

Una recomendación, al momento de hacerlo hagan una instalación personalizada y marquen la opción que dice Add python.exe to Path . De esa forma no tendrán problema para ejecutar el código del programa, con hacer doble clic en el archivo será suficiente.

Extensiones para Windows 32 de Python

También van a necesitar estas extensiones, mismas que pueden descargar desde su sitio en SourceForge Python for Windows Extensions. Hay muchas opciones, así que elegí las que corresponden a la versión que instalé, o sea la versión 3.4 de Python.

Firefox

El programa requiere Firefox como navegador, así que si no lo tienes instalado es necesario descargarlo.

Más programas

Por último es necesario instalar unos complementos para python que usa Admin CFDI. En windows se abre un Símbolo de sistema y se teclea lo siguiente:

pip install selenium pygubu

Selenium es necesario porque es el programa que se encarga de hacer las interacciones con Firefox (sabrán a que me refiero cuando lo vean funcionando) y Pygubu hace posible la interfaz gráfica del programa.

Instalando selenium y pygubu
Instalando selenium y pygubu

Para descargar los XML.

Para ejecutar el programa pueden hacer doble clic en el archivo admincfdi.py (pueden hacer un acceso directo al escritorio) y verán una pantalla muy similar a esta.

Ahora solo tienen que rellenar algunos campos. Razón Social es un alias para identificar los demás datos.

RFC y Clave CIEC son los datos de ingreso a la página del SAT que usan normalmente para descargar los XML.

Descargar en es la carpeta local en donde se van a descargar los archivos XML.

No se les olvide presionar el botón de Guardar para que no tengan que teclear estos datos una y otra vez.

Lo demás son los parámetros de la consulta, pueden descargar un solo archivos usando el Folio Fiscal (UUID) o meses completos si así lo desean.

El programa Admin CFDI listo para entrar en acción.
El programa Admin CFDI listo para entrar en acción.

Por favor no se asusten si ven que el equipo se empieza a mover solo, no es que le estén haciendo un “control remoto” o la compu esta “embrujada”, es simplemente la automatización que hace Admin CFDI y que nos permite ahorrar mucho tiempo.

Otro detalle que he visto con frecuencia es que si la página del SAT les dice que el sistema está lento se va a cerrar, a veces no tengo que esperar mucho, inmediatamente lo vuelvo a intentar y funciona perfectamente.

Otras funciones

Admin CFDI no solo sirve para descargar los archivos XML, también puede revisar cuentas de correo electrónico en busca de estos archivos.

También tiene una función para organizar los XML en varias carpetas en función de quien emite la factura, mes y año, algo muy útil cuando el número de archivos empieza a crecer.

Incluye un validador, pero esa opción todavía la estoy revisando.

Quiero agradecer al buen amigo Mauricio Baeza por compartir su trabajo, si así hiciera las cosas el SAT todo sería mucho más sencillo en este país.

Referencias y descargas

61 comentarios en “Descargar los XML del SAT de una manera más sencilla”

  1. Tuve mal suerte en el intento, al momento de querer instalar selenium me aparece el siguiente error:

    https://drive.google.com/file/d/0B21sinOjRFfXb3FPWWhsVzdPdHc/view?usp=sharing

    Si veo el archivo del registro al cual hace referencia encuentro lo siguiente:

    https://drive.google.com/file/d/0B21sinOjRFfXYVJKOXlMVXhSVnc/view?usp=sharing

    Y si abro la URL encuentro lo siguiente:

    https://drive.google.com/file/d/0B21sinOjRFfXeWxuUzdRX3RqUXc/view?usp=sharing

    Sabras de que otra manera lo puedo instalar?

    SALUDOS.

    Responder
  2. Hola
    No sabes si hay algo parecido para que jale los xml para generar .txt de la diot? Lo que he encontrado han sido hojas de Excel pero hay que meter todo a manita.

    Responder
    • Nooo , ¿pero que has encontrado? para ser sincero no me he topado con lo que es el DIOT y no estoy muy seguro de a que te refieres.

      Pero sería interesante echarle un vistazo 🙂

      Responder
    • Tengo una herramienta propia que lo hace, pero en mi opinion solo debes procesar los xml pagados, el iva es por efectivo… Yo los proceso importando toda la informacion de los xml al arcchivo de movimientos contables y de ahi me genera e layout.txt que es el archivo para subir automaticamente a la aplicacion diot del sat. Te insisto procesa solo los pagados saludos

      Responder
  3. Existe un error en:
    pip install seleniumn pygubu

    debería ser (al menos asi me funciono):
    pip install selenium pygubu

    sobra la “n” en selenium

    Una ayudita para poder hacer que se organizen-renombren los XML con una plantilla asi, por ejemplo:
    {rfc_emisor}-{fecha}-{folio}_{uuid}

    Responder
    • Es cierto Mr E !!!!

      No me había dado cuenta de ese error, ahorita mismo lo corrijo.

      Con respecto a la organización de los XML puedes ir al sitio en GitHub del proyecto y solicitar esta opción, o si tienes el conocimiento suficiente programarla tu mismo, a fin de cuentas, ahí esta el código fuente 🙂

      Saludos !!!

      Responder
  4. La verdad tengo varios dias leyendo el código (a ratos) y no encuentro aún donde y como obtiene los campos para renombrar los XML, y como quisiera tener alguna plantilla (ods y json) para generar el pdf de los archivos ya organizados.

    Por cierto, en python 3.2 el archivo pyutil.py necesita unas modificaciones para funcionar:

    En la lineas 1371 y
    1371: data += u’\n\nAlumno: %s\nCURP: %s’ % (
    1373: data += u’\nAcuerdo de incorporación ante la SEP %s %s’ % (
    cambiar por:
    1371: data += ‘\n\nAlumno: %s\nCURP: %s’ % (
    1373: data += ‘\nAcuerdo de incorporación ante la SEP %s %s’ % (

    En la linea 28

    Comentar el siguiente import

    28: #from subprocess import DEVNULL

    Reemplazar por

    from subprocess import Popen, PIPE, STDOUT
    try:
    from subprocess import DEVNULL # py3k
    except ImportError:
    import os

    DEVNULL = open(os.devnull, 'wb')
    

    A la primera oportunidad escribiré estas notas en github.

    Saludos!

    Responder
  5. Hola Linuxman yo intenté instalar esta aplicación en Debian y por que traae python 2 en lugar del 3 me hice bolas con las librerias y lo dejé, aunque seguro volveré a intentarlo. Se ve muy buena.

    Responder
    • Hola Hydrosiii,

      No se como lo maneja Debian, pero en Manjaro están disponibles las dos opciones, python y python3. Aunque lo instalé en windows para ayudar al departamento de contabilidad también voy a intentar echarlo andar en Linux.

      Saludos !!!

      Responder
  6. Python2 debe morir ya!!… solo funciona con Python 3.2+

    Gracias a mis amigos de Python Cabal Guadalajara, le estamos dando una buena revisada y mejora de código, pero… todo se debe de ver en GitHub…

    Responder
  7. No he logrado ponerlo a funcionar, lleve cada paso a cabo, instalé phyton 3.4 con las extensiones, instalé el selenium, pygubu y por último Firefox, al ejecutar admincfdi no hace nada, no muestra el programa.

    Saludos.

    Responder
  8. Hellooow BIGS,

    Creo que solo te falta activar la opción que dice Add python.exe to Path (lo menciono en el artículo).

    Vuelve a instalar Python de forma personalizada y activa la opción.

    add python.exe to path

    Saludos.

    Responder
  9. Al intentar ejecutar desde el command, aparece lo siguiente:
    traceback (most recent call last):
    file admincfdi line 17 in
    from pyutil import útil file pyutil line 31
    import pyqrcode
    importerror: no module named ‘pyqrcode’

    Responder
    • Claro Hbautista,

      Instalé la versión 3.4.2 (el archivo se llama python-3.4.2.msi) que es la que puedes ver en las imágenes de los comentarios y claro que incluye pip… mmm marcaste la opción que dice Add python.exe to Path ??

      Responder
  10. Pues si que es todo un caso…mira te mando mi screenshot y la ubicación del archivo pip.exe que en mi caso es C:\Python34\Scritps ¿Tu también los tienes? si es el caso.. ¿Has intentado ejecutar pip desde su carpeta?

    Ubicación de PIP

    Saludos !!!

    Responder
  11. No, ni siquiera el directorio de scripts tengo.

    Recuerdo que cuando instalé Python 3.4.3 y luego el pywing, si tenía ese directorio, pero no estaba pip.

    Misterios de la vida

    Saludos

    Responder
  12. Hola H Bautista, me preguntaba como lo hiciste funcionar en Debian Linux,
    ¿Usas la versión wheezy?, lo digo por que está tiene 3.2 en repos.
    ¿Sabes si funciona con esta versión, o creaste un entorno virtual ?

    Responder
  13. No pude echarlo a andar en un Win7 que tengo, para empezar no me instala ni PIP, si lo instalo manualmente, no me deja instalar selenium ni pygubu.

    Estoy usando Debian Testing, pero creo que en la página del proyecto leí que funciona desde Python 3.2.

    En un rato hago un post de cómo le hice en Debian, porque hay que instalar algunos paquetes extra.

    Saludos

    Responder
  14. Yo tengo win 7 64 bits, instalé python-3.4.3.msi, adicioné el Add python.exe to Path, instalé las librerías pywin32-219.win32-py3.4.exe, y bajé la última versión de admincfdi de https://github.com/LinuxCabal/admin-cfdi/archive/master.zip, posteriormente descargue el Firefox y por último instalé desde c:\phyton34\scripts\pip install selenium pygubu. y sin problema pude ejecutar la aplicación. Lo único que he usado es el módulo de Descarga masiva y la organización de documentos, pero me interesa que funcione el modulo de pdf para tenerlo todo integrado, sino mi otra opción va ser hacer el código para generarlos por mi cuenta; pero para que inventarse el hilo negro.

    Saludos.

    Responder
  15. Pues fíjate que puedes hacer pruebas descargando la plantilla que viene en el sitio, factura.ods, y hacer alguna prueba.

    Necesitas “dar de alta” el usuario para saber en dónde está el directorio con el(os) xml(s).

    Y si todo resulta bien, entonces modificas esa plantilla con los datos que tu necesites.

    Ojo, necesitas tener instalado LibreOffice para poder generar dichas facturas.

    Saludos

    Responder
  16. Y es algo que no me explico, porque hasta donde se, deberías de tener todo instalado y funcionando. Busqué un poco sobre el tema de instalar PIP, pero no puedo confirmar que solucionen tu problema porque no tengo forma de reproducirlo…

    https://stackoverflow.com/questions/4750806/how-to-install-pip-on-windows

    Me llama la atención un script que se llama get-pip.py y lo encontré en este otro sitio: http://docs.python-guide.org/en/latest/starting/install/win/

    Responder
  17. Me gustaría que temas avanzados relacionados con el programa lo hicieran directamente en el sitio de GitHub del proyecto. A mi me ayudaron con el tema de los reportes y con algunas inquietudes sobre el desempeño (al final resultó que era un problema del SAT).

    Saludos y feliz inicio de semana.

    Responder
  18. Por si a alguien le interesa , encontré en internet una aplicación con el cual podrás realizar la descarga masiva, directamente de los servidores del SAT, de los comprobantes que emites o recibes, a demás que podrás realizar la validación detallada de los archivos XML de comprobantes fiscales digitales (facturas, recibos de nómina, etc.) y también de los archivos correspondientes a la contabilidad electrónica. Hasta el momento me ha funcionado sin problema http://www.facturando.mx/productos/validador-factura-electronica/
    Saludos

    Responder
    • Gracias Rodolfo.. ¿Es software libre?

      Bueno vistando la página ya vi que no lo es. Caray 82 MB de descarga !!! es un validador bastante pesadito, pero gracias por el dato.

      Saludos !!!

      Responder
  19. Que tal Linuxman, haz visto si el admincfdi tenga algún problema limitando la descarga de XML, hice la prueba con una razón social, donde tenia mas de 500 cfdi vigentes por descargar, y solo descago al 489.

    Saludos

    Responder
    • Hola BIGS, Si he tenido uno que otro problemilla al descargar una gran cantidad de archivos del SAT y te puedo decir que en todas las ocasiones fue problema de la página.

      Incluso llegue a pensar que sería más sencillo que la misma página ofreciera un archivo .zip con todos los comprobantes de la consulta, pero bueno, ya sabes, soñar no cuesta nada.

      ¿Luego dónde quedaría la emoción?

      Responder
  20. Que tal Linuxman, comparé una licencia original para descarga de XML del portal, y si existen mas de 500 cfdi los dscarga por completo, lo que admin cfdi lo hace por menos.

    Saludos.

    Responder
  21. Saludos
    Estoy intentando instalar en w7 64 y tengo este error
    Microsoft Windows [Versión 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

    C:\Users\Dataplus>cd C:\Python34\AdminCFDI_v0.2.2

    C:\Python34\AdminCFDI_v0.2.2>pythonw admincfdi.py

    C:\Python34\AdminCFDI_v0.2.2>pythonw admincfdi.py

    C:\Python34\AdminCFDI_v0.2.2>pythonw admincfdi.py

    C:\Python34\AdminCFDI_v0.2.2>pythonw admincfdi.py

    C:\Python34\AdminCFDI_v0.2.2>pythonw admincfdi.py

    C:\Python34\AdminCFDI_v0.2.2>pythonw admincfdi.py

    C:\Python34\AdminCFDI_v0.2.2>admincfdi.py
    Traceback (most recent call last):
    File “C:\Python34\AdminCFDI_v0.2.2\admincfdi.py”, line 17, in
    from pyutil import Util
    File “C:\Python34\AdminCFDI_v0.2.2\pyutil.py”, line 47, in
    from win32com.client import Dispatch
    File “C:\Python34\lib\site-packages\win32com\__init__.py”, line 5, in

    import win32api, sys, os
    

    ImportError: DLL load failed: %1 no es una aplicación Win32 válida.

    C:\Python34\AdminCFDI_v0.2.2>admincfdi.py
    Traceback (most recent call last):
    File “C:\Python34\AdminCFDI_v0.2.2\admincfdi.py”, line 17, in
    from pyutil import Util
    File “C:\Python34\AdminCFDI_v0.2.2\pyutil.py”, line 47, in
    from win32com.client import Dispatch
    File “C:\Python34\lib\site-packages\win32com\__init__.py”, line 5, in

    import win32api, sys, os
    

    ImportError: DLL load failed: %1 no es una aplicación Win32 válida.

    C:\Python34\AdminCFDI_v0.2.2>pip install selenium pygubu
    You are using pip version 6.0.8, however version 7.1.2 is available.
    You should consider upgrading via the ‘pip install –upgrade pip’ command.
    Requirement already satisfied (use –upgrade to upgrade): selenium in c:\python3
    4\lib\site-packages
    Requirement already satisfied (use –upgrade to upgrade): pygubu in c:\python34\
    lib\site-packages
    Requirement already satisfied (use –upgrade to upgrade): appdirs>=1.3 in c:\pyt
    hon34\lib\site-packages (from pygubu)

    C:\Python34\AdminCFDI_v0.2.2>admincfdi.py
    Traceback (most recent call last):
    File “C:\Python34\AdminCFDI_v0.2.2\admincfdi.py”, line 17, in
    from pyutil import Util
    File “C:\Python34\AdminCFDI_v0.2.2\pyutil.py”, line 51, in
    from win32com.client import Dispatch
    File “C:\Python34\lib\site-packages\win32com\__init__.py”, line 5, in

    import win32api, sys, os
    

    ImportError: DLL load failed: %1 no es una aplicación Win32 válida.

    C:\Python34\AdminCFDI_v0.2.2>

    Responder
    • Hola Nattcho,

      ¿Instalaste las Extensiones para Windows 32 específicamente para Python 3.4?

      Y otra pregunta ¿Porqué instalaste AdminCDFI dentro de la carpeta de Python?, no es que se malo, pero se me hace raro. 😛

      Saludos.

      Responder
  22. Buenas tardes tuve algunas dificultades para instalarlo y ejecutarlo dejo la manera en que lo resolvi (tal ves no es la mas elegante, pero me funciono) Por si a alguien le sirve. *****Debian 7******

    para hacer funcionar el programa hay que instalar algunas dependencias. Probado en Debian 7

    apt-get install python3
    apt-get install python3-tk
    apt-get install python3-pip

    con pip lo instala para python2 y lo necesitamos para python3 por eso hay que bajar el codigo e instalarlo manualmente

    descargar selenium
    https://pypi.python.org/pypi/selenium

    descargar pygubu
    https://pypi.python.org/pypi/pygubu/0.9.5#downloads

    descomprimir, cambiar al directorio e instalar asi en cada uno
    python3 setup.py install

    instalar el complemento de firefox/iceweasel
    https://addons.mozilla.org/es/firefox/addon/selenium-expert-selenium-ide/

    realizar cambios en el codigo de utils como lo sugiere Mr E
    https://linuxmanr4.com/2015/01/20/descargar-los-xml-del-sat-de-una-manera-mas-sencilla/

    comentar linea 28 y sustituir por
    DEVNULL = open(os.devnull, ‘wb’)

    instalar networkit por error en la linea 28 de Utils.py
    https://networkx.github.io/documentation/latest/install.html

    Responder
  23. Tienen alguna idea de porque deja de funcionar con una versión mas nueva de Firefox, por ejemplo la versión 44, solo he podido echarla andar con la versión 38

    Saludos

    Responder
    • Fijate que hace tiempo que no utilizo la aplicación y la última vez que lo hice, el sitio de hacienda no daba para mucho, deja le doy una revisada. Pero estas preguntas son mejores si las haces en el sitio de GitHub del proyecto.

      Saludos.

      Responder
  24. Francisco, buscando una solución para esto llegué a tu sitio, pero luego ya no existe la liga a la descarga del sitio (además me pareció de mal gusto que siendo una contribución “libre” la hayan quitado por aparentemente sólo haber recibido un donativo). Las donaciones son eso, si no pues sean claros y pongan un precio. Como sea, encontré una solución de microsip muy fácil de usar (ni siquiera requiere instalarse) y funciona muy bien, hemos descargado unas 6000 hoy sin problema 😀 https://tar.mx/archivo/2016/descarga-masiva-de-cfdi-del-sat-gratis-y-facil.html

    Responder
    • Pues es que todo el mundo tiene derecho a hacerse de recursos. Recuerda que free no quiere decir gratis. Además no me parece mal una donación, si acaso lo criticable es que dice que es mensual (en lugar de una contribución única).

      La herramienta de Microsip que mencionas es muy buena y es gratuita. Pero el paquete Microsip como tal no lo es, de hecho es bastante carito. Así que supongo que este regalo se agradece y es muy útil.

      Cuando recomendé esta herramienta todavía no estaba disponible la de Microsip, era lo que había en su momento.

      Saludos !!!

      Responder
      • Es lo que comenté, no importa si es de pago o gratis (o libre), lo que me causa humor es la leyenda “Más de mil descargas y un solo donativo, es obvio que no le interesa a la comunidad esta herramienta”. Cada quien tiene derecho a hacer lo que crea conveniente con lo que desarrolla.

        Responder
        • Si también lo vi y no creo que sea la forma de promover una mayor donación jajajaja. Además cuando confrontas la facilidad de uso entre una y otra herramienta AdminCFDI sale perdiendo 🙁 .

          Responder

¡Me encantaría saber que opinas!

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.