← Volver a la aplicación

DeclaRenta

Documentación

1. Guía rápida

Uso de la aplicación web

La interfaz web funciona como un asistente de cuatro pasos:

  1. Subir ficheros — Arrastra o selecciona los informes de tu broker. Puedes subir varios ficheros de distintos brokers a la vez. El formato se auto-detecta, aunque también puedes forzar el broker en el desplegable.
  2. Revisar datos — DeclaRenta muestra un resumen de lo que ha detectado: número de operaciones, dividendos, acciones corporativas y posiciones abiertas. Comprueba que todo cuadra antes de continuar.
  3. Configurar — Selecciona el ejercicio fiscal e introduce tu NIF si necesitas revisar Modelo 720, 721 o D-6.
  4. Resultados — Obtienes los valores de cada casilla del Modelo 100, la tabla de operaciones con ganancias y pérdidas, los dividendos desglosados y la opción de exportar en JSON, CSV o generar el fichero del Modelo 720 y guías orientativas para D-6/721.

Uso de la línea de comandos (CLI)

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).

Formatos soportados por broker

Broker Formato Extensión
Interactive BrokersFlex Query XML.xml
DegiroCSV.csv
FlatexCSV (Depotumsätze + Kontoumsätze).csv
Scalable CapitalCSV.csv
eToroAccount Statement XLSX.xlsx
RevolutTrading Account Statement XLSX.xlsx
LightyearTransaction Report CSV.csv
Freedom24JSON.json
CoinbaseCSV.csv
BinanceCSV.csv
KrakenCSV.csv
Trade RepublicCSV.csv
Trading 212CSV.csv

2. Brokers soportados

Interactive Brokers (IBKR)

Cómo exportar el informe

  1. Inicia sesión en el Portal del Cliente de IBKR.
  2. Ve a Rendimiento e informes → pestaña Consultas Flex.
  3. En Consulta flex de actividad, haz clic en el + para crear una nueva consulta.
  4. En la configuración, activa las secciones:
    • Trades (obligatorio)
    • Cash Transactions — dividendos y retenciones (obligatorio)
    • Open Positions — para Modelo 720/D-6 (recomendado)
    • Financial Instrument Information (recomendado)
  5. En cada sección, selecciona todos los campos disponibles (marca todas las casillas). Cuantos más datos incluyas, más preciso será el cálculo. Como mínimo asegúrate de incluir el campo Notes en Trades — es necesario para detectar conversiones automáticas de divisa.
  6. Formato de salida: XML.
  7. Incluye todos los años disponibles para cálculo FIFO correcto.
  8. Guarda la consulta, ejecútala y descarga el fichero .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.

Degiro

Cómo exportar el informe

  1. Inicia sesión en la web de Degiro (no la app).
  2. Abre el panel lateral Buzón (icono de sobre).
  3. Haz clic en Transacciones (historial de transacciones de tus productos).
  4. Selecciona el rango de fechas deseado (incluye todo el histórico para FIFO).
  5. Haz clic en Exportar y descarga el fichero CSV.
  6. Para dividendos: vuelve al BuzónCuenta (historial de movimientos de tu cuenta) → misma fecha → Exportar CSV.

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.

Flatex

Cómo exportar el informe

  1. Inicia sesión en la web de Flatex.
  2. Ve a MovimientosDepotumsätze (movimientos de la cartera).
  3. Selecciona todo el histórico (necesario para el cálculo FIFO) y exporta el fichero CSV.
  4. Para dividendos: ve a Kontoumsätze (movimientos de la cuenta), mismo rango de fechas, y exporta el CSV.
  5. Sube ambos ficheros CSV (Depotumsätze para operaciones y Kontoumsätze para dividendos).

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.

Scalable Capital

Cómo exportar el informe

  1. Inicia sesión en Scalable Capital.
  2. Ve a Perfil → Documentos fiscales.
  3. Descarga el informe de transacciones en formato CSV.

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.

eToro

Cómo exportar el informe

  1. Inicia sesión en eToro.
  2. Ve a Ajustes → Extracto de cuenta.
  3. Selecciona el período del ejercicio fiscal.
  4. Descarga el fichero XLSX (Excel).

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.

Revolut

Cómo exportar el informe

  1. Inicia sesión en la web de Revolut (app.revolut.com o app móvil).
  2. Ve a Trading/Cripto → Extractos.
  3. Selecciona Trading Account Statement del ejercicio fiscal.
  4. Descarga en formato XLSX (Excel).

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.

Lightyear

Cómo exportar el informe

  1. Abre la app de Lightyear.
  2. Ve a Perfil → Informes.
  3. Selecciona Transaction report y el período.
  4. Descarga el fichero CSV y envíalo a tu ordenador.

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).

