OpenLMNP

Software de contabilidad de código abierto (AGPLv3) para el estatus fiscal LMNP francés, con un servidor MCP integrado para contabilidad y declaraciones de impuestos impulsadas por IA.

Documentación

OpenLMNP

Software de contabilidad LMNP de código abierto (Alquiler Amueblado No Profesional)

Gestione sus propiedades en alquiler amueblado, calcule sus amortizaciones y genere su declaración fiscal en régimen real — sin suscripción, en su propio equipo.

Tests Release Licence PHP Laravel Filament Docker Pulls

🚀 Demo en vivo · 📦 Instalación · 📚 Documentación · 🇬🇧 English

Démonstration d'OpenLMNP : tableau de bord, simulateur, projection et télédéclaration

🎯 Pruébelo sin instalar nada — la demo en línea crea un entorno de pruebas efímero y aislado para cada visitante, precargado con 4 años de contabilidad ficticia. Conexión: demo@openlmnp.fr / demo2026.

Índice

¿Por qué OpenLMNP?

El régimen real LMNP es casi siempre más ventajoso que el micro-BIC para un alquiler amueblado, pero exige amortizaciones por componente, una declaración fiscal (2031, 2033) y un FEC conforme. Las opciones habituales tienen cada una su defecto:

OpenLMNPHoja de cálculo caseraSaaS contableExperto contable
CosteGratuito (AGPLv3)GratuitoSuscripción anualHonorarios anuales
Sus datosEn su equipo (autoalojado)En su equipoNube de un terceroEn manos de un tercero
Amortizaciones por componente✅ Automáticas⚠️ Fórmulas que mantener✅✅
Declaración fiscal + FEC✅ Generados❌✅✅
Cálculos al céntimo (bcmath)✅⚠️ Redondeos flotantes✅✅

OpenLMNP automatiza el régimen real de principio a fin y sigue siendo una herramienta de ayuda: para situaciones complejas (copropiedad, IVA para-hotelero, paso a LMP…), se recomienda un experto contable.

Funcionalidades

🏠 Contabilidad y amortizaciones

  • Amortización por componente — obra gruesa, tejado, fontanería, acondicionamientos (duraciones estándar)
  • Obras y mobiliario — amortización dedicada o prorrateada, gestión nuevo/segunda mano
  • Préstamos — cuadro de amortización automático, intereses deducibles
  • Asientos contables — generación automática según el plan contable LMNP
  • Multi-propiedades — dirección, superficies, cuota de residencia principal, valor venal

📋 Fiscal y declaraciones

  • Ejercicios encadenados — arrastres N−1, amortizaciones diferidas, limitación
  • Simulador micro-BIC vs régimen real — con veredicto cifrado
  • Proyección plurianual — tabla de 5 a 20 años, año de cambio de régimen
  • Declaración telemática interactiva — líneas Cerfa 2031, 2033-A/B/C/D, 2042-C-PRO con botones «Copiar»
  • Declaración fiscal en PDF — generación completa
  • FEC conforme — artículo A.47 A-1 del LPF, 18 columnas, formato legal

🔌 Importación e integraciones

  • Importación CSV Airbnb / Booking — formatos FR/EN, detección de duplicados
  • Exportación CSV — ingresos, gastos, declaración telemática
  • API MCP (45 herramientas) — controle su contabilidad desde un asistente de IA (Claude, etc.)
  • Actualizaciones automáticas — notificación y despliegue desde GitHub

🛡️ Comodidad y seguridad

  • Multi-usuario — cada propietario ve únicamente sus datos
  • Asistentes guiados — incorporación, creación de propiedad, cierre fiscal, préstamo, importación anual
  • Justificantes — documentos subidos para gastos, obras y mobiliario
  • Guía integrada e insignias de progreso — puesta en marcha, seguimiento regular, declaración anual
  • Modo oscuro — nativo Filament
  • 234 pruebas automatizadas — Pest PHP, 629 aserciones (detalle)

Capturas de pantalla

SimuladorProyecciónDeclaración telemática
Simulateur micro-BIC vs réelProjection pluriannuelleAide à la télédéclaration

Otras capturas: panel de control · gastos

Documentación

DocumentoContenido
InstalaciónAutoalojamiento con Docker: build, run, volúmenes de persistencia, variables de entorno, actualización y copia de seguridad
FuncionalidadesAmortización por componente, FEC, declaración fiscal 2031/2033, importación CSV, simulador, multi-propiedades, préstamos, justificantes
Modo demostraciónActivar y usar el modo demo multi-usuario (entorno de pruebas efímero aislado por visitante)
FAQPreguntas frecuentes: gratuidad, confidencialidad de datos, régimen real vs micro-BIC, copias de seguridad…
Guía fiscal LMNP / AirbnbReglas fiscales del régimen real: amortizaciones, deducciones, límites, reforma 2026
Cobertura de pruebasDetalle de las 234 pruebas automatizadas, suite por suite
Guía de diseño de UIDecisiones de diseño de la interfaz Filament

Para contribuir al proyecto, consulte CONTRIBUTING.md.

Stack técnico

ComponenteTecnología
FrameworkLaravel 13
UI de administraciónFilament 5
InteractividadLivewire 4
Base de datosSQLite (PostgreSQL opcional)
PDFDomPDF
Cálculos financierosPHP bcmath (precisión decimal)
PruebasPest PHP
DespliegueDocker

Instalación rápida (Docker)

Con la imagen oficial manganate06/openlmnp:

docker run -d --name openlmnp -p 8090:8000 \
  -v openlmnp-database:/var/www/html/database \
  -v openlmnp-storage:/var/www/html/storage \
  --restart unless-stopped manganate06/openlmnp:latest

