Calculadora de casillas del modelo 100 a partir de PDFs de brokers
Project description
CLI para calcular las casillas de la declaración de la renta española (modelo 100) a partir de los informes de Fidelity NetBenefits, DEGIRO y Koinly.
Aviso importante: los resultados generados por este programa son una ayuda para el cálculo y la cumplimentación del modelo 100 en Renta Web. Nunca deben presentarse directamente a Hacienda sin revisión previa. Los valores deben ser verificados por el usuario y, si procede, por un asesor fiscal, antes de incluirlos en la declaración. El programa puede contener errores, los PDFs de entrada pueden variar entre años, y la normativa fiscal puede cambiar. El autor no se hace responsable de declaraciones incorrectas.
Información general
Casillas calculadas
| Casilla | Concepto |
|---|---|
| 0029 | Rendimientos del capital mobiliario - Dividendos |
| 0326–0340 | Ganancias/pérdidas patrimoniales - Ventas de acciones |
| 1800–1814 | Ganancias/pérdidas patrimoniales - Venta de cryptos |
| 0588 | Deducción por doble imposición internacional |
| 0033 | Rendimientos de capital mobiliario - Staking/Rewards crypto |
| 0034 | Rendimientos de capital mobiliario - Airdrops crypto |
Este programa es una herramienta de ayuda. El informe generado incluye notas fiscales detalladas por cada sección. Verifica siempre los resultados antes de presentar la declaración.
Entradas soportadas
- Fidelity NetBenefits — "Custom transaction summary" (PDF descargado desde la web)
- DEGIRO — "Informe Fiscal Anual" de flatexDEGIRO Bank AG (PDF)
- Koinly — "Complete tax report" en español (PDF)
- Koinly — "Informe de plusvalías para España" (PDF, opcional) — cuando está presente, sustituye los totales de adquisición/transmisión por activo por los valores oficiales del informe, evitando errores de redondeo acumulado
Tipos de cambio
Los tipos de cambio USD/EUR se obtienen automáticamente del Banco Central Europeo:
https://data-api.ecb.europa.eu/service/data/EXR/D.USD.EUR.SP00.A
Uso de la herramienta
Instalación
Requiere Python 3.11+ y pipx.
pipx install renta-calculator
Para actualizar a la última versión:
pipx upgrade renta-calculator
Ejecutar
renta-calculator --input carpeta/ [--output fichero.html] [--year 2024]
Donde carpeta/ contiene los PDFs de Fidelity, DEGIRO y/o Koinly. No es necesario tenerlos todos — el programa detecta automáticamente el tipo de cada PDF y procesa los que encuentre.
| Opción | Descripción | Default |
|---|---|---|
--input / -i |
Directorio con los PDFs (o ruta a un PDF) | requerido |
--output / -o |
Fichero HTML de salida | output/renta_{año}_{YYYYmmdd_HHMM}.html |
--year / -y |
Año fiscal | autodetectado del PDF |
renta-calculator --input /ruta/a/mis/pdfs/
renta-calculator --input /ruta/a/mis/pdfs/ --output renta_2024.html --year 2024
Output
El programa genera un HTML autocontenido (sin dependencias externas) con:
- Resumen de casillas con importes en EUR (cada concepto es un enlace que salta a su sección de detalle)
- Detalle de cada transacción con trazabilidad al PDF original (página y fila)
- Tipos de cambio BCE utilizados para cada conversión USD → EUR
- Notas y advertencias fiscales
- Botones de acción junto a los importes relevantes para facilitar la introducción y verificación de datos en Renta Web. Dos tipos:
- 📋 Copiar: valores a introducir directamente en el modelo 100.
- 👁 Verificar: valores que la Renta calcula automáticamente — para cuadrar contra el resultado una vez introducidos los datos (casillas 0336, 0337/0338, 0339, 0340 en ventas; total global de dividendos).
- Shift+click en cualquier botón restaura su estado original sin copiar nada.
- Toggles en la cabecera del informe: modo privado (difumina todos los importes, útil para compartir pantalla) y tema claro/oscuro; ambos se persisten en el navegador.
Limitaciones
- Los parsers están ajustados a formatos concretos de PDF de cada broker. Pueden romperse si el broker cambia el formato en un año futuro.
- Solo cubre las fuentes documentadas en "Entradas soportadas". Otros brokers o exchanges requieren añadir un parser nuevo (ver
SPEC.md). - Los tipos de cambio se obtienen del BCE en tiempo real; si la API no está disponible, los cálculos en USD quedan sin convertir y se marcan como no calculados.
Desarrollo
Setup
Requiere uv.
git clone https://github.com/jelies/renta-calculator.git
cd renta-calculator
uv run renta-calculator --input samples/1-samples/
uv run crea el entorno virtual e instala las dependencias automáticamente la primera vez (usando uv.lock para versiones exactas).
Tests
uv run pytest
Datos de ejemplo
El repositorio incluye tres datasets de PDFs ficticios en samples/:
renta-calculator --input samples/1-samples/ # datos pequeños (original)
renta-calculator --input samples/2-big/ # ~100 operaciones por sección
renta-calculator --input samples/3-empty/ # sin operaciones (estados vacíos)
Los PDFs se regeneran con python scripts/generate_sample_pdfs.py.
Añadir un nuevo parser
Los parsers están registrados en src/renta/parsers/__init__.py. Para añadir soporte para otro broker, consulta la sección "Cómo añadir un nuevo parser" en SPEC.md.
Contribuir
Las contribuciones son bienvenidas. Abre un issue para reportar un bug o proponer una mejora, o un PR si ya tienes un fix.
Ejemplo de informe generado
Licencia
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file renta_calculator-1.0.1.tar.gz.
File metadata
- Download URL: renta_calculator-1.0.1.tar.gz
- Upload date:
- Size: 500.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5723bb8eaf07c18491ad1f12a0dc8b882cebc7e26630dcbded112b44c6d93eca
|
|
| MD5 |
d4035b41ba15d52eb1be5607ab9089e1
|
|
| BLAKE2b-256 |
e68a931bbcd68fde67cae2be426c97a01252ed1927773726d343ba3c4dc4c575
|
Provenance
The following attestation bundles were made for renta_calculator-1.0.1.tar.gz:
Publisher:
publish.yml on jelies/renta-calculator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
renta_calculator-1.0.1.tar.gz -
Subject digest:
5723bb8eaf07c18491ad1f12a0dc8b882cebc7e26630dcbded112b44c6d93eca - Sigstore transparency entry: 1519221307
- Sigstore integration time:
-
Permalink:
jelies/renta-calculator@f13fc138372e709b9b2160e289591a7a28798558 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/jelies
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f13fc138372e709b9b2160e289591a7a28798558 -
Trigger Event:
push
-
Statement type:
File details
Details for the file renta_calculator-1.0.1-py3-none-any.whl.
File metadata
- Download URL: renta_calculator-1.0.1-py3-none-any.whl
- Upload date:
- Size: 57.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9117b9c9dca49091a06f14abfe9430b712ca5f3d1c9a5ba3d122831a0c57ac1d
|
|
| MD5 |
00ef8db088933488188480d49136f30e
|
|
| BLAKE2b-256 |
7efa5433703643ee43d072a8045c84ef32e388ecbe3e7f2b69d0f0d5ff38efe4
|
Provenance
The following attestation bundles were made for renta_calculator-1.0.1-py3-none-any.whl:
Publisher:
publish.yml on jelies/renta-calculator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
renta_calculator-1.0.1-py3-none-any.whl -
Subject digest:
9117b9c9dca49091a06f14abfe9430b712ca5f3d1c9a5ba3d122831a0c57ac1d - Sigstore transparency entry: 1519221316
- Sigstore integration time:
-
Permalink:
jelies/renta-calculator@f13fc138372e709b9b2160e289591a7a28798558 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/jelies
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f13fc138372e709b9b2160e289591a7a28798558 -
Trigger Event:
push
-
Statement type: