Al hilo de mi anterior hilo, hoy se acaba de conocer que el gobierno ha pospuesto la puesta en marcha de la obligatoriedad del sistema un año completo.
Todo un alivio para las pymes y autónomos que estaban muy perdidos con las nuevas obligaciones que emanaban de este nuevo sistema tributario.
Desde hace unos meses hay una palabra que suena mucho por todas partes, no es una peli, no es un disco, no es un nuevo escándalo financiero y no afecta a todo el mundo… Pero es algo muy importante para pymes y autónomos, esa palabra es VeriFactu (o Veri*Factu).
¿Qué es Veri*Factu?
VERI*FACTU es el nuevo sistema de emisión de facturas “verificables” definido por la Agencia Tributaria española dentro de la Ley Antifraude, pensado para que el software de facturación genere registros inalterables y, opcionalmente, los envíe en tiempo real a Hacienda.
¿Porqué se está hablando de esto?
Se habla tanto de VERI*FACTU en estos meses porque su implementación obligatoria se acerca rápidamente, con plazos clave en 2025-2026 que generan urgencia entre pymes, autónomos y desarrolladores de software.
El 29 de julio de 2025 era la fecha límite para que los fabricantes adapten y homologuen sus programas de facturación.?
Desde el 1 de enero de 2026, las sociedades mercantiles deben usar sistemas compatibles; para autónomos y personas físicas, el 1 de julio de 2026.?
Artículos recientes destacan que solo el 8% de pymes está preparado, con un mes restante para la primera fase.?
Cómo funciona en la práctica
El programa de facturación genera, por cada factura, un registro firmado electrónicamente, con huella (hash) y datos clave (número, fecha, importe, NIF, tipo de factura, etc.), y lo encadena con los anteriores para asegurar la trazabilidad.?
En modo “VeriFactu”, el software envía estos registros automáticamente a la AEAT; en modo “no VeriFactu”, los conserva y solo los remite si se le requieren, pero cumpliendo igualmente requisitos estrictos de seguridad y conservación.?
Las facturas incluyen un código QR que permite a cliente y AEAT comprobar que la factura está registrada, así como la leyenda “VERIFACTU” o “Factura verificable en la sede electrónica de la AEAT”.?
Esa marca funciona como “sello de calidad fiscal”: indica que el emisor usa un sistema que cumple con el reglamento de facturación verificable y con los requisitos técnicos oficiales.
De hecho, según las respuestas a preguntas frecuentes de la AEAT. incluso si se elige el modo «no VeriFactu» se debería incluir el código QR siempre que se haya generado con un programa informático que tenga la opción «no VeriFactu».
¿Qué puedo hacer o como desarrollador?
En primer lugar informarte sobre todo esto, ya que tarde o temprano terminará cayendo sobre ti parte de este marrón. La información principal puedes encontrarla en la AEAT, y si no queréis cambiar de sistema de generación de facturas todavía, os recomiendo utilizar DocuFactu. DocuFactu es un sistema sencillo que permite, en base a las facturas en el formato actual generar e incrustar un QR verificable en la misma para que cumpla la normativa. Además, si deseas usar el modo VeriFactu usa inteligencia artificial para extraer los datos de la factura y enviarlos al registro de la agencia tributaria en tu nombre. Tiene una API muy sencilla (REST con API KEY) y permite cumplir con la ley sin demasiados quebraderos de cabeza. Si queréis más información, solo tenéis que visitar su web (DocuFactu – VeriFactu fácil) o enviar un correo a [email protected].
En un mes justo veremos si esto echa a andar o los múltiples problemas que nos genera tener que adaptar algo tan importante como la facturación a una norma tan restrictiva hacen que se retrase su puesta en marcha.
Aunque pareciese que no tiene nada que ver una cosa con otra, lo que es cierto es que estas últimas semanas han ido ligadas de la mano, pero de la manera mala. Dejadme que me explique.
El caso es que una de las aplicaciones que mantenemos empezó en un momento dado a recibir incidencias como si estuviese caída. El servidor estaba bien y yo desde mi oficina llegaba perfectamente, después de mucho indagar descubirmos que no se llegaba desde las conexiones Movistar u O2, además, lo que vimos es que había ya quejas de otros servidores que estaban afectados y solo tenían en común una cosa, que estaban detrás de Cloudflare. La cosa es que media internet utiliza los servicios de cloudflare, como CDN o como protección contra ataques DDOS o como proxy para ahorrar ancho de banda. Entendimos que debía ser un problema de enrutamiento de Movistar y desactivamos cloudflare momentaneamente a la espera de que lo solucionasen… Estamos hablando del día 3 de febrero.
Esto estuvo pasando durante toda la tarde, llegado un momento nos dijeron que ya volvía a funcionar (y que todo debería ser una avería, no nos dijeron otra cosa)
Peeero, casualidades de la vida, el día 8 se jugaba el derbi y, mira por donde, resulta que empezamos a recibir incidencias de nuevo… Vuelta a desactivar cloudflare y esperando de nuevo… Pero esta vez no lo arreglaron, el domingo seguía la cosa igual:
Y esto se quedó así hasta el lunes (qué curioso!) sin que nadie se dignase dar ninguna explicación ni disculpa. Miles de negocios perdidos y webs expuestas a ataques sin remedio por alimentar a las alimañas del deporte. Era tan evidente que ya se publicó como noticia en varios medios (https://hipertextual.com/2025/02/movistar-cloudflare-futbol). El caso es que estuvo funcionando bien hasta los partidos de champions en los que se repitieron cortes de 15 minutos alternos (igual esto había cantado demasiado).
¿Qué hacer?
Ahora nos surge el problema de qué hacer el fin de semana. No podemos irnos a descansar porque si nos vuelven a cortar cloudflare tendríamos que volver a desactivarlo a mano, así que, para todos aquellos que tengáis cloudflare os recomiendo usar algo como esto:
import requests
import subprocess
import os
def check_ip_reachable(ip):
try:
result = subprocess.run(['ping', '-c', '4', ip], capture_output=True, text=True, timeout=10)
return result.returncode == 0
except subprocess.TimeoutExpired:
return False
def pause_cloudflare(domain, email, api_key):
headers = {
'X-Auth-Email': email,
'X-Auth-Key': api_key,
'Content-Type': 'application/json'
}
# Obtener el Zone ID
zone_response = requests.get(f'https://api.cloudflare.com/client/v4/zones?name={domain}', headers=headers)
zone_data = zone_response.json()
if not zone_data['success']:
print("Error al obtener el Zone ID")
return False
zone_id = zone_data['result'][0]['id']
# Pausar el servicio
pause_url = f'https://api.cloudflare.com/client/v4/zones/{zone_id}'
pause_data = {'paused': True}
response = requests.patch(pause_url, headers=headers, json=pause_data)
result = response.json()
if result['success']:
print(f"Servicio pausado para el dominio {domain}")
return True
else:
print(f"Error al pausar el servicio: {result['errors']}")
return False
# Configuración
ip_to_check = "192.168.1.1" # Reemplaza con la IP que quieres comprobar
domain = "ejemplo.com" # Reemplaza con tu dominio
cloudflare_email = "[email protected]" # Reemplaza con tu email de Cloudflare
cloudflare_api_key = "tu_api_key" # Reemplaza con tu API key de Cloudflare
# Comprobar si la IP está accesible
if not check_ip_reachable(ip_to_check):
print(f"La IP {ip_to_check} no está accesible. Pausando el servicio en Cloudflare...")
if pause_cloudflare(domain, cloudflare_email, cloudflare_api_key):
print("Servicio pausado exitosamente")
else:
print("No se pudo pausar el servicio")
else:
print(f"La IP {ip_to_check} está accesible")
Este programita básicamente lo que hace es comprobar si una IP responde al ping y si no lo hace pone en pausa cloudflare para el dominio que queramos. Para ello solo hay que configurarlo con la IP, el dominio y los datos del API de cloudflare de nuestra cuenta. Lo recomendable es hacer un bucle que lo chequee cada cierto tiempo y (código que todavía no he hecho) que cuando vuelva la conectividad se vuelva a activar cloudflare.
Para mi estas actuaciones son completamente ilegales y atentan contra la neutralidad de la red. ¿Qué será lo siguiente? ¿Evitar que visitemos blogs de ideologías no aprobadas?, ¿Hacer inaccesible el porno? Por desgracia en mi casa usamos O2, pero igual tengo que cambiarme visto lo visto.
Día 17 de noviembre, una carta llega a mi buzón, en ella el Banco Sabadell me indica que tiene la obligación legal de comprobar que mi empresa justifique su actividad profesional y su capacidad económica. Le acompaña una lista de documentos que, a su parecer, justificaría estos aspectos… Al final pone un párrafo interesante:
La documentación podrá ser remitida a través de la web del Banco Sabadell, desde su área de cliente de banca digital. Acceda a la web de Banco Sabadell con su usuario y contraseña, desde su ordenador personal. Pulse sobre su nombre, el enlace está en la sección Perfil>Documentación digital>Documentos compartidos
Bueno, pues uno que es obediente hace lo que le dicen.
Nada, no hay forma de subir ningún documento allí… En fin, qué se puede esperar de un banco en el que no funcionan las transferencias desde el navegador porque «patata» y tienes que usar la versión vieja que si que funciona… Venga, llamemos a ver que me dicen al teléfono que acompaña la notificación.
Primera llamada: selecciona una opción (ninguna adecuada), me pasan con un operador, me pregunta mis datos, le cuento el problema… le paso
Segundo operador: le paso con un robot para que meta la contraseña… ¡como si darle la contraseña a un robot fuese más seguro…! Fallo1, acierto al 2… Le vuelvo a comentar el problema… le paso
Tercer operador: ¿me oye?¿me oye? deben tener algún problema con los auriculares o algo… Obviamente, ya con la paciencia mermada, me piden de nuevo que les cuente lo que me pasa (ya soy un experto resumidor…) y, oh sorpresa! me dice que esa operación la tengo que hacer desde la web de particulares… what!?
Pero es que esto es una cuenta de empresa, la notificación viene a nombre de la empresa y yo no tengo cuenta particular en el Sabadell… Respuesta: a mamarla… Que te pases por una oficina y pierdas media mañana para darles unos papeles (que solo tengo en digital) ¿qué les doy un usb? ¿grabo un dvd? ¿lo imprimo todo para que luego ellos lo escaneen de nuevo? Pero que coj****
A ver, que ya sabéis que a mi los bancos me caen mal TODOS, pero es que un banco de este tamaño no tenga una forma «buena» de que las empresas puedan subir documentos que según ellos son obligatorios pues, bueno, como poco produce estupor y vergüenza a partes iguales. ¿También le piden a Juan Roig que se abra una cuenta personal para subir papeles de Mercadona? ¿Se lo piden a quien sea el administrador de la empresa?… Bueno, supongo que a esos ya les visitarán en persona o les permitirán que se lo manden por mail, que la pela es la pela.
Volveremos a hablar de esto cuando me bloqueen la cuenta por no aportar los papeles, grrrrrrr.
Como se diría en twitter, acompañemé a conocer esta triste historia…
Llevo 19 años siendo empresario y he contratado unas cuantas decenas de personas. Antes era más sencillo dar con alguien competente, pero ahora con tanto bootcam y con tanto FP con esteroides es más complicado saber si un trabajador sabe lo que dice que sabe o no. Antes tener un título significaba un mínimo, ahora tienes que bucear para encontrar si la persona en cuestión sabe lo que es el http o le han dicho que eso es magia de Angular. En fin, que se te pueden colar inútiles sin comerlo ni beberlo.
Uno de esos casos me pasó recientemente, una persona respondió a un anuncio de trabajo que pusimos en LinkedIn. La plaza que pedíamos de desarrollador front la terminamos ocupando con otra persona, pero me pareció interesante el cv que nos pasó, lleno de dibujos hechos por él mismo.
El caso es que en la siguiente plaza para full stack se volvió a presentar, decidimos entrevistarle y, quitando que hablaba muy deprisa, nos dijo que si a todo lo que le preguntamos, no parecía perdido en ningún área de los que preguntamos y su CV era molón, así que le hicimos una oferta a los dos días… Oferta que rechazó porque dijo que ya estaba trabajando en otra empresa que le llamó después de nosotros… En fin, cosas que pasan, a seguir entrevistando.
Esta vez el proceso se hizo un poco más largo y a eso de las dos semanas me contacta de nuevo diciendo que las condiciones de la nueva empresa no le interesan y que si le mantengo la oferta. Yo, que soy un hombre de palabra, le digo que le mantengo exactamente la misma oferta que le hice… Y, dicho y hecho, le preparamos el contrato y quedamos ya para que empiece a trabajar en remoto, básicamente, aunque esperábamos que al menos el primer día se quedase en la oficina para que le explicásemos las cosas.
Primer día: quedamos a las 9:30 porque yo tenía reuniones antes… Espero, se hacen las 10, las 11.., le mando un whatsapp, no me contesta, a las 12 ya le llamo por teléfono y me dice que está en Alcorcón, pero llevando su madre al médico, que luego se pasa por aquí (no me parece lo mejor para el primer día y, además, sin avisar), en fin, que a las 13 se pasa por la oficina, firma el contrato, le enseño a entrar en el portatil y en su cuenta de correo; y… Se va. ¡¡!! Que si, que es un trabajo remoto, pero leche, no solo llegas 4 horas tarde sino que ni siquiera te quedas a que te expliquemos nuestra forma de trabajar…
La primera semana de trabajo se perdió intentando que arrancase solo en ubuntu el portatil y que no usase windows (windows=kk), le compramos hasta una docking station para que pudiese enchufar sus dos monitores (y se lo tuvimos que mandar a casa, que él pasar por l oficina ya le daba pereza), la segunda semana ya empieza a hacer algo productivo pero sin hacer puto caso de lo que le decimos. Nos llena el código de librerías que luego tenemos que borrar y nos quita más tiempo del que ahorramos. En la cuarta semana le ponemos a hacer algo para despliegue inmediato (tampoco era muy complicado, pero dediqué yo más horas que él) y nos dice que se va a vivir a la costa que, total, es remoto y no nos vamos a enterar… Y el pavo se va de mudanza el mismo día que pasamos a producción grrrrr. Obviamente la cosa peta y tengo que arreglarlo yo solo.
Lo primero que hace nada más llegar a su destino es pedirme un anticipo (estábamos a día 7 de mes), cosa que me extraña pero que procedemos a hacer sin ningún problema. A partir de ese momento su rendimiento fue cero. La lista de problemas (en orden cronológico):
Que el proveedor de internet que tenía no le permitía usar el puerto del ssh y no podía subir nada al servidor
Que los que han venido a repararlo no tenían idea y ha terminado tirando el router por la ventana
Que me he quedado dormido (excusa para no aparecer por el daily) y el movil estaba descargado
Que se me acaban los datos del móvil
Que me van a poner la fibra (ese día desapareció tras el daily y apareció después de haber terminado la jornada diciendo que se había dejado el movil en casa mientras le instalaban la fibra)
Que me he cargado el móvil (caída fortuita al suelo, dice)
Que sigue sin fibra y tiene que hacer el daily desde un bar
Que el del bar ha abierto más tarde hoy y no he podido hacer el daily
…
Y mientras el trabajo que tenía asignado ahí pudriéndose y teniendo que hacerlo entre sus compañeros y yo…
Llegados a este punto decido que es suficiente y que, obviamente, no ha superado el periodo de prueba. Se lo comunico y le indico que empaquete el portatil, la mochila y la docking station y que alguien pasará a recogerla.
Y ahora salta la sorpresa en las gaunas… Esta persona decide que va a quedarse con el material de la empresa, material que vale más que lo que él ha generado para la empresa. Esto no solo está tipificado como una apropiación indebida sino que dado el valor de lo apropiado puede ponerle en un grave aprieto. Mi empresa, como no puede ser de otra manera, le ha pagado finiquito y liquidación (muchas tentaciones de quedarnos con ese dinero en compensación, pero mi abogado me recomendó pagarlo de todas formas) y este desalmado malnacido no ha dado señales de vida.
Ya es duro mantener y gestionar una empresa como para tener que lidiar con gentuza de esta calaña. No solo ha perjudicado a sus compañeros sino que te deja una mala leche que terminas pagando con el primero que pasa… En fin, solo espero que el karma haga su trabajo. Si alguien quiere contratar a un full-stack developer, que me pregunte a quien no contratar nunca.
Gestionar el consentimiento de las cookies
Si, es un coñazo, pero tengo que ponerte este aviso sobre las cookies y mi
Funcional
Siempre activo
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas.
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos.El almacenamiento o acceso técnico que se utiliza exclusivamente con fines estadísticos anónimos. Sin un requerimiento, el cumplimiento voluntario por parte de tu Proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarte.
Marketing
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en una web o en varias web con fines de marketing similares.