O construyendo la imagen desde las fuentes:

git clone https://github.com/manganate006/openlmnp.git
cd openlmnp
docker build -t openlmnp .
docker run -d --name openlmnp -p 8090:8000 --restart unless-stopped openlmnp

Acceso: http://localhost:8090 Primera conexión: cree su cuenta en /register — la primera cuenta se convierte en administrador, y el registro se cierra automáticamente después.

Despliegue en un PaaS (Coolify, Dokploy, Easypanel)

En un PaaS autoalojado, el archivo docker-compose.coolify.yml proporciona un despliegue listo para usar: dominio, certificado TLS y proxy inverso están configurados por la plataforma. En Coolify: New Resource → Docker Compose (Empty), pegar el archivo, Deploy. Detalles y puntos de atención en docs/INSTALLATION.md.

Instalación LXC Proxmox (script comunitario)

En un host Proxmox VE, crea un contenedor LXC listo para usar con un solo comando:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/manganate006/openlmnp/main/community-scripts/ct/openlmnp.sh)"

Debian 13 · nginx + PHP 8.4-FPM · SQLite. Se genera una contraseña de administrador aleatoria durante la instalación y se guarda en /opt/openlmnp/admin_credentials.txt.

ℹ️ Requiere un repositorio público con una release publicada (el script obtiene la última release de GitHub).

Instalación para desarrollo

git clone https://github.com/manganate006/openlmnp.git
cd openlmnp
composer install
cp .env.docker .env
php artisan key:generate
touch database/database.sqlite
php artisan migrate:fresh --seed
php artisan serve

Configuración

En la primera visita, cree su cuenta en /register: se convierte en administrador, y luego la página de registro se cierra automáticamente (instancia personal por defecto — ajustable mediante ALLOW_REGISTRATION). Añada después su SIREN en su perfil para los documentos fiscales.

VariableDescripciónValor por defecto
DB_CONNECTIONBase de datossqlite
DB_DATABASERuta SQLitedatabase/database.sqlite
APP_LOCALEIdiomafr
ALLOW_REGISTRATIONRegistro: auto (hasta la primera cuenta), true (siempre), false (nunca)auto
FEEDBACK_ENABLEDInvitación puntual a dar su opinión sobre el software (ver más abajo)true

Dar su opinión (y cómo desactivarlo)

Después de un tiempo de uso real, la aplicación propone una vez decir qué piensa del software: un pulgar, y si lo desea una palabra. Es el único retorno que recibe un proyecto desarrollado en tiempo libre.

Nada sale de su instancia. Sin FEEDBACK_FORWARD_EMAIL, su opinión simplemente se guarda en su propia base de datos; la pantalla de confirmación le propone entonces enviarla usted mismo, con su cliente de correo, si lo desea. Sin envío automático, sin llamadas salientes.

Para desactivarlo por completo:

FEEDBACK_ENABLED=false

Los umbrales son ajustables sin tocar el código: FEEDBACK_MIN_SECONDS (240), FEEDBACK_MIN_ACTIONS (1), FEEDBACK_COOLDOWN_DAYS (30), FEEDBACK_AUDIENCES.

Emails (opcional)

Ningún email se envía por defecto (MAIL_MAILER=log) — la aplicación funciona muy bien sin ello. Para activar el enlace «Contraseña olvidada», conecte el SMTP de su elección mediante las variables MAIL_* (el remitente es su propia dirección; SPF/DKIM los gestiona su proveedor). Y en caso de olvido sin SMTP, desde el servidor:

php artisan openlmnp:reset-password vous@exemple.fr

📖 Referencia completa — todas las variables, volúmenes de persistencia, cuentas, SMTP paso a paso, copia de seguridad: docs/INSTALLATION.md

Pruebas

Tests

234 pruebas Pest PHP, 629 aserciones — servicios de cálculo, páginas Filament, aislamiento multi-usuario, modo demo. Detalle suite por suite: docs/TESTS.md.

# Lancer tous les tests
vendor/bin/pest

# Par catégorie
vendor/bin/pest --filter="Depreciation"
vendor/bin/pest --filter="FiscalYear"
vendor/bin/pest --filter="Filament"

Contribución

¡Las contribuciones son bienvenidas! Por favor, abra una issue antes de enviar un PR.

# Fork + clone
git checkout -b feature/ma-fonctionnalite
# ... modifier ...
vendor/bin/pest  # vérifier que les tests passent
git commit -m "feat: description"
git push origin feature/ma-fonctionnalite
# Ouvrir une PR

💛 ¿Cómo apoyarnos?

OpenLMNP se desarrolla en mi tiempo libre. Si la herramienta le resulta útil, así puede ayudarme a continuar:

  • ⭐ Ponga una estrella en el repositorio — ayuda a que otros arrendadores de amueblados descubran el proyecto
  • 💛 Hágase sponsor a través de GitHub Sponsors — unos euros al mes financian el tiempo de desarrollo
  • 🐛 Informe de un error o proponga una funcionalidad mediante las issues
  • 🔧 Contribuya con código — consulte CONTRIBUTING.md

¡Gracias a todas las personas que apoyan el proyecto!

Agradecimientos

OpenLMNP debe mucho a quienes lo han instalado, lo han contrastado con su propio expediente y nos han dicho qué fallaba: @cocool97, @ptitzgeg-on-git, @ovrtn y @DamienFr. El detalle de sus contribuciones (correcciones, informes, seguridad) está en la página Agradecimientos.

Licencia

AGPLv3 — Software libre. Puede usarlo, modificarlo y redistribuirlo a condición de compartir las modificaciones bajo la misma licencia.

Créditos


OpenLMNP es una herramienta de ayuda a la contabilidad. No sustituye a un experto contable para los casos complejos.