Freedom24

Cómo exportar el informe

  1. Inicia sesión en la plataforma web de Freedom24.
  2. Ve a Informes → Informe de operaciones.
  3. Selecciona el período y formato JSON.
  4. Descarga el fichero.

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.

Coinbase

Cómo exportar el informe

  1. Inicia sesión en Coinbase.
  2. Ve a Impuestos → Documentos.
  3. Haz clic en Generar informe.
  4. Descarga el historial de transacciones en formato CSV.

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.

Binance

Cómo exportar el informe

  1. Inicia sesión en Binance.
  2. Historial de operaciones spot: Órdenes → Orden spot → Exportar historial de operaciones (↑) → Spot - Historial de Operaciones → Personalizar tiempo (UTC+1) → CSV.
  3. Historial de transacciones: Órdenes → Historial de Activos → Exportar registros de transacciones (↑) → Historial de Transacciones → Personalizar tiempo (UTC+1) → CSV.
  4. Puedes subir uno o ambos ficheros — se aceptan tanto en español como en inglés.

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.

Kraken

Cómo exportar el informe

  1. Inicia sesión en Kraken.
  2. Ve a History → Export.
  3. Selecciona Trades y el rango de fechas.
  4. Formato: CSV, descarga el fichero.

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.

Trade Republic

Cómo exportar el informe

  1. Abre la app de Trade Republic.
  2. Ve a Perfil → Actividad.
  3. Pulsa los tres puntos (⋯) y selecciona Exportar.
  4. Selecciona el rango de fechas y formato CSV.
  5. Descarga el fichero y envíalo a tu ordenador.

Formato: CSV con cabeceras de transacción.

Datos extraídos: Operaciones de compraventa y dividendos.

Trading 212

Cómo exportar el informe

  1. Inicia sesión en la web de Trading 212.
  2. Ve a Historial → Transacciones.
  3. Filtra por el rango de fechas deseado.
  4. Haz clic en Descargar CSV.

Formato: CSV con cabeceras de transacción.

Datos extraídos: Operaciones de compraventa y dividendos.

MEXEM (no soportado todavía — planeado)

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 soportado todavía — 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.

3. Casillas del Modelo 100 (IRPF)

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 / 0331

Acciones negociadas en mercados regulados (Art. 37.1.a)

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 / 1637

Otros elementos patrimoniales (opciones, cripto, fondos no cotizados y divisa)

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.

Info

Pérdidas patrimoniales bloqueadas (anti-churning) — Informativo

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.

0029

Dividendos íntegros

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.

0027

Intereses de cuentas y depósitos

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.

Info

Intereses pagados al broker (margen) — Informativo

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.

0588

Deducción por doble imposición internacional

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.

4. Motor FIFO

Qué es FIFO y por qué es obligatorio

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.

Cómo funcionan los lotes

Cada compra crea un lote con su fecha de adquisición, cantidad, precio por acción y coste total en euros. Cuando vendes:

  • Se consume el lote más antiguo primero.
  • Si la venta es mayor que un lote, se consume parcialmente el siguiente.
  • El coste base se calcula proporcionalmente: si un lote de 100 acciones con coste de 1.000 EUR pierde 30 acciones, el coste base de esas 30 es 300 EUR.
  • El resto del lote (70 acciones, 700 EUR) permanece en la cola para futuras ventas.

Tipos de cambio del BCE

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:

  • Se usa el tipo del día de la operación (compra o venta).
  • Si es fin de semana o festivo, se retrocede hasta 10 días para encontrar el último tipo publicado.
  • El BCE publica tipos como "1 EUR = X moneda extranjera". DeclaRenta invierte el tipo para obtener "1 unidad de moneda extranjera = Y EUR".
  • La única conexión a Internet que realiza DeclaRenta es a la API pública del BCE.

FIFO cross-broker

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.

Precisión decimal

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.

5. Regla anti-churning (norma antiaplicación)

Qué dice la ley

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.

Ventana de dos meses

La ventana se calcula en meses naturales (no en días). Si vendes el 15 de marzo con pérdida:

  • Ventana anterior: desde el 15 de enero.
  • Ventana posterior: hasta el 15 de mayo.
  • Si has recomprado valores homogéneos dentro de la ventana aplicable, la pérdida puede quedar bloqueada. Para no cotizados/cripto se usa la ventana de 1 año.

Qué ocurre con las pérdidas bloqueadas

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.

Cómo lo detecta DeclaRenta

