Documentación
La interfaz web funciona como un asistente de cuatro pasos:
DeclaRenta no se publica en npm. Clona el repositorio y compílalo; luego ejecuta el CLI con node dist/cli.js:
# Clonar y compilar
git clone https://github.com/GeiserX/DeclaRenta.git
cd DeclaRenta && npm install && npm run build
# Convertir informes a valores del Modelo 100
node dist/cli.js convert --input informe.xml --year 2025
node dist/cli.js convert --input ibkr.xml --input degiro.csv --year 2025
# Generar fichero Modelo 720
node dist/cli.js modelo720 --input informe.xml --year 2025 --nif 12345678A --name "Apellidos, Nombre"
# Generar guía D-6
node dist/cli.js d6 --input informe.xml --year 2025 --nif 12345678A --name "Apellidos, Nombre"
Opciones adicionales del comando convert:
--output fichero.json — Guardar resultado en un fichero en vez de stdout.--format pdf|csv|json — Formato de salida (por defecto JSON).--broker ibkr|degiro|flatex|scalable|etoro|revolut|lightyear|freedom24|coinbase|binance|kraken|traderepublic|trading212 — Forzar broker si la auto-detección falla.--prior-losses fichero.json — Fichero JSON con pérdidas de ejercicios anteriores para compensación (Art. 49 LIRPF).| Broker | Formato | Extensión |
|---|---|---|
| Interactive Brokers | Flex Query XML | .xml |
| Degiro | CSV | .csv |
| Flatex | CSV (Depotumsätze + Kontoumsätze) | .csv |
| Scalable Capital | CSV | .csv |
| eToro | Account Statement XLSX | .xlsx |
| Revolut | Trading Account Statement XLSX | .xlsx |
| Lightyear | Transaction Report CSV | .csv |
| Freedom24 | JSON | .json |
| Coinbase | CSV | .csv |
| Binance | CSV | .csv |
| Kraken | CSV | .csv |
| Trade Republic | CSV | .csv |
| Trading 212 | CSV | .csv |
.xml.Formato: XML con estructura <FlexQueryResponse>.
Datos extraídos: Operaciones de compraventa (STK, FUND, OPT), dividendos, intereses, retenciones, acciones corporativas (splits, fusiones, spin-offs, scrip dividends) y posiciones abiertas.
Notas: IBKR es el broker con soporte más completo. Las comisiones en divisa distinta a la operación se convierten correctamente. El multiplicador de opciones se aplica automáticamente.
Formato: CSV con cabeceras que incluyen ISIN, cantidad y precio.
Datos extraídos: Operaciones de compraventa, dividendos y posiciones.
Limitaciones: Degiro no exporta acciones corporativas. Los splits deben reflejarse ya en el historial de operaciones. Si tienes operaciones en varios ejercicios, exporta todos los años.
Formato: CSV alemán (separador punto y coma). Dos ficheros: Depotumsätze (operaciones) y Kontoumsätze (movimientos de caja: dividendos, comisiones).
Datos extraídos: Operaciones de compraventa, dividendos y comisiones.
Limitaciones: Para que cada comisión se asigne a su operación, sube también el CSV de Kontoumsätze junto con el de Depotumsätze.
Formato: CSV con cabeceras date;time;status;reference (separador punto y coma).
Datos extraídos: Operaciones de compraventa y dividendos.
Limitaciones: Los informes de Scalable no incluyen posiciones abiertas para el Modelo 720. Necesitarás esa información por separado.
Formato: XLSX (Excel) con pestaña "Closed Positions".
Datos extraídos: Posiciones cerradas con precios de apertura y cierre, dividendos.
Limitaciones: eToro no proporciona ISINs directamente; DeclaRenta solo los utiliza si están presentes en el extracto exportado (no se infieren desde el nombre del activo). Los CFDs de acciones e índices se procesan; los CFDs de criptomonedas no están soportados.
Formato: XLSX (Excel) con columnas Date acquired, Date sold, Symbol, Quantity, Cost basis, Gross proceeds, Fees, etc.
Datos extraídos: Posiciones cerradas (compra + venta) con PnL y comisiones. Soporta acciones y criptomonedas.
Limitaciones: Revolut no incluye ISINs, dividendos ni posiciones abiertas en este extracto. Para dividendos se necesita el Account Statement (no soportado aún). Para posiciones abiertas (Modelo 720/D-6), se necesita información adicional.
Formato: CSV con cabeceras Date, Reference, Ticker, ISIN, Type, Quantity, CCY, Price/share, Gross Amount, FX Rate, Fee, Net Amt., Tax Amt.
Datos extraídos: Compras, ventas, dividendos, distribuciones (ETFs monetarios), intereses y retenciones fiscales.
Limitaciones: Lightyear no incluye posiciones abiertas en el CSV. Para Modelo 720/D-6 se necesita información adicional. Las conversiones de divisa (FX) generan ganancias o pérdidas patrimoniales sujetas a tributación (DGT V2324-10, Art. 33.1 LIRPF); DeclaRenta las calcula por defecto (salvo que actives el modo monodivisa en tu perfil fiscal).
Formato: JSON con arrays de trades, corporate_actions y cash_flows.
Datos extraídos: Operaciones, dividendos, acciones corporativas y flujos de caja.
Limitaciones: El formato JSON de Freedom24 puede variar entre versiones. Si la estructura no coincide, el auto-detector no reconocerá el fichero.
Formato: CSV con cabeceras Transaction Type y Spot Price.
Datos extraídos: Compras, ventas, conversiones y posiciones de criptomonedas.
Limitaciones: Solo operaciones de criptoactivos. Los staking rewards se interpretan como ingresos.
Formato: CSV con cabeceras Date(UTC),Pair,Side,Price.
Datos extraídos: Operaciones de compraventa en mercado spot.
Limitaciones: Solo mercado spot. Operaciones de futuros o derivados no están soportadas. Las distribuciones y staking pueden requerir exportaciones adicionales.
Formato: CSV con cabeceras txid, pair/ordertxid o refid/aclass.
Datos extraídos: Operaciones de compraventa y movimientos de fondos.
Limitaciones: Solo operaciones spot. Kraken usa pares propios (como XXBTZEUR) que DeclaRenta normaliza automáticamente.
Formato: CSV con cabeceras de transacción.
Datos extraídos: Operaciones de compraventa y dividendos.
Formato: CSV con cabeceras de transacción.
Datos extraídos: Operaciones de compraventa y dividendos.
MEXEM no tiene todavía un parser propio en DeclaRenta. No obstante, MEXEM utiliza la misma plataforma que Interactive Brokers y exporta en Flex Query XML: si generas una Activity Flex Query (Trades, Cash Transactions y Open Positions, con todos los campos y el campo Notes en Trades), el fichero .xml se auto-detecta como IBKR y se procesa con el parser de IBKR. Un parser específico de MEXEM está planeado.
Swissquote no tiene todavía un parser en DeclaRenta. El soporte está planeado. Mientras tanto, si tu informe coincide con el formato de otro broker soportado puedes intentar subirlo, pero no hay un parser específico de Swissquote.
DeclaRenta calcula los valores de las siguientes casillas de la base del ahorro del IRPF. Los valores se obtienen en euros utilizando los tipos de cambio oficiales del BCE.
0328 — Valor de transmisión: suma de los importes netos de venta de las acciones cotizadas del ejercicio: (precio_venta x cantidad - comisión_venta) x tipo_ECB.
0331 — Valor de adquisición: suma del coste base FIFO de esas ventas: (precio_compra x cantidad + comisión_compra) x tipo_ECB_compra. El coste se calcula mediante FIFO (Art. 37.2 LIRPF).
Base legal: Art. 35 y 37.1.a y 37.2 LIRPF. En Renta Web (Orden HAC/277/2026): «Acciones o participaciones negociadas» > Importe global de las transmisiones (0328) y Valor de adquisición global (0331). Nota: la casilla 0327 es un campo de texto (denominación de los valores), no un importe.
1633 — Valor de transmisión y 1637 — Valor de adquisición de los elementos no encuadrados en acciones negociadas: opciones y derivados (Art. 37.1.m), criptomonedas, fondos no cotizados, y ganancias por tipo de cambio de moneda extranjera (Art. 33.1).
Base legal: Art. 37.1.m y 33.1 LIRPF. En Renta Web: «Otros elementos patrimoniales» (clave 5 — otros elementos no afectos a actividades económicas) > Valor de transmisión (1633) y Valor de adquisición (1637).
Fondos y ETFs: DeclaRenta clasifica los fondos y ETFs (categoría FUND) y los bonos (BOND) en este bloque «otros elementos» (1633/1637). Si tu fondo/ETF cotiza en un mercado regulado, técnicamente correspondería al bloque de acciones negociadas (0328/0331). Los informes de los brokers no indican de forma fiable si un fondo cotiza o no, por lo que se aplica este criterio uniforme. El impuesto a pagar es idéntico (ambos bloques tributan en la base del ahorro al mismo tipo); solo cambia la casilla en la que se anota. Si lo prefieres, puedes mover manualmente en Renta Web las ventas de ETFs cotizados a las casillas 0328/0331.
Pérdidas bloqueadas por la norma anti-churning (Art. 33.5.f/g LIRPF). Son las pérdidas en las que se ha recomprado el mismo valor en los 2 meses anteriores o posteriores a la venta (cotizados) o en 1 año (no cotizados/cripto). El bloqueo es proporcional a la cantidad recomprada y la pérdida diferida se reintegra al vender los valores recomprados.
No existe una casilla agregada en Renta Web: estas pérdidas se gestionan a nivel de operación individual mediante «Integración diferida» (checkbox «no imputación por recompra de valores homogéneos»). DeclaRenta las muestra como informativo para que el contribuyente las localice en sus disposiciones.
Suma bruta de todos los dividendos recibidos durante el ejercicio, convertidos a EUR al tipo ECB del día de pago: dividendo_bruto x tipo_ECB.
Incluye dividendos ordinarios, extraordinarios y distribuciones de fondos. Se declara el importe bruto antes de retenciones extranjeras.
Base legal: Art. 25.1.a LIRPF. En Renta Web: Rendimientos del capital mobiliario > Dividendos y demás rendimientos por la participación en fondos propios de entidades.
Intereses recibidos por saldos en efectivo en el broker, depósitos o bonos. Convertidos a EUR al tipo ECB del día del cobro.
Base legal: Art. 25.2 LIRPF. En Renta Web: Rendimientos del capital mobiliario > Intereses de cuentas, depósitos y activos financieros en general.
Intereses pagados al broker por uso de margen (préstamo de valores o apalancamiento). No son gastos fiscalmente deducibles y no tienen casilla propia en el Modelo 100 — se muestran a título informativo.
Nota: Art. 26.1.a LIRPF solo permite deducir gastos de administración y custodia de valores negociables, no intereses de financiación ni margen. La casilla 0032 corresponde a rendimientos de contratos de seguros de vida (Art. 25.3 LIRPF), no a intereses de margen.
Suma de las deducciones permitidas por retenciones extranjeras sobre dividendos e intereses. Para cada país, la deducción es el menor de: (a) impuesto retenido en origen, o (b) cuota que correspondería en España sobre esa renta.
Base legal: Art. 80 LIRPF. En Renta Web: Deducciones > Doble imposición internacional.
FIFO (First In, First Out) es el método de valoración que la legislación fiscal española exige para calcular las ganancias y pérdidas patrimoniales derivadas de la transmisión de valores homogéneos (Art. 37.2 LIRPF). Cuando vendes acciones, las primeras que se consideran vendidas son las primeras que compraste.
Cada compra crea un lote con su fecha de adquisición, cantidad, precio por acción y coste total en euros. Cuando vendes:
La legislación fiscal española exige usar tipos de cambio oficiales, no los del broker. DeclaRenta obtiene los tipos diarios del BCE mediante su API SDMX:
Si tienes el mismo ISIN en varios brokers (por ejemplo, acciones de Apple compradas en IBKR y en Degiro), DeclaRenta unifica las colas FIFO por ISIN. Al subir ficheros de múltiples brokers, todas las operaciones se ordenan cronológicamente y los lotes se consumen en orden global, independientemente del broker de origen.
DeclaRenta utiliza la librería Decimal.js con precisión de 20 dígitos significativos y redondeo ROUND_HALF_UP. Esto evita los errores de punto flotante típicos de JavaScript (como 0.1 + 0.2 = 0.30000000000000004), garantizando que los cálculos fiscales sean exactos hasta el céntimo.
El Art. 33.5.f de la Ley del IRPF establece que no se computarán como pérdidas patrimoniales las derivadas de la transmisión de valores cuando el contribuyente hubiera adquirido valores homogéneos dentro de los dos meses anteriores o posteriores a la venta.
La ventana se calcula en meses naturales (no en días). Si vendes el 15 de marzo con pérdida:
El bloqueo es proporcional a la cantidad recomprada: si vendes 100 acciones con pérdida y recompras 30 dentro de la ventana, solo se bloquea la pérdida correspondiente a esas 30; la pérdida de las 70 restantes se computa con normalidad ahora.
La parte bloqueada no se pierde y no se suma al coste de adquisición de la nueva posición. Queda diferida como pérdida pendiente y se reintegra (vuelve a ser deducible) cuando más adelante transmitas esos valores recomprados.
En Renta Web esto requiere acción: no es automático. Por el importe bloqueado debes marcar la casilla «Pérdidas patrimoniales no imputables»; y cuando vendas los valores recomprados, debes imputar entonces la pérdida diferida.
El motor de anti-churning recorre todas las operaciones en orden cronológico y, para cada valor homogéneo:
gainLossEur < 0).pérdida bloqueada = |pérdida| × cantidad recomprada / cantidad vendida. La parte restante se computa ahora.La reintegración entre ejercicios es automática si subes los ficheros de varios años juntos (un único recorrido cronológico). En declaraciones de un solo año por separado, la pérdida diferida debe seguirse manualmente (limitación documentada).
La regla anti-churning se aplica a valores homogéneos: acciones (STK), fondos (FUND), bonos (BOND) y criptomonedas. Las criptomonedas (y los valores no cotizados) se tratan como no cotizados y usan la ventana de 1 año (±12 meses) en lugar de los 2 meses de los valores cotizados. No se aplica a opciones (OPT), futuros (FUT), CFDs ni forex (CASH).
Cuando recibes dividendos de una empresa extranjera, el país de origen suele retener un porcentaje en concepto de impuestos (por ejemplo, EE.UU. retiene un 15% si tienes el W-8BEN firmado, o un 30% sin él). España permite deducir ese impuesto pagado en el extranjero para evitar la doble tributación.
Para cada país, la deducción es el menor de:
| Hasta (EUR) | Tipo |
|---|---|
| 6.000 | 19% |
| 50.000 | 21% |
| 200.000 | 23% |
| 300.000 | 27% |
| En adelante | 30% |
El tramo del 30% fue introducido por la Ley 7/2024.
DeclaRenta agrupa los dividendos por país de retención y calcula la deducción permitida para cada uno. En los resultados verás una tabla con el impuesto pagado y la deducción máxima por país.
El formulario W-8BEN es un certificado que presentas ante brokers estadounidenses para acogerte al convenio de doble imposición entre España y EE.UU. Con él firmado, la retención sobre dividendos de EE.UU. se reduce del 30% al 15%. Es fundamental firmarlo para maximizar la deducción por doble imposición.
España tiene convenios con la mayoría de países. La retención aplicable depende de cada convenio bilateral.
Las pérdidas patrimoniales que no se hayan compensado en el ejercicio en que se generaron pueden arrastrarse durante los cuatro ejercicios siguientes.
Si después de la compensación en la misma categoría quedan pérdidas pendientes:
Mediante la opción --prior-losses del CLI, puedes proporcionar un fichero JSON con las pérdidas de ejercicios anteriores. DeclaRenta:
El formato del fichero JSON es:
[
{ "year": 2022, "amount": "-1500.00", "remaining": "-1200.00", "category": "gains" },
{ "year": 2023, "amount": "-800.00", "remaining": "-800.00", "category": "income" }
]
El Modelo 720 es una declaración informativa de bienes y derechos situados en el extranjero. No tiene cuota a pagar; es puramente informativo. Lo gestiona la Agencia Tributaria (AEAT).
Cualquier residente fiscal en España que a 31 de diciembre posea bienes en el extranjero cuyo valor por categoría supere los 50.000 EUR. Las tres categorías independientes son:
Cada categoría se evalúa de forma independiente. Solo se declaran las categorías que superan el umbral.
Del 1 de enero al 31 de marzo del ejercicio siguiente.
Un fichero de texto de ancho fijo (500 bytes por registro) codificado en ISO-8859-15, listo para subir a la AEAT. El fichero contiene:
Para acciones (STK), la valoración se calcula con el tipo medio del cuarto trimestre del BCE. Para fondos y bonos, se usa el tipo a 31 de diciembre.
El Modelo D-6 es la declaración de inversiones españolas en el exterior, regulada por el Banco de España. Es independiente del Modelo 720 y se presenta ante la Dirección General de Comercio Internacional e Inversiones.
Desde la Orden ICT/1408/2021, el D-6 suele quedar limitado a participaciones que representen el 10% o más del capital o derechos de voto de una sociedad cotizada extranjera. La mayoría de carteras minoristas están fuera de este supuesto.
Del 1 al 31 de enero del ejercicio siguiente.
A diferencia del Modelo 720, el D-6 no admite carga de fichero. Se cumplimenta manualmente en el formulario web AFORIX del Banco de España, posición por posición.
Una guía orientativa de cumplimentación con los datos que necesitarías introducir en AFORIX si confirmas que existe obligación de presentar:
Si proporcionas el D-6 del año anterior (vía --previous-d6), DeclaRenta genera también las cancelaciones para posiciones que ya no mantienes.
El Modelo 721 es la declaración informativa de monedas virtuales situadas en el extranjero. Es el equivalente del Modelo 720 para criptoactivos.
Cualquier residente fiscal en España que a 31 de diciembre posea criptomonedas en exchanges extranjeros cuyo valor total supere los 50.000 EUR.
Cualquier exchange con sede fuera de España. Los más comunes son Coinbase, Binance y Kraken. Si el exchange tiene sede en España (como Bit2Me), no es necesario declararlo en el 721.
La presentación oficial para programas externos se hace en XML según la Orden HFP/886/2023.
DeclaRenta muestra una revisión orientativa de posiciones cripto, pero la generación oficial del Modelo 721 está desactivada hasta implementar y validar el XML AEAT.
Las acciones corporativas modifican los lotes FIFO sin generar hechos imponibles (salvo excepciones). DeclaRenta las procesa cronológicamente junto con las operaciones de compraventa.
Un split multiplica el número de acciones por un ratio y divide el precio proporcionalmente. Un reverse split hace lo contrario. En ambos casos:
Cuando una empresa es adquirida por otra, los lotes del ISIN antiguo se transfieren al ISIN nuevo:
En un spin-off, una empresa separa una división como entidad independiente. El coste base del lote original se reparte proporcionalmente:
Un scrip dividend entrega nuevas acciones en lugar de efectivo. DeclaRenta lo trata como:
Además de acciones (STK) y fondos (FUND), DeclaRenta procesa estos instrumentos financieros:
Las opciones se procesan con FIFO por símbolo (no tienen ISIN). El multiplicador del contrato (normalmente 100) se aplica automáticamente al calcular costes e importes de venta. DeclaRenta extrae los campos putCall, strike, expiry y underlyingSymbol del Flex Query XML de IBKR.
La regla anti-churning (Art. 33.5.f) no se aplica a opciones.
Los contratos de futuros se procesan con FIFO por símbolo, aplicando el multiplicador del contrato. Las ganancias y pérdidas tributan como ganancias patrimoniales en la base del ahorro.
La regla anti-churning no se aplica a futuros.
Las operaciones de compraventa de divisas tributan como ganancias y pérdidas patrimoniales (DGT V2324-10, Art. 33.1 LIRPF). DeclaRenta implementa un motor FX FIFO independiente que genera dos eventos fiscales al operar en divisa extranjera:
Cada adquisición de divisa extranjera (depósito EUR→USD, venta de acciones que genera USD) crea un lote en la cola FIFO de esa divisa. Cada disposición (conversión USD→EUR, compra de acciones en USD) consume lotes por orden cronológico.
Las conversiones automáticas del broker para liquidación (FXCONV) se excluyen automáticamente — solo las operaciones de forex deliberadas generan eventos fiscales.
La regla anti-churning no se aplica a operaciones forex.
La compraventa de bonos tributa como ganancia o pérdida patrimonial, procesada con FIFO. Los cupones (intereses de bonos) se declaran como rendimiento del capital mobiliario en la Casilla 0027, al igual que los intereses de cuentas.
Las letras del Tesoro extranjeras reciben el mismo tratamiento fiscal que los bonos corporativos.
La regla anti-churning sí se aplica a bonos (son valores homogéneos).
Los CFDs tributan como ganancias y pérdidas patrimoniales, no como rendimientos del capital mobiliario. DeclaRenta detecta CFDs en eToro por el campo leverage > 1, el tipo "CFD", o el tipo "Commodity" (las materias primas en eToro son siempre CFDs). Se soportan acciones, índices y materias primas como CFDs.
Las posiciones cortas en CFDs se soportan: si vendes primero sin lotes previos, DeclaRenta registra un coste base de 0 EUR y emite un aviso.
La regla anti-churning no se aplica a CFDs. Los CFDs de criptomonedas no están soportados actualmente.
DeclaRenta no tiene backend. No hay servidor que reciba tus datos. La aplicación web es un conjunto de ficheros estáticos (HTML, CSS, JavaScript) que se ejecutan íntegramente en tu navegador.
No hay Google Analytics, ni cookies de terceros, ni píxeles de seguimiento, ni ninguna forma de telemetría. No se recopila ningún dato de uso.
La única petición que DeclaRenta realiza a Internet es a la API pública del BCE (data-api.ecb.europa.eu) para obtener tipos de cambio oficiales. Esta petición no contiene ningún dato personal ni financiero: solo solicita tipos de cambio para un año y divisa concretos.
Todos los cálculos — parseo de ficheros, FIFO, detección de anti-churning, generación de modelos — se ejecutan en tu navegador mediante JavaScript. Tus extractos del broker nunca salen de tu equipo.
El código fuente está disponible en GitHub bajo licencia GPL-3.0. Cualquiera puede auditar el código, verificar que no hay transmisión de datos y contribuir mejoras.
DeclaRenta implementa las siguientes normas de la legislación fiscal española:
| Norma | Descripción |
|---|---|
| Art. 25.1.a LIRPF | Rendimientos del capital mobiliario: dividendos y participaciones en beneficios de entidades. |
| Art. 25.2 LIRPF | Rendimientos del capital mobiliario: intereses de cuentas, depósitos y activos financieros. |
| Art. 26.1.a LIRPF | Gastos deducibles de los rendimientos del capital mobiliario (gastos de administración y custodia). |
| Art. 33.5.f/g LIRPF | Norma anti-churning: no se computa la parte proporcional de la pérdida por venta de valores si se recompran homogéneos en 2 meses (cotizados) o 1 año (no cotizados/cripto). La pérdida bloqueada se difiere y se reintegra al transmitir los valores recomprados. |
| Art. 35 LIRPF | Transmisiones onerosas: valor de transmisión y valor de adquisición de elementos patrimoniales. |
| Art. 37.2 LIRPF | Método FIFO obligatorio para valores homogéneos: las primeras adquiridas se consideran las primeras transmitidas. |
| Art. 46 LIRPF | Base del ahorro: ganancias y pérdidas patrimoniales derivadas de transmisión de elementos patrimoniales. |
| Art. 49 LIRPF | Compensación de pérdidas patrimoniales: arrastre 4 años, compensación cruzada con límite del 25%. |
| Art. 80 LIRPF | Deducción por doble imposición internacional: menor entre impuesto pagado en origen y cuota española. |
| PGC NRV 11a / DGT V0583-16 | Tipos de cambio: el BCE constituye la referencia oficial para la conversión de moneda extranjera (safe harbor). |
| Ley 7/2024 | Introduce el tramo del 30% en la base del ahorro para rentas superiores a 300.000 EUR. |
| RD 1065/2007 | Reglamento general de gestión e inspección tributaria. Regula la obligación de informar sobre bienes en el extranjero (Modelo 720). |
| Orden EHA/3290/2008 | Regula la declaración de inversiones españolas en el exterior (Modelo D-6). |
| Ley 19/1991 | Impuesto sobre el Patrimonio. Relevante para la valoración de activos en el extranjero. |
LIRPF = Ley 35/2006, de 28 de noviembre, del Impuesto sobre la Renta de las Personas Físicas. LGT = Ley 58/2003, General Tributaria.