Calendario fiscal español

Cuándo vence cada modelo de la Agencia Tributaria, calculado y no copiado de una tabla.

Librerías de código abierto · Python · Código publicado

El problema

La fecha de vencimiento parece un dato y es un cálculo. El día cambia según el modelo, se traslada si cae en sábado, domingo o festivo, y se adelanta cinco días si el pago va domiciliado. Cualquier calendario escrito a mano es correcto el año en que se escribe y silenciosamente falso al siguiente.

Qué hace

  • Calcula la fecha límite de los modelos trimestrales, anuales y de campaña de la Agencia Tributaria.
  • Traslada el vencimiento cuando cae en día inhábil, según el artículo 30.5 de la Ley 39/2015.
  • Acorta el plazo cinco días cuando la presentación va con domiciliación bancaria.
  • Sitúa el Viernes Santo con el algoritmo de Meeus, Jones y Butcher, en lugar de listar años a mano.

Lo que se decidió al construirlo

La Pascua se calcula, no se lista
El Viernes Santo es el único festivo estatal que se mueve, y la tentación es escribir diez años en una tabla. Esa tabla caduca sin avisar: el año once devuelve una fecha equivocada y nadie ve nada raro. Con el algoritmo de Meeus, Jones y Butcher el año once sale igual de bien que el primero.
El traslado sale de la ley que lo dice
Que un plazo que vence en inhábil pase al siguiente hábil no es una costumbre: es el artículo 30.5 de la Ley 39/2015, y está citado en el código junto a la línea que lo aplica. Una regla sin su norma al lado es una regla que nadie puede revisar sin volver a investigarla entera.
La domiciliación acorta el plazo, no lo alarga
Domiciliar el pago adelanta cinco días la fecha real de presentación, y es la equivocación más cara de todas porque va en la dirección contraria a la intuición: quien cree que domiciliar da margen presenta fuera de plazo. Es un parámetro explícito, no un caso especial escondido.

Hasta dónde llega

  • No rellena ningún modelo, no calcula ningún importe y no presenta nada ante la Agencia.
  • No es asesoramiento fiscal: dice cuándo vence un modelo, no si hay obligación de presentarlo.
  • La cobertura es la lista de modelos declarada en el repositorio. Un modelo que no esté en ella no tiene fecha.
  • El modelo 100 solo devuelve fecha para los años de campaña verificados en el repositorio.
  • 0 dependencias
  • MIT licencia
  • 3.9+ Python

Construido con

  • Python
  • datetime

Respalda este servicio

Desarrollo de software y aplicaciones a medida

Leer el código