El motor de anti-churning recorre todas las operaciones en orden cronológico y, para cada valor homogéneo:

  1. Identifica las ventas con pérdida (gainLossEur < 0).
  2. Para cada una, suma la cantidad de valores homogéneos recomprados dentro de la ventana aplicable (2 meses para cotizados, 1 año para no cotizados/cripto), antes o después de la venta.
  3. Bloquea la pérdida de forma proporcional: pérdida bloqueada = |pérdida| × cantidad recomprada / cantidad vendida. La parte restante se computa ahora.
  4. La pérdida bloqueada queda diferida, asociada a los valores recomprados (no se suma a su coste).
  5. Reintegración: cuando una venta posterior transmite esos valores recomprados, el motor libera la pérdida diferida correspondiente (de forma proporcional a la cantidad vendida), volviendo a hacerla deducible.
  6. Las operaciones con pérdida bloqueada aparecen resaltadas en la tabla de resultados.

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).

6. Doble imposición internacional

Art. 80 LIRPF

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.

Cálculo de la deducción

Para cada país, la deducción es el menor de:

  • Impuesto efectivamente pagado en el país de origen (la retención).
  • Cuota que correspondería en España sobre esa misma renta, calculada aplicando los tramos del ahorro.

Tramos del ahorro 2025

Hasta (EUR)Tipo
6.00019%
50.00021%
200.00023%
300.00027%
En adelante30%

El tramo del 30% fue introducido por la Ley 7/2024.

Desglose por país

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.

W-8BEN y convenios de doble imposición

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.

7. Compensación de pérdidas

Art. 49 LIRPF

Las pérdidas patrimoniales que no se hayan compensado en el ejercicio en que se generaron pueden arrastrarse durante los cuatro ejercicios siguientes.

Compensación en la misma categoría

  • Las pérdidas de ganancias patrimoniales (ventas con pérdida) se compensan primero con ganancias del mismo tipo.
  • Las pérdidas de rendimientos del capital mobiliario (si las hubiera) se compensan con rendimientos positivos del mismo tipo.

Compensación cruzada (límite del 25%)

Si después de la compensación en la misma categoría quedan pérdidas pendientes:

  • Las pérdidas de ganancias patrimoniales pueden compensar hasta el 25% de los rendimientos positivos del capital mobiliario (dividendos + intereses).
  • Las pérdidas de rendimientos del capital mobiliario pueden compensar hasta el 25% de las ganancias patrimoniales positivas.

Cómo lo gestiona DeclaRenta

Mediante la opción --prior-losses del CLI, puedes proporcionar un fichero JSON con las pérdidas de ejercicios anteriores. DeclaRenta:

  1. Descarta las pérdidas con más de 4 años de antigüedad (expiradas).
  2. Aplica compensación en la misma categoría (las más antiguas primero).
  3. Aplica compensación cruzada con el límite del 25%.
  4. Añade las pérdidas del ejercicio actual al arrastre si el resultado neto es negativo.

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" }
]

8. Modelo 720

Qué es

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).

Quién debe presentarlo

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:

  • Valores y derechos (acciones, fondos, bonos) — la que DeclaRenta calcula.
  • Cuentas en entidades financieras — no aplica a posiciones del broker.
  • Bienes inmuebles — no aplica a posiciones del broker.

Cada categoría se evalúa de forma independiente. Solo se declaran las categorías que superan el umbral.

Plazo de presentación

Del 1 de enero al 31 de marzo del ejercicio siguiente.

Qué genera DeclaRenta

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:

  • Un registro resumen (tipo 1) con datos del declarante y totales.
  • Un registro detalle (tipo 2) por cada posición con ISIN, país, valor de adquisición, valoración a 31/dic, cantidad y porcentaje de titularidad.
  • Registros de tipo A (alta), M (modificación) o C (cancelación) según si la posición es nueva, ya existía o se ha vendido.

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.

Cómo presentarlo en sede electrónica

  1. Accede a sede.agenciatributaria.gob.es.
  2. Busca "Modelo 720" o navega a Todas las gestiones > Modelos y formularios > 720.
  3. Selecciona TGVI Online (Transmisión de Grandes Volúmenes de Información).
  4. Identifícate con certificado digital, DNIe o Cl@ve PIN.
  5. Sube el fichero generado por DeclaRenta.
  6. Revisa el resumen y confirma el envío.

9. Modelo D-6

Qué es

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.

Quién debe presentarlo

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.

Plazo de presentación

Del 1 al 31 de enero del ejercicio siguiente.

Formulario web AFORIX

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.

Qué genera DeclaRenta

