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.
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.
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
- Administrar CFDI con descarga del SAT
- Python 3.4
- Python for Windows Extensions
- Firefox
- admin-cfdi en GitHub
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
se que sigue el proyecto en su github, pero mi comentario fue respecto a la página donde se supone se puede descargar xD
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 !!!
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.
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 🙁 .
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
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.
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
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
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
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
ImportError: DLL load failed: %1 no es una aplicación Win32 válida.
C:\Python34\AdminCFDI_v0.2.2>
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.
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.
Pues no entendí bien tu comentario… ¿Con cual programa comparaste?
Saludos BIGS !!!
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
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?
Gracias, muy buen aporte…
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
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 !!!
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.
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/
Listo, instalé libreoffice, y se funcionó la generación de pdf.
Muchas Gracias.
Saludos.
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
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.
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
Que tal HBautista, si pudiste echarlo andar en win 7, puedes pasarme el tip por favor.
Saludos.
Ocupo para win 7, que me hará falta, presiono el de generar pdf, pero solo manda errores en el command.
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 ?
Yo sí, pero en Debian Gnu/Linux 🙂
Saludos
Alguien ha podido echar andar la generación a pdf, tenog una plantilla en ods y no he podido generar alguno
Mmmm No salío el pantallazo
Pongo la url, parece que no me acepta html en los comentarios.
http://imgur.com/DbbuA4Y
Saludos
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
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?
Saludos !!!
Sí, lo hice.. pero no me instala PIP
Aquí los pantallazos de instalación.
http://imgur.com/a/QPi8d
Saludos
Me podrías decir qué versión de Python instalaste?
https://www.python.org/ftp/python/3.4.2/python-3.4.2.msi
https://www.python.org/ftp/python/3.4.2/python-3.4.2.amd64.msi
O
https://www.python.org/ftp/python/3.4.3/python-3.4.3.msi
https://www.python.org/ftp/python/3.4.3/python-3.4.3.amd64.msi
Ya probé instalar la 3.4.2 y 3.4.3 de 32bits, y ninguna me instala pip por defecto.
Probado en Win7.
Saludos
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 ??
Muchas gracias, con esa descarga ya funciono.
Te voy a pedir que descargues la última versión desde el sitio de GitHub,
Este es el enlace: https://github.com/LinuxCabal/admin-cfdi/archive/master.zip
Pues esta raro, porque como vez ahi esta la instalación de pip.
Suerte con eso. 🙂
Si observé esta parte de activar Add phyton.exe to path, volví a instalar y sin éxito
Gracias por la pronta respuesta
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’
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.
Saludos.
Estoy con Windows 7 64 bits, si me pueden apoyar con algo que me falté se los agradecería.
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.
¿Qué versión de Python instalaste?
Yo instalé esta:
https://www.python.org/ftp/python/3.4.3/python-3.4.3.msi
Hoy en la tarde/noche probaré a desinstalarlo nuevamente y volver a instalar. Parece que si estaba seleccionado, pero por alguna extraña razón no genera el pip.exe o pip3.exe, o al menos, yo no lo encontré.
En fin, al querer instalar el selenium con pip, me sigue marcando esos errores.
Saludos
Hola que tal.
Pip no viene instalado por default en Python3.4, aunque pude instalarlo.
Me arroja los siguientes errores a la hora de que querer instalar los módulos:
http://imgur.com/MMtbaOn
http://imgur.com/MMtbaOn
Aunque pude instalarlo en Debian 🙂
Saludos
Buenos días HBautista,
Que raro, yo no tuve problemas al instalarlo en windows y si más no recuerdo, en la instalación incluye pip.
Saludos !!!
Instalando y funcionando, gracias por el tip!
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…
Hola Mauricio,
Creo que Python2 sigue vigente por pura compatibilidad con los scripts más viejos. Hice un comentario en GitHub sobre una posible mejora.
Saludos !!!.
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.
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 !!!
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
A la primera oportunidad escribiré estas notas en github.
Saludos!
Definitivamente el lugar correcto para tus comentarios es el sitio en github !!!
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}
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 !!!
Sería interesante agregar esta opción, puedes solicitarla en GitHub y veremos como agregarsela…
https://github.com/LinuxCabal/admin-cfdi
Gracias por tu rápida respuesta Mauricio.
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.
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 🙂
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
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.
Hola Antonio,
Parece que por alguna razón que desconozco no puedes abrir el URL de la descarga y eso origina el problema, por ejemplo en la última imagen el URL https://pypi.python.org/pypi/selenium yo lo puedo abrir perfectamente.
No se que te esta ocasionando eso, pero es un buen punto para comenzar.
Saludos !!!