git clone https://github.com/TUSUARIO/declaracion-irpf-rentas-extranjeras.git
cd declaracion-irpf-rentas-extranjeras
# Dependencias Python
pip install -r requirements.txt
# hacienda-cli (clona + instala automáticamente)
bash .claude/skills/declaracion-irpf-rentas-extranjeras/scripts/setup_hacienda_cli.shCopia la plantilla:
cp examples/ejemplo-1-alemania-retorno.json mis-datos.jsonEdita mis-datos.json con tus datos reales:
- declarante: NIF, nombre, fecha nacimiento, estado civil, sexo
- codigo_ca: 12=Madrid, 17=Valencia, 09=Cataluña... (ver
references/ccaa-tramos-2025.md) - pagadores_trabajo: un bloque por cada empresa (española y extranjera)
- capital_mobiliario: intereses bancarios
- dobimpint: impuestos pagados en el extranjero (para Art. 80 LIRPF)
- resultados: vacío en la primera iteración
python .claude/skills/declaracion-irpf-rentas-extranjeras/scripts/simular_irpf.py mis-datos.jsonEsto te da una estimación del resultado. No es oficial (lo hace AEAT) pero debería estar dentro de ±500 €.
Abre 2 terminales. En la primera:
cd herramientas/hacienda-cli
node dist/index.js loginSe abrirá un Chromium. Autentícate con Cl@ve. DEJA EL CHROMIUM ABIERTO.
En la segunda terminal:
cd herramientas/hacienda-cli
node dist/index.js download 100Genera 2 ficheros:
datos-fiscales-100-2025.html- lo que AEAT ya sabe de tiborrador-100-2025.pdf- el borrador actual
Revisa el HTML para confirmar que coincide con los datos de tus pagadores españoles. Los extranjeros no estarán (AEAT no los tiene).
python .claude/skills/declaracion-irpf-rentas-extranjeras/scripts/generar_xml.py mis-datos.json --output declaracion.xmlpython .claude/skills/declaracion-irpf-rentas-extranjeras/scripts/validar_xml.py declaracion.xml --xsd data/Renta2025-fixed.xsdDebe decir [OK] XML válido contra el esquema oficial AEAT.
cd herramientas/hacienda-cli
node dist/index.js upload 100 ../../declaracion.xmlPrimer intento: EDFI devolverá errores ERES con valores calculados. Esto es normal.
Copia los valores ERES devueltos a la sección resultados de mis-datos.json. Regenera el XML y vuelve a subir:
python .claude/skills/declaracion-irpf-rentas-extranjeras/scripts/generar_xml.py mis-datos.json --output declaracion.xml
cd herramientas/hacienda-cli
node dist/index.js upload 100 ../../declaracion.xmlRepite 2-3 veces hasta que EDFI lo acepte sin errores ERES.
En el Chromium, ve a Renta Web (pestaña EDFI) y verifica:
- Los dos pagadores aparecen
- Casilla 0013 = suma cotizaciones SS (española + extranjera)
- Casilla 0588 = deducción por doble imposición (CRÍTICO)
- Resultado final coincide con el calculado
Debe aparecer 00000 - La comprobación se realizó correctamente. No existen errores.
- Si todo OK → "Presentar declaración" + firmar con Cl@ve
- Si tienes dudas → consulta asesor fiscal (tienes hasta 30 junio)
- Presentar antes del 30 junio (o 25 junio si domicilias el pago)
- Si fraccionas pago 60/40: el 2º plazo se carga en noviembre