Una guía orientativa de cumplimentación con los datos que necesitarías introducir en AFORIX si confirmas que existe obligación de presentar:

  • ISIN, denominación y país emisor.
  • Código de mercado (NYSE, Xetra, LSE, etc.).
  • Número de títulos a 31 de diciembre.
  • Valor de mercado en EUR al tipo ECB de 31 de diciembre.

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.

Cómo acceder a AFORIX

  1. Accede a sefreca.bde.es/sefreca/.
  2. Selecciona "Modelo D-6 (Inversiones en el exterior)".
  3. Identifícate con certificado digital o Cl@ve.
  4. Introduce cada posición siguiendo la guía generada por DeclaRenta.
  5. Revisa y envía.

10. Modelo 721

Qué es

El Modelo 721 es la declaración informativa de monedas virtuales situadas en el extranjero. Es el equivalente del Modelo 720 para criptoactivos.

Quién debe presentarlo

Cualquier residente fiscal en España que a 31 de diciembre posea criptomonedas en exchanges extranjeros cuyo valor total supere los 50.000 EUR.

Exchanges aplicables

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.

Qué genera DeclaRenta

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.

11. Acciones corporativas

Las acciones corporativas modifican los lotes FIFO sin generar hechos imponibles (salvo excepciones). DeclaRenta las procesa cronológicamente junto con las operaciones de compraventa.

Stock splits y reverse splits

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:

  • La cantidad de cada lote se multiplica (o divide) por el ratio.
  • El precio por acción se ajusta inversamente.
  • El coste total en euros del lote no cambia — es una operación fiscalmente neutra.
  • Las fracciones residuales (sub-acciones) se eliminan automáticamente.

Fusiones (mergers / acquisitions)

Cuando una empresa es adquirida por otra, los lotes del ISIN antiguo se transfieren al ISIN nuevo:

  • La cantidad se ajusta por el ratio de canje.
  • El coste base total se conserva — es un canje fiscalmente neutro.
  • El precio por acción se recalcula sobre la nueva cantidad.
  • La fecha de adquisición original se mantiene.

Spin-offs

En un spin-off, una empresa separa una división como entidad independiente. El coste base del lote original se reparte proporcionalmente:

  • Se crea un nuevo lote para la entidad escindida con una fracción del coste base original.
  • El lote de la empresa matriz reduce su coste base en la misma proporción.
  • La fecha de adquisición del nuevo lote hereda la fecha original del lote padre.
  • La fracción se estima a partir del ratio de distribución (en la práctica debería basarse en valores de mercado el día de la distribución).

Scrip dividends (dividendos en acciones)

Un scrip dividend entrega nuevas acciones en lugar de efectivo. DeclaRenta lo trata como:

  • Un nuevo lote con el coste base que reporta el broker (importe del dividendo equivalente).
  • La fecha de adquisición es la fecha del evento corporativo.
  • Estos lotes entran en la cola FIFO como cualquier compra.

12. Otros tipos de activo

Además de acciones (STK) y fondos (FUND), DeclaRenta procesa estos instrumentos financieros:

Opciones (OPT)

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.

  • Compraventa de opciones: la prima pagada es el coste de adquisición; la prima recibida al vender es el valor de transmisión.
  • Opciones ejercidas: en el futuro, el coste de la prima se integrará en el coste de adquisición de las acciones subyacentes. Actualmente, el ejercicio se procesa como cierre estándar de la posición de opciones.
  • Opciones que expiran sin valor: la prima pagada se declara como pérdida patrimonial total.

La regla anti-churning (Art. 33.5.f) no se aplica a opciones.

Futuros (FUT)

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.

Forex (CASH) — Art. 33.1 LIRPF

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:

  1. Ganancia/pérdida del valor (acciones cotizadas → casillas 0328/0331; resto de elementos → 1633/1637): calculada sobre el precio del activo × tipo ECB en cada fecha.
  2. Ganancia/pérdida FX (casillas 1633/1637): diferencia entre el tipo de cambio al adquirir la divisa y el tipo al disponer de ella.

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.

Bonos y renta fija (BOND)

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).

CFDs (Contratos por Diferencia)

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.

13. Preguntas frecuentes

¿Mis datos salen de mi ordenador?
No. Todo el procesamiento ocurre en tu navegador. Ningún fichero se sube a ningún servidor. La única conexión de red es a la API pública del BCE para obtener tipos de cambio.
¿Qué tipos de cambio se usan?
Los tipos de cambio oficiales diarios del Banco Central Europeo (BCE), obtenidos vía su API SDMX. La normativa fiscal española exige usar tipos oficiales, no los del broker.
¿Qué pasa si compré en un broker y vendí en otro?
DeclaRenta implementa FIFO cross-broker. Si subes ficheros de varios brokers, todas las operaciones del mismo ISIN comparten una única cola FIFO ordenada cronológicamente.
¿DeclaRenta sustituye a un asesor fiscal?
No. DeclaRenta es una herramienta auxiliar de cálculo. Los resultados deben validarse con un profesional fiscal. La responsabilidad de la declaración es siempre del contribuyente.
¿Puedo usar DeclaRenta sin conexión a Internet?
Sí. La aplicación web es una PWA (Progressive Web App) que funciona offline una vez cargada. Sin embargo, necesitarás conexión la primera vez para descargar la aplicación y cada vez que se necesiten tipos de cambio nuevos del BCE.
¿Cómo se tratan las opciones?
Las opciones se procesan con FIFO por símbolo (ya que no tienen ISIN). El multiplicador del contrato se aplica automáticamente al calcular el coste base y los importes de venta. La norma anti-churning no se aplica a opciones.
¿Se soportan los CFDs?
Sí, parcialmente. Los CFDs de acciones e índices en eToro se procesan como ganancias y pérdidas patrimoniales. Los CFDs de criptomonedas no están soportados. Otros brokers de CFDs (como XTB) están planificados para futuras versiones.
¿Los dividendos en especie se incluyen?
Sí. Los scrip dividends (dividendos pagados en acciones) se detectan como acciones corporativas y crean nuevos lotes FIFO con el coste base equivalente al dividendo.
¿Cómo se calcula la deducción por doble imposición?
Para cada país, se compara el impuesto retenido en origen con la cuota española que correspondería sobre esa renta (aplicando los tramos del ahorro). La deducción es el menor de ambos importes. Véase la sección Doble imposición internacional.
¿Puedo procesar varios años a la vez?
Sí. Puedes subir ficheros de varios ejercicios. DeclaRenta los ordena cronológicamente para calcular el FIFO correctamente y luego filtra los resultados al ejercicio seleccionado. Esto es fundamental si tienes posiciones abiertas de años anteriores.
¿DeclaRenta genera el borrador de la renta?
No. DeclaRenta genera los valores numéricos de cada casilla. Debes introducirlos manualmente en Renta Web (sede.agenciatributaria.gob.es) ya que la AEAT no permite importar estos datos por fichero.
¿Qué hago con las pérdidas bloqueadas por anti-churning?
Sí tienes que actuar: no es automático. Se bloquea solo la parte proporcional a las acciones recompradas (el resto de la pérdida se imputa con normalidad). Por el importe bloqueado, marca la casilla «Pérdidas patrimoniales no imputables» en Renta Web. Esa pérdida bloqueada no se suma al coste de la nueva posición: queda diferida y deberás imputarla cuando vendas los valores recomprados. DeclaRenta las muestra resaltadas para que lleves el control.
¿Puedo exportar los resultados?
Sí. Desde la web puedes exportar en JSON o CSV. Desde el CLI también puedes generar un informe en PDF. El JSON incluye todos los detalles de cada operación, dividendo y cálculo.
¿Por qué la ganancia neta no coincide con la diferencia entre el valor de transmisión y el de adquisición?
Si hay pérdidas bloqueadas por la norma anti-churning, la ganancia neta "real" es menor que la aritmética. Las casillas de valor de transmisión (0328/1633) y de adquisición (0331/1637) reflejan los importes brutos; las pérdidas bloqueadas se declaran por separado.
¿Tengo ventas sin lotes previos ("venta sin lotes"). ¿Qué significa?
Significa que DeclaRenta encontró una venta sin compras previas para ese ISIN. Puede deberse a: (a) una posición corta, (b) falta de datos de ejercicios anteriores, o (c) una transferencia de otro broker sin historial. En estos casos, el coste base se asume como 0 EUR y aparece una advertencia.
¿Necesito declarar si mis posiciones no superan 50.000 EUR?
Depende del modelo. El Modelo 720 y 721 requieren superar 50.000 EUR por categoría. El Modelo D-6, desde la Orden ICT/1408/2021, suele limitarse a participaciones del 10% o más en sociedades cotizadas extranjeras. El IRPF (Modelo 100) se declara siempre, independientemente del importe.
¿DeclaRenta maneja criptomonedas?
Parcialmente. Los parsers de Coinbase, Binance y Kraken extraen operaciones de compraventa de criptoactivos. El cálculo FIFO y las ganancias patrimoniales funcionan para cripto. El Modelo 721 está en fase inicial y requiere posiciones manuales.

14. Privacidad y seguridad

Arquitectura sin servidor

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.

Sin analítica, sin tracking, sin telemetría

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.

Única conexión de red

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.

Procesamiento local

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.

Código abierto

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.