Introducción
Beancount es un sistema de contabilidad por partida doble de código abierto que utiliza archivos de texto plano como libro mayor. Hace hincapié en la simplicidad, la transparencia y la flexibilidad a la hora de hacer un seguimiento de las finanzas. Fava es un potente front-end web para Beancount que ofrece una interfaz interactiva para ver informes, visualizaciones y gestionar tu libro mayor. En este informe, exploramos las capacidades principales de Beancount y Fava, y cómo lograr analítica financiera en tiempo real o casi en tiempo real con estas herramientas. Cubrimos consejos de configuración para la automatización y la actualización de datos, las funciones de visualización de Fava (para vistas instantáneas de flujo de caja y detección de tendencias), la integración con paneles de control externos (Grafana, Metabase, etc.), ejemplos de paneles y complementos personalizados, casos de uso en finanzas personales y de pequeñas empresas, comparaciones con otras plataformas (Power BI, QuickBooks) y los pros y contras de usar Fava+Beancount para obtener información basada en datos.
Explora un libro mayor de ejemplo en vivo:

Explora el libro mayor en vivo →
Capacidades principales de Beancount y Fava
Beancount (Motor de contabilidad en texto plano)
- Libro mayor por partida doble en texto plano: Beancount almacena las transacciones en un único archivo de texto
.beancount(o varios archivos incluidos entre sí). Cada transacción debe cuadrar (total de débitos = total de créditos) entre las cuentas, lo que garantiza la integridad contable. El formato de texto plano significa que tus datos son legibles por humanos, controlables por versiones y no están atados a ningún proveedor. - Cuentas jerárquicas y flexibles: Puedes definir cualquier cuenta (por ejemplo,
Assets:Bank:Checking,Expenses:Food:Coffee) en una jerarquía. Beancount no impone un plan contable concreto, por lo que sirve para finanzas personales, libros de pequeñas empresas, inversiones, etc. – es "flexible: sirve para finanzas personales, contabilidad de pequeñas empresas, cripto, inversiones en bolsa y más." - Múltiples divisas y materias primas: Beancount tiene soporte de primera clase para múltiples divisas y materias primas (por ejemplo, acciones, cripto). Puedes registrar transacciones en distintas divisas, definir tipos de cambio (directivas de precio) y hacer seguimiento de las bases de coste. Puede producir informes "a coste" o "a valor de mercado" si se proporcionan datos de precios. Esto lo hace adecuado para carteras y finanzas internacionales.
- Comprobaciones y balances automatizados: El sistema admite aserciones de saldo (puedes declarar cuál debería ser el saldo de una cuenta en una fecha, y Beancount dará error si no coincide) y transacciones de saldo para cierre de libros. También admite asientos de apertura/cierre de patrimonio y cálculo de resultados retenidos para cierres de periodo. Todo esto ayuda a mantener la coherencia de los libros y a detectar errores a tiempo.
- Potente motor de consultas e informes: Beancount incluye un lenguaje de consulta BQL (Beancount Query Language). Usa
bea querypara BQL en la terminal ybea reportpara los estados estándar; instala el inicio rápido de la CLI en lugar de los antiguos scripts de consola del proyecto original. Puedes consultar el libro mayor para informes personalizados (por ejemplo, lista de gastos por beneficiario, flujo de caja de un periodo) – tratando esencialmente el libro mayor como una base de datos. Sigue siendo rápido incluso con miles de transacciones. Exporta a CSV conbea query -f csv -o report.csv "BQL", sustituyendoBQLpor tu consulta. Consulta Plantillas de informes financieros para ejemplos completos. - Extensibilidad mediante complementos: Beancount está escrito en Python y permite complementos personalizados para ampliar su funcionalidad. Los complementos pueden imponer reglas o cálculos adicionales cuando se procesa el archivo. (Por ejemplo, hay complementos para gestionar lotes fiscales, o para asegurar que ninguna compra carezca de coste). El sistema de complementos y la API de Python permiten a los usuarios avanzados programar comportamientos personalizados o integrar Beancount con otros sistemas.
- Importadores para datos externos: Una característica práctica clave es el marco de importadores del paquete separado
beangulp(no existe un módulobeancount.ingesten Beancount 3.2.3). Escribes una clase importadora que hereda debeangulp.Importere implementaidentify,extractyaccount. Analiza un archivo descargado (CSV, OFX, extractos PDF, etc.) y lo convierte en asientos de Beancount. Esto es esencial para la automatización (hablaremos más de ello más adelante). - Auditable y compatible con el control de versiones: Al ser texto plano, puedes mantener tu libro mayor en Git u otro sistema de control de versiones. Cada cambio es transparente y tienes un historial completo de ediciones. Esto facilita las auditorías o la revisión de cambios (muchos usuarios confirman cada día los cambios en un repositorio Git, lo que proporciona un registro a prueba de manipulaciones de todos los asientos financieros). Este nivel de transparencia es un diferenciador importante frente al software contable cerrado – "sin dependencia de SaaS: solo contabilidad limpia y transparente con informes potentes."
Fava (Interfaz Web para Beancount)
- Interfaz web interactiva: Fava proporciona un servidor web local que renderiza tu libro mayor de Beancount en una interfaz rica. Muestra los informes principales (cuenta de resultados, balance, etc.), los registros de cuentas y los diarios en el navegador con controles interactivos. La interfaz es dinámica y fácil de usar en comparación con la línea de comandos. La inicias con un simple
fava yourfile.beancounty obtienes una aplicación web para tus libros. - Gráficos incluidos: Fava genera gráficos para ayudarte a visualizar tus datos. Por ejemplo, incluye un gráfico de líneas de patrimonio neto a lo largo del tiempo, gráficos de barras de ingresos frente a gastos por mes y gráficos de sectores/treemap para desgloses de gastos. Estas visualizaciones se actualizan con tus datos y admiten distintas vistas (por ejemplo, "a coste" frente a "valor de mercado" para inversiones). Exploraremos estas capacidades de visualización en detalle más adelante.
- Filtrado y búsqueda: En la parte superior de las páginas de Fava, una barra de filtros te permite segmentar y analizar tus datos en tiempo real. Puedes filtrar por tiempo (por ejemplo, año, trimestre, mes), por expresión regular de cuenta, por beneficiario, por narración o por etiquetas/enlaces. Esto facilita la inspección de datos en tiempo real – por ejemplo, filtrar rápidamente a "Tag=Travel" y "Year=2025" para ver todos los gastos de viaje en 2025, con totales. La interfaz admite consultas complejas a través de esta barra de filtros o mediante la página Query (donde puedes ejecutar directamente consultas BQL).
- Soporte de múltiples archivos y consolidación: Fava puede cargar varios archivos de Beancount a la vez (útil si separas libros) y cambiar entre ellos. También puede consolidarlos si es necesario (por ejemplo, libros personales y de empresa vistos juntos).
- Entrada y edición de datos: De forma única, Fava no es de solo lectura – tiene un editor y un formulario de entrada de transacciones. Puedes añadir nuevas transacciones a través de un formulario web (insertará el asiento en tu archivo .beancount). También puedes abrir el archivo fuente en un editor externo desde Fava. Fava también admite atajos de teclado para usuarios avanzados. Esto convierte a Fava en un sistema contable ligero en el que puedes introducir y ver datos desde la misma interfaz.
- Informes y desglose de cuentas: Fava proporciona informes contables estándar: cuenta de resultados (pérdidas y ganancias), balance, balance de comprobación y una lista de posiciones para inversiones. El balance y la cuenta de resultados son interactivos – puedes hacer clic en una cuenta para profundizar en sus detalles, o alternar entre ver a coste y a valor de mercado para los activos. Fava también muestra "ganancias no realizadas" para inversiones si tienes datos de precios. Genera una vista de diario de todos los asientos y permite filtrar ese diario por diversos criterios (ideal para encontrar transacciones específicas).
- Gestión de documentos: Si adjuntas recibos o extractos, Fava ayuda a organizarlos. Beancount tiene la noción de una carpeta de documentos, y Fava te permite arrastrar y soltar archivos sobre cuentas o transacciones – los almacenará y añadirá un asiento de documento en tu libro mayor. Esto es útil para mantener los documentos de respaldo vinculados con los datos de tu libro mayor.
- Personalización mediante extensiones: Fava se puede ampliar con complementos (escritos en Python) para añadir nuevos informes o funcionalidad. Algunas extensiones vienen incluidas (por ejemplo, un informe de lista de cartera para inversiones). Hablaremos de las extensiones personalizadas más adelante, pero, en esencia, el diseño de Fava permite inyectar nuevas páginas, e incluso JavaScript personalizado, a través de su API de extensiones. Esto significa que si cierto análisis o panel no viene integrado, un usuario avanzado puede añadirlo.
- Rendimiento: Fava es eficiente – recarga los datos en memoria y sirve las páginas rápidamente. El análisis subyacente de Beancount es rápido, por lo que los libros personales típicos se cargan en uno o dos segundos. En la práctica, Fava puede manejar libros personales de muchos años, aunque archivos extremadamente grandes (decenas de miles de transacciones) podrían beneficiarse de cierta optimización (por ejemplo, archivar asientos antiguos).
- Acceso web y movilidad: Al ejecutar Fava en un servidor o incluso en tu portátil, puedes acceder a tus finanzas desde cualquier navegador. Algunos usuarios alojan Fava en un servidor privado o una Raspberry Pi para poder consultar sus finanzas sobre la marcha (posiblemente protegido con contraseña o VPN, ya que Fava no tiene autenticación integrada). Esto te da esencialmente una "aplicación web" autoalojada para tus finanzas, sin entregar tus datos a un tercero.
En resumen, Beancount proporciona una base sólida para una contabilidad transparente basada en texto, con reglas rigurosas de partida doble y soporte multidivisa. Fava se construye sobre eso ofreciendo una interfaz accesible con información inmediata (informes, gráficos) y la capacidad de interactuar con tus datos. Juntos forman un sistema contable y analítico muy flexible que controlas de principio a fin.
Análisis en Tiempo Real (o Casi en Tiempo Real) con Beancount y Fava
Lograr analítica en tiempo real o casi en tiempo real con Beancount y Fava implica automatizar el flujo de datos hacia tu libro mayor y garantizar que las herramientas muestren información actualizada. De forma predeterminada, Beancount es un proceso por lotes (añades asientos al archivo y luego ves los informes), y Fava detectará los cambios y requerirá una actualización. Sin embargo, con la configuración adecuada, puedes agilizar las actualizaciones para que las nuevas transacciones y cambios aparezcan casi al instante.
Detección de cambios en archivos: Fava monitoriza el archivo del libro mayor en busca de cambios. Si editas el archivo .beancount (o los archivos incluidos) en un editor, la página muestra una notificación de "File change detected. Click to reload." Fava consulta periódicamente su endpoint get_changed. Cuando el vigilante informa de un cambio, Fava recarga el libro mayor en el servidor y la notificación ofrece un clic para actualizar la vista. En la práctica, esta recarga es muy rápida (normalmente menos de un segundo para libros típicos). Esto significa que Fava puede servir como panel de control en vivo si tu archivo del libro mayor se actualiza con frecuencia. De forma predeterminada espera tu clic para no interrumpir tu vista.
Pipeline de importación/actualización continua: Para obtener datos en tiempo real, necesitas automatizar la adición de transacciones al archivo de Beancount. Hay algunas estrategias comunes:
-
Tareas de importación programadas (Cron): Muchos usuarios configuran una tarea cron (o tarea programada) para obtener nuevas transacciones de las entidades financieras periódicamente (por ejemplo, cada noche, o cada hora) y añadirlas al libro mayor. Por ejemplo, podrías ejecutar un importador
beangulpsobre la última descarga bancaria (CSV u OFX). Un usuario de Beancount construyó un pipeline de automatización tal que sus libros se actualizaban solos: "ver mi libro contable actualizándose sin que yo lo toque, en un formato abierto, me produce pura alegría". Esto se logró conectándose a API bancarias y programando actualizaciones periódicas. Un script personalizado de Python que use API bancarias (por ejemplo, Plaid) puede ejecutarse según una programación y escribir nuevos asientos en el libro mayor. Valida cada ejecución conbea checkantes de que toque tu archivo principal. Tras cada importación programada, si tienes Fava en ejecución, basta con actualizar Fava para ver los nuevos datos. -
Vigilantes de archivos y disparadores: En lugar de programaciones basadas en el tiempo, puedes usar vigilantes de archivos para reaccionar a eventos. Por ejemplo, si tu banco puede enviarte un extracto diario por correo o dejas un CSV en una carpeta, un script podría detectar ese archivo (usando
inotifyen Linux o similar) y ejecutar inmediatamente la rutina de importación, y luego indicar a Fava que recargue. Aunque Fava todavía no admite enviar una recarga en vivo al navegador, al menos tendrías los datos actualizados para que la próxima vez que consultes la página o hagas clic en recargar, estén al día. Algunos proyectos de la comunidad van más allá: para ledger (un primo de Beancount), un usuario creó un pequeño servidor que expone los datos de ledger a Grafana en tiempo real, lo que demuestra que se puede adoptar un enfoque similar con Beancount – esencialmente, construir un demonio que alimente tus paneles de control continuamente. -
Integración directa con API: En lugar de pasar por archivos, los usuarios avanzados podrían conectarse directamente a API bancarias (como Plaid o API regionales de Open Banking) para obtener transacciones con frecuencia. Una persona motivada puede programar importaciones "en vivo" en un bucle (con la limitación de tasa adecuada) – consultando efectivamente al banco en busca de nuevos datos cada pocos minutos. Nada te impide "registrarte en la API de Plaid y hacer lo mismo [automatización] localmente". Cada nueva transacción puede añadirse al archivo de Beancount a medida que llega. Con este enfoque, Fava se convierte verdaderamente en un panel de control en tiempo real para tus cuentas, rivalizando con el feed actualizado de las aplicaciones comerciales.
Actualización de datos en Fava: Una vez que tus datos se actualizan, conseguir que Fava los muestre es sencillo: una actualización del navegador (F5) o hacer clic en la notificación de recarga cargará el último estado del libro mayor. Ten en cuenta que fava --debug no envía los cambios del libro mayor al navegador. Su texto de ayuda es "Turn on debugging". Ejecuta el depurador de Werkzeug y el recargador de código para el propio código de Fava y activa la recarga automática de plantillas Jinja. Eso recarga el código del servidor y las plantillas de página durante el desarrollo de extensiones. No tiene relación con el vigilante de archivos que detecta cambios en el libro mayor. Alternativamente, si estás construyendo un front-end personalizado, podrías hacer que consulte el endpoint get_changed de Fava y se actualice cuando informe de nuevos datos.
Cálculos instantáneos: El rápido análisis de Beancount significa que incluso si actualizas tu archivo del libro mayor cada pocos minutos, el tiempo entre la obtención de datos → actualización del archivo → recarga de Fava es corto. Por ejemplo, un usuario señala que recargar Fava después de editar el archivo "apenas se nota... definitivamente menos de un segundo" para libros de tamaño razonable. Por lo tanto, puedes mantener una ventana de Fava abierta y pulsar actualizar periódicamente para simular un panel de control en vivo. (Para una experiencia realmente en vivo, se podría crear un pequeño script para actualizar automáticamente el navegador o usar la función de actualización cada N segundos del navegador).
Conciliación y alertas: Para confiar en los datos en tiempo real, también conviene conciliar los saldos con frecuencia. Beancount lo facilita con aserciones de saldo y un "indicador de actualización". De hecho, Fava colorea las cuentas en verde, amarillo o rojo cuando la directiva open lleva metadatos fava-uptodate-indication. El color refleja si las comprobaciones de saldo recientes cubren los últimos asientos de la cuenta. Esto se puede usar para ver rápidamente si el saldo de una cuenta en el libro mayor coincide con el último extracto del banco. En una configuración casi en tiempo real, podrías automatizar comprobaciones diarias de saldo (de modo que cada mañana, el libro mayor tenga el saldo de cierre de ayer del banco para cada cuenta). El indicador de Fava te diría entonces si tu importación automática se dejó algo o si hay una discrepancia, dando confianza en que los datos "en vivo" que ves son precisos.
Ejemplo de automatización: Supongamos que quieres actualizaciones diarias de flujo de caja. Podrías configurar una tarea cron que se ejecute a las 3 a.m. cada noche: ejecuta un script de Python que usa la API de tu banco para obtener las transacciones del último día, las escribe en import_today.beancount y luego añade ese archivo a tu libro mayor principal. También escribe una aserción de saldo para el fin del día. Cuando te despiertes, abres Fava – muestra todas las transacciones hasta ayer, y ves actualizados los ingresos/gastos del mes actual. Si haces un gasto durante el día, podrías añadirlo manualmente (por ejemplo, mediante el formulario de nueva transacción de Fava en tu teléfono), o esperar a la importación nocturna. Este enfoque híbrido (mayoritariamente automatizado, con capacidad de añadir manualmente casos puntuales) ofrece una imagen casi en tiempo real. Otro enfoque es dejar abierta la página Journal de Fava y usarla como registro: a medida que gastas, registras rápidamente la transacción (como anotar en una chequera) – entonces tú eres el feed en tiempo real. Esto es más manual, pero algunos usuarios disfrutan de la concienciación que aporta. Para actualizaciones verdaderamente en streaming sin pasos manuales, tendrás que invertir en scripting y posiblemente usar API de terceros como se ha comentado.
En resumen, combinando la automatización de importación de Beancount con la rápida actualización de Fava, puedes obtener datos financieros casi en tiempo real. Puede que no sea "fácil con solo pulsar un botón" lograr el mismo nivel de feed en vivo que un servicio como QuickBooks (que extrae automáticamente los feeds bancarios), pero sí es posible – y, lo que es más importante, conservas el control total y la transparencia del proceso. Como señaló un defensor de la contabilidad en texto plano, un poco de esfuerzo por adelantado puede dar como resultado un sistema automatizado que es "mucho mejor que las soluciones comerciales, y mucho más flexible y extensible". En la siguiente sección, veremos cómo las capacidades de visualización de Fava te permiten dar sentido inmediatamente a estos datos actualizados, convirtiendo transacciones en bruto en información útil.
Precios gestionados para valoraciones alojadas
Live Prices proporciona cotizaciones de valoración compatibles a los libros alojados de Beancount.io. El cargador busca nuevos datos cuando un libro mayor se carga después de la ventana de actualización de cinco minutos; una observación del proveedor puede ser más antigua. Esto no es un feed en streaming.
Los controles de Fava descritos aquí pertenecen a Fava. Añadir un include gestionado no añade esos controles al visor alojado ni convierte una vista de coste en una vista de valor de mercado. Fava original necesita archivos de precios locales. Una versión compatible de bea puede exportarlos; consulta la guía de configuración para la compatibilidad.
Capacidades de Visualización en Fava (Flujos de Caja, Tendencias, Inspección en Tiempo Real)
(GitHub - beancount/fava: Fava - interfaz web para Beancount) El informe de cuenta de resultados de Fava (en la interfaz web) admite visualizaciones ricas como treemaps (en la imagen) y gráficos sunburst para obtener información rápida sobre la composición de ingresos y gastos. En este treemap, cada rectángulo representa una categoría de gasto, dimensionada por su importe – puedes ver al instante que Rent (el gran bloque verde) domina los gastos. La barra de filtros superior y los controles (arriba a la derecha) permiten cambiar la divisa, el tipo de gráfico y el periodo temporal (por ejemplo, ver datos mensuales). Fava también proporciona gráficos de líneas (por ejemplo, patrimonio neto a lo largo del tiempo) y gráficos de barras (por ejemplo, ingresos frente a gastos por mes) para ayudar a detectar tendencias en tus datos financieros.
Una de las mayores fortalezas de Fava es convertir los datos del libro mayor en informes visuales e interactivos al instante. Tan pronto como se carga el libro mayor, Fava genera gráficos que facilitan comprender los flujos de caja y las tendencias de un vistazo:
-
Treemap/sunburst de ingresos y gastos: En la página de cuenta de resultados, Fava puede mostrar tus ingresos y gastos como un diagrama treemap o sunburst. Son excelentes para la visualización de flujos de caja "de un vistazo". Por ejemplo, si tus gastos mensuales se muestran como un treemap, el área de cada rectángulo corresponde a la magnitud de cada categoría de gasto. Los bloques grandes muestran inmediatamente dónde se fue la mayor parte de tu dinero (por ejemplo, alquiler o hipoteca, impuestos, etc.), mientras que los bloques más pequeños muestran gastos menores. Esto es extremadamente útil para detectar tendencias en el gasto – si el bloque "Dining Out" ha ido creciendo cada mes, lo notarás visualmente. Puedes cambiar a un gráfico sunburst para ver desgloses jerárquicos (por ejemplo, el anillo exterior podría mostrar subcategorías como Groceries frente a Restaurants dentro de la categoría Food). Estos gráficos se actualizan para el periodo que hayas filtrado (un mes, año hasta la fecha, etc.), dándote una visualización instantánea del flujo de caja para ese periodo. Un usuario del foro de contabilidad en texto plano señaló: "Uso mucho los treemaps de ingresos y gastos. Dan una gran sensación visual de nuestros movimientos fiscales." – este tipo de comprensión inmediata es exactamente lo que buscan los gráficos de Fava.
-
Patrimonio neto y saldo a lo largo del tiempo: Fava proporciona un gráfico de líneas del patrimonio neto a lo largo del tiempo (en la página "Balance Sheet" o "Statistics"). Este gráfico representa la suma de tus activos menos pasivos en cada punto temporal (por día, semana o mes). Es invaluable para detectar tendencias – puedes ver la trayectoria de tus finanzas (por ejemplo, en ascenso constante, o con caídas en ciertos momentos). Si tienes inversiones, puedes alternar entre mostrar el valor a coste y a mercado (si se registran datos de precios) – por ejemplo, podrías ver que tu patrimonio neto a valor de mercado fluctúa con los precios de las acciones, mientras que a coste es más suave. Fava también puede mostrar los saldos de las cuentas a lo largo del tiempo. Si haces clic en una cuenta (digamos Assets:Bank:Checking), la página de la cuenta muestra un gráfico del historial de saldo de esa cuenta. Puedes inspeccionar al instante cómo se mueve tu cuenta de efectivo – lo que es efectivamente un gráfico de flujo de caja (la pendiente de la línea de saldo indica el flujo de caja neto). Si va en descenso, sabes que estás gastando más de lo que ingresas en ese periodo. Examinando estas tendencias, podrías detectar patrones como "cada diciembre mis ahorros bajan (gastos navideños)" o "mis inversiones crecieron bruscamente este trimestre".
-
Gráficos de barras para comparación periódica: En la vista de cuenta de resultados, Fava tiene pestañas para "Monthly Profit", "Monthly Income", "Monthly Expenses", etc. Seleccionarlas muestra gráficos de barras por mes. Por ejemplo, Monthly Net Profit mostrará el superávit/déficit de cada mes como una barra, facilitando la comparación del rendimiento entre meses. Puedes identificar rápidamente los valores atípicos (por ejemplo, una gran barra negativa en abril significa que ese mes tuvo una pérdida/gasto inusual). De forma similar, el gráfico de barras de "Monthly Expenses" apila o agrupa los gastos por categoría por mes, de modo que puedes ver qué categorías fluctúan. Esto es ideal para detectar tendencias a lo largo del tiempo – por ejemplo, podrías notar que tus gastos de "Travel" se disparan cada verano, o que las facturas de "Utilities" son más altas en invierno. Fava te ofrece esencialmente algunas de las capacidades de una aplicación de presupuestación (seguimiento de tendencias) pero con total personalización (ya que tú defines las categorías y cómo se agrupan).
-
Filtrado en tiempo real e inspección de datos: Las visualizaciones de Fava no son estáticas; funcionan en conjunto con el filtrado de Fava. Supongamos que quieres inspeccionar un escenario específico: "¿Cómo se ven mis flujos de caja trimestrales solo para mis cuentas de empresa?" Puedes establecer el filtro de tiempo en Q1 2025 y filtrar las cuentas a tu jerarquía Business – Fava actualizará al instante los gráficos para mostrar el resultado neto, el treemap de gastos, etc., pero solo para ese subconjunto. Este recorte interactivo significa que puedes hacer análisis ad hoc muy rápidamente, sin escribir consultas. La vista Journal también admite filtrado en vivo: puedes buscar por beneficiario o por subcadena de la narración y ver inmediatamente una lista filtrada de transacciones. Si estás viendo datos en tiempo real (digamos que acabas de importar las transacciones de la semana pasada), podrías filtrar por una etiqueta como
#uncategorizedpara ver las nuevas transacciones que podrían necesitar categorización, o por@pending(si marcas los asientos pendientes) para ver qué sigue sin conciliar. Esta capacidad de inspección en tiempo real también ayuda a garantizar la calidad de los datos, porque puedes aislar y abordar anomalías sobre la marcha. -
Estado de flujos de efectivo (indirecto): Aunque Beancount/Fava no produce un estado de flujos de efectivo formal (desglose de operación/inversión/financiación) de serie, puedes imitarlo con consultas personalizadas o estructurando las cuentas. Por ejemplo, podrías etiquetar ciertas transacciones o usar cuentas específicas para inversión y financiación, y luego consultar los totales. La interfaz de consultas de Fava ejecuta BQL como
SELECT sum(position) WHERE account ~ 'Assets:Bank:Checking'. Devuelve el saldo de la cuenta corriente que hay detrás de los gráficos. El ejemplo práctico a continuación muestra el recorrido completo. Dicho esto, la mayoría de los usuarios particulares encuentran suficiente la combinación de tendencias de saldo y gráficos de ingresos/gastos para entender los flujos de caja. -
Visualización de posiciones y cartera: En la página Holdings, Fava lista tus posiciones actuales en materias primas (por ejemplo, acciones, bonos, cripto) con cantidades, coste, valor de mercado y ganancias no realizadas. Aunque es una tabla, no un gráfico, es muy útil para la inspección en tiempo real del estado de tu cartera. Algunas extensiones de la comunidad (como fava-investor, comentada más adelante) añaden más visualizaciones para carteras, como gráficos de asignación o gráficos de rendimiento. Incluso sin extensiones, puedes ver por ejemplo cómo cambia el valor de tu cartera de acciones a los últimos precios – si actualizas las cotizaciones de precios con regularidad (lo que podría automatizarse a diario), los gráficos de Fava reflejarán los últimos precios con fecha disponible, que pueden ser más antiguos que el momento en que abres el informe.
Ejemplo práctico: dos meses de gastos
Este ejemplo se ejecuta de principio a fin en Beancount 3.2.3 con beanquery 0.2.0. Guarda el libro mayor como example.beancount. Contiene dos pagos de salario y cuatro gastos.
option "title" "Analytics example"
option "operating_currency" "USD"
2024-01-01 open Assets:Bank:Checking USD
2024-01-01 open Expenses:Food:Groceries USD
2024-01-01 open Expenses:Food:Dining USD
2024-01-01 open Expenses:Housing:Rent USD
2024-01-01 open Income:Salary USD
2024-01-01 open Equity:Opening-Balances USD
2024-01-05 * "Employer" "January salary"
Income:Salary -3000.00 USD
Assets:Bank:Checking 3000.00 USD
2024-01-08 * "Grocery Store" "Weekly groceries"
Expenses:Food:Groceries 120.00 USD
Assets:Bank:Checking -120.00 USD
2024-01-12 * "Restaurant" "Dinner out"
Expenses:Food:Dining 80.00 USD
Assets:Bank:Checking -80.00 USD
2024-02-01 * "Landlord" "February rent"
Expenses:Housing:Rent 1000.00 USD
Assets:Bank:Checking -1000.00 USD
2024-02-05 * "Employer" "February salary"
Income:Salary -3000.00 USD
Assets:Bank:Checking 3000.00 USD
2024-02-10 * "Grocery Store" "Weekly groceries"
Expenses:Food:Groceries 150.00 USD
Assets:Bank:Checking -150.00 USDCompruébalo primero. Luego ejecuta la consulta de gastos por categoría.
bea --file example.beancount check
bea --file example.beancount query "SELECT account, sum(position) WHERE account ~ 'Expenses' GROUP BY account ORDER BY account"Un libro mayor limpio sale con código 0 de bea check; los errores se listan con una salida distinta de cero. La consulta devuelve una fila por cuenta de gasto.
account sum(position)
----------------------- ------------
Expenses:Food:Dining 80.00 USD
Expenses:Food:Groceries 270.00 USD
Expenses:Housing:Rent 1000.00 USDDos consultas más completan el panorama. Ingresos totales y gastos totales:
SELECT sum(position) WHERE account ~ 'Income'
SELECT sum(position) WHERE account ~ 'Expenses'Devuelven (-6000.00 USD) y (1350.00 USD). Así que el hogar ganó 6.000,00 USD, gastó 1.350,00 USD y ahorró un 77,5 %. El saldo de la cuenta corriente lo confirma:
SELECT sum(position) WHERE account ~ 'Assets:Bank:Checking'Devuelve (4650.00 USD). Las mismas consultas se ejecutan sin cambios en la página Query de Fava. Fava 1.30.16 renderiza las mismas tres filas de gastos como una tabla interactiva.
En la práctica, los informes visuales de Fava se actualizan tan rápido como los datos subyacentes. En el momento en que se añade una nueva transacción y se recarga la página, los gráficos se recalculan. No se necesita un reprocesamiento prolongado. Esto significa que si tienes un pipeline semiautomatizado que alimenta datos a lo largo del día, puedes mantener Fava abierto y pulsar actualizar periódicamente para obtener gráficos actualizados – efectivamente, monitorización financiera en tiempo real.
Por ejemplo, imagina que diriges una pequeña empresa y quieres monitorizar el efectivo disponible y los gastos diarios. Podrías tener Fava abierto en un panel personalizado (quizá usando una extensión o la pantalla de consultas) que muestre "Cash account balance today" y "Expenses – Today vs. Yesterday". Cada vez que actualices después de que entren nuevos datos, verías esos números actualizarse. Esto se asemeja a lo que ofrecen los costosos paneles en tiempo real, pero usando herramientas de código abierto. La diferencia es que quizá necesites actualizar manualmente o programar las actualizaciones, mientras que esas herramientas envían las actualizaciones automáticamente. Pero, funcionalmente, la información que obtienes es la misma, con el beneficio añadido de que puedes profundizar en cualquier número de Fava (hacer clic para ver las transacciones subyacentes) – algo de lo que carecen muchos paneles de BI.
En resumen, Fava convierte tus datos contables en información visual inmediata: desgloses de flujo de caja, líneas de tendencia, comparaciones a lo largo del tiempo y filtrado interactivo te ayudan a ver la historia detrás de los números. Ya sea que estés inspeccionando los gastos de la semana pasada en busca de anomalías o revisando tendencias de varios años en el patrimonio neto, los gráficos e informes de Fava aportan claridad en tiempo real (en cuanto tus datos están ahí). A continuación, veremos cómo puedes ampliar estas capacidades o integrarlas con herramientas externas si necesitas analítica aún más personalizada.
Integración con Tableros y Herramientas de Visualización Externos
Aunque Fava proporciona un amplio conjunto de informes y gráficos integrados, es posible que quieras integrar los datos de Beancount con otras herramientas de inteligencia de negocio (BI) o paneles de control como Grafana, Metabase o front-ends web personalizados (por ejemplo, una aplicación React). La motivación podría ser combinar datos financieros con otras fuentes de datos, usar capacidades de gráficos avanzadas o compartir paneles con otros en un formato diferente. Gracias a la apertura de Beancount, hay múltiples formas de lograr la integración:
-
Integración con bases de datos (BeanSQL / Beanpost): Un enfoque directo es exportar o sincronizar tu libro mayor de Beancount con una base de datos SQL. Una vez en SQL, cualquier herramienta de BI puede consultar los datos. De hecho, miembros de la comunidad han creado herramientas para esto. Por ejemplo, Beanpost es un experimento que replica un libro mayor de Beancount en una base de datos PostgreSQL, implementando gran parte de la lógica de Beancount como funciones SQL. Esto proporciona "un backend flexible que puede integrarse con otras herramientas como aplicaciones web o sistemas de informes." Puedes ejecutar Beanpost para sincronizar continuamente tu libro mayor de texto con Postgres. Luego, una herramienta como Metabase o Tableau puede conectarse a esa base de datos Postgres y puedes construir los gráficos o paneles que quieras (actualizándose en vivo a medida que se actualiza la BD). Un usuario informó haber usado Postgres + PostGraphile para exponer automáticamente una API GraphQL para los datos del libro mayor y luego escribir un front-end React personalizado sobre eso – tratando esencialmente el libro mayor como un servicio web. Este enfoque aborda casos en los que la interfaz de Fava podría no ser suficiente (por ejemplo, acceso multiusuario o interfaces más adaptadas al móvil). Requiere más ingeniería, pero muestra el potencial: puedes integrar Beancount con stacks web modernos con relativa facilidad. Una variante más ligera es exportar los resultados de las consultas a SQLite – ejecutar
bea --file ledger.beancount query "SELECT ..."imprime una tabla que puedes pegar o canalizar, y el CSV de hoja de cálculo desde la CLI está pendiente de opciones nativas de exportación parabea query. Algunas personas usan SQLite como intermediario para conectarlo a herramientas como Metabase (que puede leer archivos SQLite mediante una conexión). -
Grafana (paneles de series temporales): Grafana es popular para monitorización y datos de series temporales. Los datos financieros a lo largo del tiempo (gastos, saldos) se pueden tratar como series temporales. Ha habido debate en la comunidad sobre conectar Beancount a Grafana. Una idea era un complemento de fuente de datos de Grafana que pudiera ejecutar consultas BQL contra un archivo de Beancount sobre la marcha. Esto permitiría a los paneles de Grafana mostrar directamente, por ejemplo, "Balance of Checking account" como un indicador o "Expenses over last 30 days" como un gráfico, consultando el libro mayor. A día de hoy (2025), no se ha publicado un complemento dedicado, pero los entusiastas han construido soluciones ad hoc. Por ejemplo, un usuario de Reddit, aquilax, construyó un servidor sencillo que pone los datos de Ledger CLI a disposición de Grafana, y lo compartió como grafana-ledger-datasource-server. Se puede aplicar un concepto similar a Beancount: escribirías un pequeño servidor HTTP en Python que cargue el libro mayor de Beancount (usando la API de Beancount para consultar datos) y exponga endpoints que devuelvan marcos de datos JSON para Grafana. Grafana tiene un complemento de fuente de datos JSON genérico que podría entonces extraer de esta API. En la práctica, esto significa que podrías diseñar un panel de Grafana con paneles como "Monthly Revenue (gráfico de barras)" o "Daily Cash Balance (gráfico de líneas)", y esos paneles obtendrían datos de tu API basada en Beancount. Grafana permitiría opciones de visualización ricas (anotaciones, umbrales, combinar con métricas del servidor, etc.). Andreas Gerstmayr (uno de los mantenedores de Fava) sugirió exactamente este enfoque e incluso mencionó que creó una extensión de Fava llamada fava-dashboards (hablaremos de ella más adelante) para renderizar gráficos a partir de consultas BQL, como alternativa a una configuración completa de Grafana. Si prefieres la interfaz de Grafana, la integración es factible – solo requiere construir el puente de datos.
-
Metabase (consultas ad hoc y paneles): Metabase es una herramienta de BI fácil de usar que te permite ejecutar consultas y crear paneles sin código. Si exportas tu libro mayor a un formato relacional (mediante Beanpost o escribiendo tablas de transacciones, asientos, etc.), puedes apuntar Metabase a esa base de datos. Podrías crear tablas personalizadas como
expenses (date, category, amount)a partir de tu libro mayor, y luego en Metabase generar gráficos fácilmente (por ejemplo, un gráfico de sectores de gastos por categoría del último mes). El beneficio es que los usuarios no técnicos (o colegas) podrían entonces interactuar con los datos a través de la interfaz gráfica de Metabase sin necesidad de tocar el archivo de Beancount. La desventaja es que necesitas mantener la exportación/sincronización. Algunos usuarios han automatizado la conversión nocturna del libro mayor de Beancount a SQLite, y luego dejan que Metabase lea el SQLite; otros podrían usar el enfoque de Postgres mencionado. La clave es que la portabilidad de datos de Beancount permite esto – eres libre de duplicar los datos en cualquier forma que necesite tu herramienta externa. -
Front-ends / aplicaciones personalizadas: Si tienes necesidades específicas, siempre puedes escribir una aplicación personalizada sobre Beancount. La biblioteca Python de Beancount te da acceso a todos los asientos analizados, saldos, etc., por lo que se puede usar un framework web de Python (Flask, Django, FastAPI) para construir una aplicación a medida. Por ejemplo, una pequeña empresa podría construir un panel que muestre métricas KPI (como margen bruto, ventas diarias, etc.) consultando el libro mayor y quizá combinándolo con datos no contables (como número de clientes atendidos). Un miembro de la comunidad construyó una interfaz web adaptada al móvil porque Fava no era intuitiva para su cónyuge – aprovechó el libro mayor en una base de datos para impulsar esta interfaz personalizada. Si prefieres JavaScript/TypeScript, podrías usar una herramienta para convertir el libro mayor a JSON y construir desde ahí. Fava misma expone su página Query a través de una API de consultas JSON, por lo que un front-end personalizado puede enviarle BQL y renderizar las tablas devueltas en lugar de construir un nuevo backend de consultas.
-
Integración con Excel/Power BI: Vale la pena señalar que incluso puedes integrarte con Excel o Power BI. Hasta que
bea queryincorpore la exportación nativa a CSV, usa la exportación de la página Query de Fava para archivos de hoja de cálculo que Excel abre directamente. Un flujo de trabajo podría ser: una tarea nocturna genera un archivo CSV con los datos financieros clave de Beancount, y Power BI está configurado para importar ese archivo. Es un poco indirecto, pero para organizaciones que ya usan mucho Excel/Power BI, es una integración de baja fricción. Power BI también admite fuentes de datos de Python, por lo que se podría escribir un breve script de Python que ejecute consultas BQL y usarlo como fuente de datos dentro de Power BI, logrando una conexión directa.
Caso práctico – Idea de integración con Grafana: Josh, un usuario de Beancount, preguntó en la lista de correo sobre enviar métricas de Beancount a Prometheus y verlas en Grafana. Los desarrolladores principales respondieron que, en lugar de duplicar datos en Prometheus, un mejor enfoque es un complemento o servicio de Grafana que consulte directamente el libro mayor de Beancount. Andreas compartió su extensión fava-dashboards, que renderiza gráficos personalizados dentro de la propia Fava, como ejemplo de solución. La conclusión es: tienes opciones – ya sea integrarte mediante la infraestructura de BI existente (Prometheus+Grafana o SQL+Metabase) o ampliar Fava para satisfacer tus necesidades (la siguiente sección profundiza en esto).
Consideraciones de seguridad y multiusuario: Si te integras con herramientas externas, ten en cuenta la sensibilidad de los datos. El texto plano de Beancount a menudo contiene información financiera privada, por lo que cualquier servidor que la exponga debe estar asegurado (autenticado). Si trasladas datos a una herramienta de BI en la nube, podrías perder algo de privacidad. Las herramientas autoalojadas (versiones de código abierto de Grafana/Metabase) se pueden ejecutar localmente para mitigarlo. Además, si varias personas necesitan ver los paneles, un panel externo de solo lectura podría ser preferible a dar a todos acceso a Fava (donde podrían editar datos si no tienen cuidado). Por ejemplo, una startup podría usar Beancount internamente pero usar Metabase para que los responsables de departamento vean gasto frente a presupuesto sin tocar los archivos del libro mayor.
En resumen, Beancount y Fava se llevan bien con los demás. Puedes aprovechar todo el ecosistema de herramientas de datos con un poco de código de pegamento: enviar los datos del libro mayor a una base de datos SQL para herramientas de BI, servirlos mediante API para aplicaciones web, o incluso usar bibliotecas especializadas para transmitirlos a sistemas de series temporales. Esta flexibilidad significa que nunca te quedas atascado si las visualizaciones integradas de Fava no cumplen un requisito de nicho – siempre puedes integrarte en otra plataforma mientras sigues usando Beancount como tu fuente de verdad. A continuación, veremos cómo ampliar la propia Fava con complementos y paneles personalizados, que suele ser una ruta más fácil que la integración externa si solo necesitas unas pocas funciones adicionales.
Paneles Personalizados y Extensión de Fava con Plugins (Ejemplos de Código)
Fava está diseñada para ser extensible: puedes añadir nuevas páginas, gráficos y comportamientos escribiendo complementos (extensiones) de Fava en Python. Esto permite adaptar la interfaz web a tus necesidades específicas sin construir una aplicación separada completa. Exploraremos dos vías clave de personalización: (1) usar o escribir extensiones de Fava, y (2) configurar paneles personalizados mediante complementos de la comunidad como fava-dashboards.
Extensiones de Fava (Plugins Personalizados)
Una extensión de Fava es esencialmente un módulo de Python que define una subclase de fava.ext.FavaExtensionBase. Cuando Fava arranca, puede cargar este módulo e integrarlo en la aplicación. Las extensiones pueden registrar nuevas páginas de informes, engancharse a eventos e incluso incluir JavaScript personalizado para la interactividad. Fava 1.30.16 incluye dos: fava.ext.auto_commit y fava.ext.portfolio_list. Otras se pueden instalar vía pip o escribir desde cero.
Para habilitar una extensión, usas la directiva personalizada de Beancount en tu archivo del libro mayor:
2010-01-01 custom "fava-extension" "my_extension_module" "{'option': 'value'}"Esto indica a Fava que cargue el módulo dado. Si instalaste una extensión vía pip, referenciarías aquí su nombre de módulo. La cadena opcional al final es la configuración de la extensión. Fava la interpreta como un literal de Python, por lo que "{'option': 'value'}" llega como un dict.
Ejemplo – Extensión Auto-Commit: La extensión incluida fava.ext.auto_commit confirma cambios en git cuando editas el archivo a través de Fava. Si quisieras usarla, añadirías:
2025-01-01 custom "fava-extension" "fava.ext.auto_commit"Sobrescribe after_write_source, after_insert_entry, after_entry_modified, after_delete_entry y after_insert_metadata. Cada hook ejecuta un git commit en el propio directorio del archivo del libro mayor. Así que el libro mayor ya debe estar en un checkout de git. Demuestra cómo las extensiones se enganchan a los eventos de edición de Fava.
Ejemplo – Extensión Portfolio List: La extensión incluida fava.ext.portfolio_list añade una página que lista tus cuentas de inversión. Establece report_title = "Portfolio List" e incluye una plantilla. Fava detecta eso y añade una nueva entrada en la barra lateral, "Portfolio List", bajo Reports. También establece has_js_module = True para cargar su JavaScript asociado. Para habilitarla explícitamente, añadirías:
2025-01-01 custom "fava-extension" "fava.ext.portfolio_list"(No se necesita configuración en este caso.)
Escribir una extensión personalizada: Supongamos que quieres una página de informe personalizada, digamos "Receivables Aging" para facturas. Podrías crear un archivo receivables.py así:
# receivables.py
from fava.ext import FavaExtensionBase
class ReceivablesReport(FavaExtensionBase):
report_title = "Receivables Aging"
def after_load_file(self):
# Runs after Fava loads the ledger. Summarise open
# invoices here so the template only renders.
self.overdue = [
txn for txn in self.ledger.all_entries
if "invoice" in getattr(txn, "tags", set())
]También crearías un templates/ReceivablesReport.html junto al módulo para definir el HTML de la página. En esa plantilla, puedes leer atributos como self.overdue que tu hook preparó. Una vez escrita esta extensión, añades a tu libro mayor:
2025-01-01 custom "fava-extension" "receivables"(asumiendo que receivables.py está en el directorio del archivo de Beancount o en el PYTHONPATH, Fava puede encontrarlo por nombre). Al iniciar Fava, verás ahora una página "Receivables Aging".
Bajo el capó, Fava llama a los métodos de tu extensión en puntos fijos. Los hooks disponibles en Fava 1.30.16 son after_load_file, before_request, after_entry_modified, after_insert_entry, after_delete_entry, after_insert_metadata y after_write_source. Un método decorado con @extension_endpoint se convierte además en un endpoint de API JSON bajo la extensión. Normalmente, los hooks proporcionados más una plantilla son suficientes.
La documentación de Fava señala que el sistema de extensiones sigue evolucionando, pero es usable. De hecho, muchas funciones avanzadas se han prototipado como extensiones.
Dashboards Personalizados con fava-dashboards (Extensión Comunitaria)
En lugar de escribir una extensión desde cero, podrías usar el complemento de terceros fava-dashboards creado por un mantenedor de Fava. Esta extensión te permite definir paneles arbitrarios mediante un archivo de configuración YAML, mezclando texto, tablas y gráficos, impulsados por consultas BQL. Es básicamente una forma de crear nuevas "páginas" en Fava que contienen múltiples paneles personalizados.
Instalación y configuración: Primero, instalas el paquete (por ejemplo, pip install fava-dashboards). La versión 2.0.2 se carga limpiamente junto a Fava 1.30.16. Luego, en tu archivo de Beancount, lo activas con una directiva personalizada que apunte a tu configuración de paneles. Por ejemplo:
2010-01-01 custom "fava-extension" "fava_dashboards" "{ 'config': '/path/to/dashboards.yaml' }"(fava-dashboards/README.md at main · andreasgerstmayr/fava-dashboards · GitHub). Esto indica a Fava que cargue el módulo fava_dashboards y lea tu archivo YAML para la configuración.
Formato YAML de los paneles: En el dashboards.yaml, defines uno o más paneles y sus componentes. Dos reglas provienen del propio pipeline de la extensión. Las columnas agregadas necesitan un alias AS. Y se aplica la convención de signos de BQL: las sumas de ingresos llegan negativas, los gastos positivos. Por ejemplo:
dashboards:
- title: "Cash Flow Dashboard"
panels:
- title: "Net Cash This Month"
width: 50%
queries:
- bql: "SELECT sum(position) AS net_cash WHERE account ~ 'Income' OR account ~ 'Expenses'"
type: "jinja2"
template: "<h1>{{ panel.queries[0].result[0][0] }}</h1>"
- title: "Spending by Category"
width: 50%
queries:
- bql: "SELECT account AS category, sum(position) AS total WHERE account ~ 'Expenses' GROUP BY account ORDER BY account"
type: "jinja2"
template: "<table>{% for row in panel.queries[0].result %}<tr><td>{{ row[0] }}</td><td>{{ row[1] }}</td></tr>{% endfor %}</table>"El primer panel muestra la posición sumada directamente. Sobre el libro mayor del ejemplo práctico renderiza (-4650.00 USD). Eso es 6.000,00 USD de ingresos netos de 1.350,00 USD de gastos. El segundo panel recorre las filas de la consulta en una tabla. El proyecto también renderiza paneles de gráficos a partir de las mismas consultas. Consulta el README enlazado para la API de scripts de gráficos.
La extensión se encarga de renderizar todo esto cuando abres la página del panel en Fava. Puedes crear múltiples paneles (cada uno aparece como una pestaña o página separada). Esto es extremadamente potente para crear paneles financieros personalizados. Por ejemplo, podrías hacer un panel "Budget vs Actual": un componente muestra una tabla de presupuesto frente a real por categoría (mediante una consulta que compara dos conjuntos de cuentas), otro componente muestra un gráfico de barras del gasto del año hasta la fecha frente al año anterior, etc. Todo esto solo con configuración y scripting mínimo, aprovechando los datos de tu libro mayor vía BQL.
Ejemplo de código – Habilitar fava-dashboards: Como se muestra arriba, añadir la extensión es una línea en tu libro mayor. Para completar, aquí tienes un ejemplo mínimo de esto en contexto:
option "title" "My Ledger"
option "operating_currency" "USD"
plugin "beancount.plugins.auto_accounts" ; (auto-opens accounts)
1970-01-01 custom "fava-extension" "fava_dashboards" "{ 'config': 'dashboards.yaml' }"Y en dashboards.yaml:
dashboards:
- title: "Overview"
panels:
- title: "Net Worth"
queries:
- bql: "SELECT sum(position) AS net_worth WHERE account ~ 'Assets' OR account ~ 'Liabilities'"
type: "jinja2"
template: "<div>Net Worth: {{ panel.queries[0].result[0][0] }}</div>"Sobre el libro mayor del ejemplo práctico esto renderiza <div>Net Worth: (4650.00 USD)</div>. Un panel real tendría un buen formato y añadiría más componentes.
Con esto en su sitio, cuando ejecutes Fava y navegues al panel "Overview", mostrará tu patrimonio neto calculado. Luego puedes refinar la plantilla o añadir gráficos según necesites.
Otras extensiones destacadas: Aparte de fava-dashboards, miembros de la comunidad han construido complementos como fava-investor para análisis de inversiones y fava-review para revisión de transacciones. Son paquetes de terceros con sus propios pasos de instalación y rangos de compatibilidad con Fava. Consulta sus README antes de instalarlos. La comunidad mantiene una lista "awesome-beancount" de complementos y herramientas. Explorándola, podrías encontrar una extensión ya hecha que satisfaga tus necesidades.
Cuándo ampliar frente a integrar externamente: En general, si tu necesidad es puramente de presentación o cálculo sobre los datos existentes del libro mayor, una extensión de Fava es ideal (mantiene todo en un solo lugar, respeta los filtros, etc.). Si tu necesidad implica combinar datos externos o requieres una interfaz drásticamente diferente, podría justificarse la integración externa (sección anterior). Por ejemplo, mostrar analítica web junto a las finanzas – mejor en Grafana/Metabase; pero añadir un nuevo KPI financiero o informe – mejor como complemento de Fava.
Ejemplo – Un KPI personalizado en Fava: Digamos que quieres hacer un seguimiento de la "Tasa de ahorro" (porcentaje de ingresos ahorrado). Podrías hacerlo con una extensión que lo calcule y muestre un pequeño recuadro en la página principal. O con fava-dashboards, un componente podría ser un Jinja2 que muestre Savings Rate: X% consultando los ingresos totales y los gastos totales. Este tipo de métrica personalizada es muy fácil de inyectar con estas herramientas, mientras que en un sistema cerrado como QuickBooks podría ser imposible crear una nueva métrica en el panel.
Las mismas dos consultas alimentan un componente de tasa de ahorro. Cuidado con los signos: el sum(position) de BQL devuelve los ingresos como posición negativa y los gastos como positiva, y Jinja no puede restar una posición de otra. Así que muestra ambos componentes y expón la tasa en el texto de la plantilla:
- title: "Savings Rate"
panels:
- title: "Savings Rate"
queries:
- bql: "SELECT sum(position) AS income_total WHERE account ~ 'Income'"
- bql: "SELECT sum(position) AS expense_total WHERE account ~ 'Expenses'"
type: "jinja2"
template: "<h3>Savings Rate: 77.5% ({{ panel.queries[0].result[0][0] }} earned, {{ panel.queries[1].result[0][0] }} spent)</h3>"Sobre el libro mayor del ejemplo práctico esto renderiza Savings Rate: 77.5% ((-6000.00 USD) earned, (1350.00 USD) spent). La tasa es (6.000,00 − 1.350,00) / 6.000,00. Calcúlala a partir de las magnitudes. No niegues ni restes las posiciones dentro de la plantilla.
El punto clave: Fava no es una herramienta estática – es una plataforma extensible. Con un poco de Python o incluso solo código de configuración, puedes adaptarla ampliamente. Muchos usuarios comparten pequeños scripts o extensiones en foros para hacer cosas como mostrar facturas próximas, generar facturas PDF a partir de transacciones o integrar Beancount con bibliotecas de cálculo de impuestos. Cuando inviertes en aprender o usar estas extensiones, obtienes un sistema de analítica financiera muy a medida sin empezar desde cero.
Casos de uso: Finanzas personales vs contabilidad para pequeñas empresas
Beancount y Fava se pueden usar tanto para finanzas personales como para contabilidad de pequeñas empresas, pero los casos de uso y los beneficios difieren ligeramente en el énfasis:
Finanzas personales
Para particulares, Beancount+Fava destaca por dar visibilidad y conocimiento totales de las finanzas propias sin depender de aplicaciones propietarias. Los casos de uso comunes de finanzas personales incluyen:
-
Seguimiento de gastos y presupuestación: Muchos usan Beancount para registrar cada gasto y luego analizar los patrones de gasto. Con Fava, pueden ver adónde va el dinero cada mes (treemap de gastos) y hacer seguimiento de presupuestos comparándolos con los valores esperados (algunos lo hacen mediante la extensión Budgets o consultas personalizadas). Un usuario describió que, tras adoptar Beancount, "el análisis de datos financieros (gastos, donaciones, impuestos, etc.) es trivial. Es fácil con Fava, pero también fácil con scripts... Tengo un script de Python que extrae datos de Beancount usando BQL, y luego uso pandas para preparar un informe.". Esto demuestra cómo los usuarios particulares se benefician tanto de la interfaz integrada como de la capacidad de programar análisis personalizados cuando lo necesitan.
-
Patrimonio neto y seguimiento de objetivos: Como puedes incluir todos los activos (cuentas bancarias, inversiones, incluso activos físicos si quieres) en un solo libro mayor, obtienes una vista única del patrimonio neto. Los aficionados a las finanzas personales lo usan para hacer seguimiento del progreso hacia objetivos (por ejemplo, el "número FI" o el pago de deudas). Los gráficos de Fava que muestran el patrimonio neto a lo largo del tiempo son motivadores – literalmente puedes ver la curva de tu riqueza. Es común hacer seguimiento de pasivos como préstamos estudiantiles o hipotecas en Beancount y actualizar sus saldos; el libro mayor da entonces una imagen completa de la salud financiera.
-
Inversiones y cripto: El uso personal a menudo se extiende al seguimiento de una cartera. Beancount puede manejar acciones, cripto, etc., con base de coste y cálculos de ganancias realizadas (mediante complementos o consultas). La ventaja sobre el sitio de un bróker es que puedes consolidar todas las cuentas y ver la asignación real de activos. Complementos de la comunidad como fava-investor, por ejemplo, añaden páginas de análisis de inversiones a Fava. Esto es algo que normalmente se hace en Excel por inversores aficionados; Beancount ofrece una forma más rigurosa y automatizada. Un artículo de blog titulado "Beancount: DeFi Accounting For Noobs" incluso ilustra su uso para rastrear transacciones de criptomonedas y yield farming, lo que muestra su flexibilidad en escenarios modernos de finanzas personales.
-
Finanzas personales multidivisa: Si vives en el extranjero o tienes inversiones en el extranjero, Beancount es extremadamente útil porque puede convertir y agregar divisas. Los usuarios han señalado que "muchos programas de contabilidad no son buenos con múltiples divisas... Con Beancount, puedes definir cualquier materia prima que quieras" y obtener informes en tu divisa preferida. Para un usuario particular que maneja, digamos, un salario en USD pero gastos en EUR, esto es una gran ventaja.
-
Seguimiento de la vida y diario: Un caso de uso poco convencional pero real: algunos tratan el libro mayor como un registro de vida, etiquetando transacciones con eventos vitales (como
#weddingo#vacation2025) y luego usándolo para calcular costes de eventos o incluso como diario de actividades (metadatos financieros como indicio de eventos vitales). El formato de texto plano y el etiquetado hacen esto posible de una forma que las herramientas tradicionales no permiten fácilmente. -
Simplicidad y propiedad: Las finanzas personales también son una cuestión de mentalidad. Muchos eligen Beancount porque "querían poseer estos datos y analizarlos fácilmente, y no querían quedar atados a una suscripción o a un proveedor". La reciente desaparición de Mint.com (una popular herramienta gratuita de presupuestación) ha llevado a los entusiastas hacia la contabilidad en texto plano por su longevidad. Con Beancount, saben que podrán abrir su libro mayor dentro de 20 años. Para las finanzas de un solo individuo, los datos de Beancount (quizá sincronizados vía Dropbox o Git) y la interfaz web de Fava (que se puede ejecutar localmente o en un servidor privado) ofrecen un equilibrio entre comodidad y control difícil de encontrar en otros sitios.
Posibles retos para el uso personal: la configuración inicial y aprender la partida doble puede ser un obstáculo para algunos. Pero hay muchos recursos (como el tutorial de Beancount y foros de la comunidad) que ayudan a los nuevos usuarios. Una vez configurado, el mantenimiento puede automatizarse en gran medida como se ha descrito, lo que es ideal para quien gestiona las finanzas de su hogar con el mínimo esfuerzo.
Contabilidad para Pequeñas Empresas
Las pequeñas empresas, startups y autónomos también pueden usar Beancount+Fava, aunque los requisitos aquí incluyen informes más formales y quizá colaboración:
-
Contabilidad y estados financieros: Una empresa puede mantener su libro mayor general en Beancount, registrando facturas, recibos, nóminas, etc., y producir balances y cuentas de pérdidas y ganancias. Beancount admite la contabilidad por devengo necesaria (puedes marcar cuentas como cuentas por cobrar/pagar y registrar facturas con asientos a ingresos y cuentas por cobrar, y luego un pago para liquidar las cuentas por cobrar). Fava mostrará entonces esos elementos bajo Activos o Pasivos según corresponda. Un debate en Reddit preguntaba si Beancount es adecuado para empresas y si puede generar estados financieros adecuados – sí, puede producir balances, cuentas de resultados y (con algo de ayuda de consultas) estados de flujos de efectivo, ya que no son más que vistas de los datos de partida doble. La trampa es que Beancount no impone ninguna norma contable concreta (eso depende de cómo lo uses). Así que un usuario con conocimientos (o un contable) debería configurar correctamente el plan contable para la empresa. Hay ejemplos en la comunidad de Beancount usado para startups – un comentarista de HN dijo: "Realmente disfruto usando Beancount + Git para gestionar el libro contable de mi propia startup", aunque señaló que era un poco tedioso añadir asientos periódicamente. Esa tediosidad se puede aliviar con la automatización de importaciones, como vimos.
-
Monitorización financiera en tiempo real: Para una pequeña empresa, el flujo de caja es lo más importante. Usando Fava, el propietario de un negocio puede monitorizar los saldos bancarios y el flujo de caja casi en tiempo real, igual que en finanzas personales – pero aquí es aún más crítico. Automatizando los feeds bancarios o las importaciones, pueden detectar si entró el pago de un cliente o si se liquidó un gran gasto. QuickBooks ofrece feeds bancarios que "te permiten ver cómo va tu negocio en tiempo real"; con Beancount, replicas esto con tu propia integración bancaria. El beneficio de Beancount es la transparencia – ves exactamente qué se ha importado y cómo se ha categorizado, en lugar de confiar en la a veces inescrutable lógica de emparejamiento de QuickBooks.
-
Facturación y cuentas por cobrar/pagar: Beancount no tiene un módulo de facturación integrado (como generar facturas PDF o hacer seguimiento de números de factura). Sin embargo, usuarios creativos lo han gestionado con complementos. Por ejemplo, se podría generar una factura PDF a partir de una transacción usando una plantilla Jinja2 o incluso un script externo que lea los asientos de cuentas por cobrar pendientes. Existe un proyecto, "Beanie", que actúa como un sistema ligero de cuentas por cobrar sobre Beancount. Las pequeñas empresas podrían usar Beancount para el libro mayor y otra herramienta para emitir facturas, y luego importar los datos de las facturas a Beancount. Es un paso extra comparado con QuickBooks (que puede enviar facturas y luego registrarlas automáticamente una vez pagadas), pero asegura que todos los datos acaben en el libro mayor abierto.
-
Nóminas y amortización: Son tareas contables que gestionan las pequeñas empresas. Beancount puede sin duda registrar asientos de nómina (dividiendo el salario bruto, impuestos, retenciones, etc. en las cuentas adecuadas) – pero normalmente los calcularías con herramientas externas o tu proveedor de nóminas y luego los introducirías. Los calendarios de amortización de activos fijos también se introducirían manualmente (o podrías escribir un complemento para automatizar los asientos mensuales de amortización). Beancount no tiene magia para esto, pero tampoco la tienen muchas herramientas de software para pequeñas empresas más allá de ofrecer algunas plantillas. La ventaja es que puedes programar cualquier cosa inusual. Por ejemplo, si tienes un calendario personalizado de reconocimiento de ingresos, podrías programar esos asientos contables en Python e incluirlos.
-
Transparencia y auditabilidad: Las empresas podrían apreciar que Beancount proporciona una pista de auditoría clara. Cada transacción es simple y se puede anotar con enlaces a documentos (recibos, contratos). Si te auditan, puedes mostrar el archivo del libro mayor junto con los documentos adjuntos, lo cual es bastante directo. Además, el control de versiones significa que tienes un registro de auditoría de quién y cuándo hizo los cambios (si varias personas colaboran vía Git). Compáralo con QuickBooks, donde un contable podría necesitar examinar registros de cambios que no son fácilmente accesibles para el usuario.
-
Coste: Beancount+Fava es gratuito, lo que resulta atractivo para startups o pequeñas empresas que intentan minimizar los costes de software. QuickBooks, Xero, etc., tienen cuotas mensuales. Sin embargo, la contrapartida es que esos vienen con soporte y una configuración más sencilla. Un propietario de negocio con conocimientos técnicos podría cambiar gustosamente algo de tiempo por ahorro de costes y flexibilidad.
Ejemplos reales: Otro usuario de HN dijo que lo usó para una LLC de consultoría y funcionó bien, pero cuando las transacciones crecieron, empezaron a dividir archivos por año para mantener la velocidad. El consenso es: para una pequeña empresa (digamos decenas de miles de transacciones al año o menos), Beancount es perfectamente capaz. Si fueras una pyme más grande con cientos de miles de transacciones, el rendimiento podría justificar usar un enfoque de base de datos o elegir un sistema contable específico – aunque tenemos Beanpost para intentar abordarlo usando Postgres como backend.
Colaboración: Un área de diferencia – QuickBooks Online permite que varios usuarios (propietario, contable, etc.) trabajen simultáneamente. Con Beancount, la colaboración podría ser vía Git (varios usuarios confirman cambios). Esto funciona, pero requiere cierto conocimiento de Git y resolución de conflictos si las personas editan al mismo tiempo. Algunos han usado plataformas Git en línea o incluso Google Drive para compartir el archivo del libro mayor. Es factible, pero no tan fluido como el software contable en la nube. Sin embargo, para un equipo pequeño (o un contable individual + propietario) es manejable, y siempre puedes conceder acceso de solo lectura a través de Fava (alojarlo en un servidor interno y dejar que otros vean informes sin editar).
Cumplimiento normativo: Para finanzas personales, no es un problema. Para empresas, podrías necesitar producir informes oficiales o seguir normas contables. Beancount se puede usar para generar estados conformes con las NIIF/GAAP, pero requiere que el usuario introduzca los datos en consecuencia. No hay una imposición integrada de las reglas GAAP (por ejemplo, no hay un módulo integrado de activos fijos que garantice que amortizas correctamente). Un contable externo aún puede trabajar con un libro mayor de Beancount (ya que básicamente es un diario generalizado) – podría exportarlo a Excel y hacer ajustes si es necesario. Algunas empresas podrían preferir un software conocido por esta razón, o al menos contar con un contable cómodo con datos en texto plano.
¿Quién lo usa para negocios? Probablemente usuarios avanzados: startups tecnológicas, autónomos con formación en programación, o empresas que valoran mucho el control de los datos (por ejemplo, quizá firmas de trading financiero que quieren informes personalizados). Un hilo de Reddit tenía a alguien preguntando si Beancount serviría para una empresa de trading – las respuestas indicaban que sí, maneja múltiples divisas y puede producir los estados necesarios, pero tendrás que construir algunas herramientas a su alrededor.
Para concluir esta sección: los usuarios de finanzas personales adoran Beancount por la información y el control que les da sobre su dinero personal – convierte las finanzas en un conjunto de datos que pueden consultar y del que pueden aprender, permitiendo cosas como rastrear fácilmente cada gasto y calcular métricas que las herramientas típicas de presupuestación no pueden. Los usuarios de pequeñas empresas aprecian la transparencia, el ahorro de costes y la capacidad de hackeo – pueden integrar la contabilidad con el resto de su stack de software y evitar la dependencia de proveedores o las cuotas mensuales. Ambos casos de uso se benefician de la analítica en tiempo real: una persona podría vigilar el avance de su presupuesto mensual, una empresa podría vigilar los flujos de caja diarios – en ambos casos, Fava puede presentar información actualizada cuando se le alimenta con datos oportunos.
Comparación con otras plataformas de análisis en tiempo real
Es útil comparar Beancount+Fava con otras soluciones que ofrecen analítica financiera "en tiempo real", como QuickBooks (con feeds bancarios en vivo) y Power BI (o paneles de BI similares). Cada enfoque tiene sus fortalezas y compensaciones en términos de transparencia, flexibilidad y capacidad de respuesta:
| Aspecto | Beancount + Fava (código abierto) | QuickBooks (con feeds bancarios) | Power BI / BI genérico |
|---|---|---|---|
| Transparencia y propiedad de los datos | Totalmente transparente – los datos son texto plano, puedes inspeccionar cada transacción. La lógica es toda visible (sin algoritmos ocultos). El formato es tuyo para siempre. El control de versiones puede mostrar una pista de auditoría de los cambios. | Opaco – los datos se almacenan en una base de datos en la nube propietaria. Dependes de la exportación de Intuit para las copias de seguridad. Algunos procesos (por ejemplo, la autocategorización) no son del todo visibles. Registros de auditoría limitados. Si dejas de pagar, te arriesgas a perder el acceso fácil a tus datos. | Depende de la fuente de datos – Power BI en sí es solo una herramienta. Si se conecta a una base de datos abierta, conservas la propiedad de esos datos. Sin embargo, los archivos o paneles de Power BI son de formato propietario y requieren Power BI para verlos. La transparencia de los cálculos es buena (tú los defines), pero el sistema global es complejo. |
| Flexibilidad y personalización | Extremadamente flexible. Puedes definir cualquier estructura de cuentas, cualquier materia prima/divisa. Puedes programar comportamiento o análisis personalizados (Python, complementos). No hay un flujo de trabajo impuesto – lo adaptas a tus necesidades (personales o de empresa). El sistema de extensiones de Fava y herramientas como fava-dashboards permiten paneles personalizados dentro de la aplicación. Si falta algo, probablemente puedas construirlo o integrarlo tú mismo. | Moderada. QuickBooks está lleno de funciones para la contabilidad estándar de pequeñas empresas (facturación, nóminas (complemento aparte), informes básicos). Pero estás limitado a las funciones que ofrece Intuit. El plan contable y las categorías deben encajar en su paradigma. Los informes personalizados son limitados; no puedes consultar la base de datos arbitrariamente. Existen integraciones, pero son a través de la API de Intuit (que es limitada) o exportando a Excel. Cambias flexibilidad por comodidad. | Muy flexible para el análisis y la visualización. Puedes crear casi cualquier gráfico o KPI si los datos son accesibles. Power BI puede combinar datos financieros con otros datos (ventas, analítica web, etc.) fácilmente. Sin embargo, no es un sistema contable – necesitas tener los datos preparados (¡lo que podría venir de Beancount!). No impone la partida doble ni los principios contables; es una hoja en blanco. La flexibilidad en la visualización es alta (medidas DAX personalizadas, etc.), pero requiere experiencia. |
| Capacidad de respuesta en tiempo real | Casi en tiempo real con configuración. Si automatizas la entrada de datos (feeds o importaciones frecuentes), Fava lo reflejará en cuanto se actualice y recargue el libro mayor. No es "push" en tiempo real por defecto (requiere actualización manual), pero puedes actualizar con la frecuencia que quieras (cada minuto, cada hora). La velocidad de actualización es muy rápida (análisis del texto en milisegundos para cambios pequeños). Tú controlas la frecuencia – podría ser continua si se programa. Sin esperar a ciclos de sincronización de proveedores. | Diseñado para casi tiempo real para transacciones bancarias: "Los feeds bancarios te permiten ver cómo va tu negocio en tiempo real." En la práctica, los feeds bancarios en QuickBooks Online se actualizan una vez al día o a demanda (depende del banco). Extrae automáticamente nuevas transacciones e intenta categorizarlas, para que no tengas que importarlas manualmente. Los cambios aparecen en el panel sin intervención manual. Sin embargo, algunos datos (como transacciones pendientes) podrían no mostrarse hasta que se liquiden. Además, ciertos informes podrían no actualizarse hasta que se realice una acción. En general, buena capacidad de respuesta para datos bancarios; menos para cosas como asientos manuales (aún en tiempo real, pero esos los introduces tú). | Si se configura con una conexión en vivo, los paneles pueden actualizarse en tiempo real o según una programación. Por ejemplo, un panel de Power BI que use DirectQuery sobre una base de datos SQL puede actualizarse cada vez que lo abras o incluso automáticamente. Con el modo Import, actualizarías según una programación (por ejemplo, cada hora). Así que puede ser casi en tiempo real, pero la complejidad está en mantener el pipeline de datos. Además, cualquier cambio en los datos subyacentes requiere una actualización del modelo o de las consultas. Puede haber un ligero retraso según cómo se configure (y si se usa Power BI en la nube, hay límites en la frecuencia de actualización automática en los planes gratuitos). |
| Automatización y entrada de datos | Las importaciones pueden automatizarse mucho, pero requieren configuración personalizada. Puede que necesites escribir/mantener scripts o usar importadores de la comunidad para cada banco o fuente de datos. No hay conexiones bancarias listas para usar (aparte de las que crees). Así que la configuración inicial de la automatización requiere esfuerzo. Por otro lado, una vez configurada, puede ser totalmente automatizada sin entrada manual (como algunos usuarios han logrado, ~95 % de automatización). También admite entrada manual para cosas que no se pueden automatizar (con el formulario web de Fava o edición de texto). | Muy automatizado para feeds de bancos/tarjetas de crédito (sin necesidad de programar – solo conectas tus cuentas en QuickBooks). También sugiere categorías automáticamente (usando datos pasados y algo de ML). "Cada transacción se sincroniza y clasifica al instante para ti... QuickBooks recomienda categorías y se vuelve más inteligente con el tiempo.". Esto es una gran ventaja de comodidad – menos trabajo manual. Sin embargo, la automatización es principalmente para cuentas financieras; otras cosas (como dividir un gasto en clases) aún podrían necesitar revisión manual. Además, si el feed bancario se rompe, el usuario tiene que reconectar o subir archivos. | Power BI no trata en absoluto de la entrada de datos – depende de la automatización que tenga la fuente de datos. Si tu fuente de datos es una hoja de cálculo manual, entonces no es en tiempo real. Si es una base de datos actualizada por algún proceso ETL, puede acercarse al tiempo real. Así que la automatización depende de lo que alimentes a Power BI. Power BI en sí se puede programar para actualizar datos de las fuentes. En resumen, Power BI puede reflejar bien datos automatizados pero no crea la automatización (debes tener un pipeline de datos automatizado alimentándolo). |
| Colaboración y uso compartido | La colaboración vía texto (por ejemplo, Git) es potente pero técnica. Varias personas pueden contribuir editando el archivo o archivos del libro mayor y fusionando los cambios. Fava se puede alojar en modo solo lectura para compartir informes con otros, pero carece de roles de usuario o control de acceso granular de serie. Para un solo usuario o un equipo con conocimientos técnicos, está bien. Los auditores o contables podrían necesitar que se exporten los datos (por ejemplo, balance de comprobación en Excel) para trabajar con ellos si no están cómodos con el formato. | Acceso web multiusuario con permisos (QuickBooks Online admite contables y varios usuarios de empresa con roles). Uso compartido fácil – tu contable puede iniciar sesión y ver los libros en vivo. Este es un punto fuerte para las empresas. Para finanzas personales, el multiusuario es menos relevante, pero el acceso en la nube desde varios dispositivos es una ventaja (aunque también puedes ejecutar Fava en una nube personal/VPS). QuickBooks también se integra con otros servicios (nóminas, préstamos bancarios, etc.), lo cual es útil para empresas y difícil de replicar en Beancount. | Power BI destaca en compartir paneles, especialmente si se usa Power BI Service: puedes publicar paneles para colegas, incrustarlos en sitios web (con la licencia adecuada), etc. Está hecho para la colaboración en la información. Sin embargo, esto es compartir análisis en solo lectura, no edición colaborativa de datos. Si varios usuarios necesitan analizar, pueden hacerlo si se les da acceso al proyecto de BI. En resumen, para comunicar resultados financieros de forma vistosa a las partes interesadas, Power BI es difícil de superar. Pero no es contabilidad colaborativa; es análisis colaborativo. |
| Coste | Gratuito (código abierto). Puedes gastar tiempo en lugar de dinero (para configuración/mantenimiento). Alojar Fava tú mismo podría tener un coste insignificante (si es en tu PC o un servidor barato). Sin cuotas de licencia para usuarios adicionales. | De pago (suscripción mensual o anual). QuickBooks Online puede ir de 20 a más de 70 $ al mes según el plan. También hay cuotas por nóminas o funciones avanzadas. Muchas pequeñas empresas lo pagan porque incluye soporte y actualizaciones continuas. Pero con los años, el coste se acumula. Además, si dejas de suscribirte, podrías perder el acceso completo. | Mixto. Power BI Desktop es gratis, pero la suscripción Pro (para compartir paneles) es de ~10 $/usuario/mes. Si ya la tienes vía Office 365 o similar, el coste adicional podría ser cero. Otras herramientas de BI varían (algunas de código abierto como Metabase son gratuitas de ejecutar). Sin embargo, considera el coste de tiempo de desarrollar soluciones de BI y posiblemente el coste de mantener una base de datos o infraestructura en la nube para ello. |
En resumen, Beancount+Fava frente a QuickBooks: Beancount ofrece una transparencia superior (lo ves y lo controlas todo, y tus datos no van a desaparecer ni quedar encerrados) y flexibilidad (puedes modelar cualquier cosa en el libro mayor, no solo lo que QuickBooks espera). Requiere más bricolaje, especialmente para la automatización y los detalles de interfaz agradables. QuickBooks es una solución lista para usar optimizada para las necesidades de las pequeñas empresas – feeds bancarios, facturación, nóminas (con complementos) – y proporciona actualizaciones casi en tiempo real con un esfuerzo mínimo del usuario. Sin embargo, es una caja negra en muchos sentidos; confías en que el software maneje tus datos correctamente, y a veces eso significa que es difícil corregir errores o entender cómo llegó a un número. Muchos usuarios de Beancount son personas que se frustraron con esas cajas negras. Cambian algo de comodidad por claridad.
Beancount+Fava frente a Power BI (u otro BI): Pueden ser complementarios. Power BI no es un sistema contable; es para análisis. De hecho, una configuración avanzada podría usar Beancount para consolidar y garantizar la precisión de los datos, y luego usar Power BI para crear paneles ejecutivos a partir de esos datos. Si comparamos directamente, Power BI trata más de flexibilidad visual y combinación de fuentes de datos. Los gráficos de Fava son más simples por diseño (centrados en las necesidades contables) pero requieren mucho menos trabajo para ponerse en marcha (funcionan de inmediato sobre tu libro mayor, sin necesidad de modelado). Si tu objetivo es puramente obtener información y visuales bonitos y estás dispuesto a preparar los datos, una herramienta de BI podría ser apropiada. Pero si tu objetivo es mantener los libros y obtener informes interactivos como subproducto, Fava por sí sola a menudo basta.
También se podría comparar con otras herramientas de finanzas personales (por ejemplo, Mint o YNAB) o sistemas ERP, pero la pregunta menciona específicamente plataformas de analítica en tiempo real. En el ámbito de las vistas financieras en tiempo real: Beancount+Fava es como tener un panel financiero "en vivo" personalizado y de código abierto, QuickBooks es una contabilidad automatizada de código cerrado con sincronización bancaria en vivo, y Power BI es una plataforma de analítica flexible (no específica de finanzas pero que se puede usar para finanzas si se le alimentan datos).
Una cita reveladora que contrasta el código abierto con lo comercial: "Con un poco de esfuerzo por adelantado, las herramientas de código abierto pueden ser realmente mucho mejores que las soluciones comerciales, y mucho más flexibles y extensibles." Esto resume la compensación. QuickBooks está pulido y funciona de inmediato para escenarios comunes con un esfuerzo mínimo. Pero en cuanto quieres algo que no hace, te topas con un muro. Con Beancount, rara vez te topas con un muro – tienes el código fuente y los datos, puedes ampliar o integrar según necesites. El coste es que debes estar dispuesto a trastear.
Pros y Contras de Usar Fava y Beancount para Análisis Basados en Datos
Por último, destilemos las ventajas y desventajas de Beancount+Fava como solución para analítica financiera:
Ventajas
-
Transparencia y confianza: Todos los cálculos (totales, saldos) se derivan de un libro mayor en texto plano que puedes inspeccionar. No hay comportamientos misteriosos. Esto genera una gran confianza en los números – crucial si basas decisiones en ellos. Es "contabilidad limpia y transparente" sin dependencia de proveedores. Siempre puedes remontar una cifra reportada hasta las transacciones subyacentes, que es la esencia de la información basada en datos.
-
Reproducibilidad y pista de auditoría: Como puedes controlar por versiones el libro mayor, tienes una línea temporal de cambios. Si algo parece raro este mes, puedes comparar el libro mayor para ver qué cambió. Esto también significa que puedes experimentar ("¿y si reclasifico este gasto?") y deshacer fácilmente. El trabajo basado en datos a menudo implica iteraciones, y un libro mayor auditable lo fomenta.
-
Flexibilidad en el análisis: No estás limitado a informes predefinidos. La combinación de consultas BQL, scripting en Python y los filtros de Fava significa que puedes responder casi cualquier pregunta financiera. ¿Quieres saber "¿Cuánto he gastado en Starbucks cada año durante los últimos 5 años?" – a una consulta de distancia. ¿O "¿Cuál es la media móvil de mis gastos de 3 meses frente a los ingresos?" – programable con Python+pandas sobre una consulta. Esta flexibilidad es una gran ventaja para quienes les gusta profundizar en los datos. Los usuarios avanzados incluso han construido extensiones para calcular indicadores financieros (por ejemplo, métricas de rendimiento de cartera) dentro de Fava. En resumen, puedes obtener información muy granular que muchos programas empaquetados no pueden proporcionar.
-
Integración y extensibilidad: El sistema de complementos de Fava y la accesible API de Beancount significan que las herramientas pueden crecer con tus necesidades. Si mañana empiezas a necesitar rastrear un nuevo tipo de activo o quieres integrar un nuevo feed de datos, puedes ampliar el sistema. La arquitectura (texto plano de entrada, varias salidas) es muy extensible. Esto contrasta con los sistemas cerrados, donde quizá tengas que solicitar una función y esperar.
-
Consolidación de datos: Para particulares e incluso empresas, poder consolidar todas las cuentas (varios bancos, brókers, etc.) en un solo sistema es potente. Muchas soluciones comerciales te encasillan (o cobran extra por multidivisa o múltiples entidades). Con Beancount, puedes unirlo todo. Esto da una visión holística de los datos, permitiendo información en todos los frentes. Por ejemplo, puedes calcular tu asignación de activos global real o el flujo de caja neto entre personal y empresa si quisieras, ya que no son más que asientos de datos.
-
Rentabilidad: Es gratuito y de código abierto. Para uso personal, es una gran ventaja (sin suscripción como muchas aplicaciones de presupuestación). Para startups u organizaciones pequeñas, esos ahorros pueden sumar. Pero más allá del coste monetario, también es eficiente en términos de ejecución (Fava puede correr en un servidor minúsculo) y portabilidad (sin migraciones costosas si lo superas – solo es texto).
-
Comunidad y conocimiento compartido: La comunidad de contabilidad en texto plano (Beancount, Ledger, etc.) es muy colaborativa. La gente comparte sus configuraciones, scripts personalizados y consejos en foros y blogs. Esto significa que si tienes una necesidad de nicho, puede que alguien haya abordado algo similar. Por ejemplo, varios usuarios contribuyeron a herramientas de importación inteligente e incluso categorización por aprendizaje automático (por ejemplo, la biblioteca "smartimporter" que usa scikit-learn para autocategorizar beneficiarios basándose en datos pasados). Con el tiempo, usar Beancount puede volverse realmente _más inteligente si aprovechas estas herramientas de la comunidad – acercándote a la comodidad del software comercial sin perder la transparencia.
-
Empoderamiento y aprendizaje: Usar Fava/Beancount te obliga a interactuar con tus datos financieros a un nivel más profundo. Muchos usuarios informan de que adquirieron una comprensión mucho mejor de sus finanzas con este sistema que con aplicaciones automatizadas. Es un poco como la diferencia entre cocinar tu propia comida y comprar comida rápida – más esfuerzo, pero sabes exactamente qué contiene y puede ser más saludable a largo plazo. Para la información basada en datos, esta "propiedad" del proceso puede llevar a descubrimientos más significativos, porque puedes enmarcar y reenmarcar cómo ves los datos fácilmente.
Contras
-
Configuración inicial y curva de aprendizaje: Seamos honestos – Beancount y Fava no son tan fáciles de usar como, digamos, QuickBooks o Mint. Necesitas aprender los conceptos básicos de la contabilidad por partida doble (si no los conoces), la sintaxis de los archivos de Beancount y posiblemente algo de Python si quieres personalizar mucho. Esta inversión inicial puede ser una barrera. Para usuarios no técnicos, podría ser desalentador (aunque la interfaz de Fava ayuda mucho al ofrecer una experiencia más amigable una vez configurado). En contraste, muchas herramientas comerciales ocultan los conceptos contables tras interfaces más simples (lo cual puede ser tanto una ventaja como una desventaja).
-
Sin sincronización bancaria integrada: Por diseño, no se conecta automáticamente a API bancarias (que a menudo son propietarias o requieren acuerdos). Así que o descargas los extractos manualmente o configuras tu propia automatización (mediante scripts de Python o servicios como Plaid, que a menudo cuestan dinero). Para quienes están acostumbrados a que los feeds bancarios "simplemente funcionen", esto puede sentirse como un paso atrás. Como señaló un usuario, al probar Beancount "no encontró una forma razonable de obtener feeds bancarios" – esto puede ser una frustración a menos que estés dispuesto a programar o usar soluciones de terceros.
-
Tiempo real significa tu tiempo: Lograr capacidad de respuesta en tiempo real es posible pero no viene de serie. Tienes que configurar tareas cron o disparadores como se ha descrito. Si algo se rompe (por ejemplo, un banco cambia su formato CSV), tienes que arreglar tu importador. Con un servicio como QuickBooks, el proveedor se encarga de esos cambios. Esencialmente, eres tu propio soporte técnico. Esta es la clásica compensación del código abierto. Para un aficionado, podría estar bien o incluso ser divertido; para un propietario de pequeña empresa ocupado, podría ser una molestia.
-
Límites de escalado y rendimiento: Para conjuntos de datos muy grandes (muchos años de transacciones detalladas), Beancount puede volverse más lento. Por lo general es eficiente (hay personas con decenas de miles de asientos sin problemas). Pero, como se vio en el hilo de HN, un usuario tuvo que "cerrar libros" anualmente después de 3 años a medida que el archivo crecía para mantener las consultas rápidas. El código de Beancount v2 es Python y puede ser algo lento para datos enormes, aunque v3 (en desarrollo con un núcleo en C++) mejora esto. Hay mitigaciones (dividir archivos, usar Beanpost para descargar a una BD, etc.), pero es una consideración. QuickBooks probablemente tiene escalado interno y la mayoría de herramientas de BI se basan en bases de datos pensadas para grandes volúmenes de datos – así que podrían manejar grandes conjuntos de datos con más soltura.
-
Carencias de funciones (en relación con software dedicado): Beancount+Fava se centra en la contabilidad y el análisis. Le faltan algunas funciones auxiliares: por ejemplo, no hay procesamiento de nóminas, no hay generación de facturas (sin scripting personalizado), no hay formularios de preparación de impuestos integrados, etc. Si tu objetivo es una gestión financiera integral, quizá necesites complementarlo con otras herramientas. Por ejemplo, podrías hacer las nóminas a través de un servicio de nóminas y simplemente importar los asientos. Eso funciona, pero no está tan integrado como algo como un ERP que lo hace todo en uno. Para finanzas personales, Beancount no tiene cosas como planificadores de pago de deudas o sobres de presupuestación integrados (aunque puedes simularlos). Se espera que derives información y luego tomes decisiones, en lugar de ofrecer consejos prescriptivos o módulos de planificación.
-
Interfaz de usuario y acabado: Aunque Fava es bastante agradable, no está tan pulida o guiada como algunas ofertas comerciales. No hay un "asistente" que te guíe en la configuración o garantice que no cometas errores. Puede que tengas que leer documentación para saber cómo hacer X. Y ciertas funciones de interfaz que uno podría esperar (categorización por arrastrar y soltar, deshacer en varios pasos, notificaciones push móviles, etc.) no están. La interfaz de Fava mejora constantemente (con contribuciones), pero la construye una pequeña comunidad. Si estás acostumbrado a interfaces SaaS modernas y elegantes, Fava podría parecer un poco utilitaria (aunque algunos en realidad prefieren su sencillez limpia). En móvil, Fava funciona (especialmente en solo lectura) pero no está totalmente optimizada para pantallas pequeñas; QuickBooks tiene aplicaciones móviles dedicadas, por ejemplo.
-
Dependencia de la comunidad/el mantenedor: Martin Blais (autor de Beancount) y los contribuidores mantienen Beancount, y otros mantienen Fava. El desarrollo puede ser esporádico (como es normal en el código abierto). Aunque el software es muy usable ahora, si necesitas una nueva función o hay un error, puede que tengas que arreglarlo tú mismo o esperar. Con un producto de pago, tienes soporte al que llamar (la calidad varía, pero al menos está ahí). Dicho esto, la comunidad suele ser bastante servicial a través de la lista de correo o los issues de GitHub.
-
Se requieren conocimientos contables: Para uso empresarial especialmente, necesitas saber lo que haces. Beancount no te impedirá hacer un asiento que sea "incorrecto" desde el punto de vista contable (excepto desequilibrio o transacción no coincidente). QuickBooks, en cambio, tiene barreras de protección (y también complejidad oculta, como el seguimiento automático de ingresos diferidos, etc., si los habilitas). Si no tienes cuidado en Beancount, podrías estropear un devengo y no darte cuenta hasta que notes un problema en un informe. Esencialmente, Beancount asume que o bien dominas la contabilidad básica o estás dispuesto a aprenderla. Esto es en realidad una ventaja para algunos (obliga a hacerlo bien), pero una desventaja si quieres un sistema que no requiera pensar.
Para resumir los pros y contras: Beancount + Fava ofrece un control y una adaptabilidad inigualables para quienes quieren implicarse profundamente con sus datos financieros, lo que lo convierte en una herramienta potente para obtener información basada en datos. Convierte tus libros en un conjunto de datos consultable y tus informes en una aplicación web extensible. El precio de este poder es el trabajo que inviertes en configurarlo y mantenerlo, y la necesidad de ser algo autosuficiente en la gestión de tu sistema. En contraste con algo como QuickBooks o una suite de BI, que guían más y ofrecen ciertas funciones automáticamente, Beancount te da un conjunto de herramientas. Si tienes inclinación analítica, este conjunto de herramientas puede ser increíblemente liberador – puedes extraer información que los informes empaquetados quizá nunca muestren. Como escribió un usuario que automatizó su libro mayor de Beancount durante años, "las herramientas de código abierto (como Beancount) no cubren todas mis necesidades [de serie]... Estoy obsesionado con automatizarlo todo... Construí lo que necesitaba". Esto encapsula el enfoque: si estás dispuesto a construir lo que necesitas, por pequeño o grande que sea, Fava/Beancount te apoyará y nunca te ocultará tus datos. Para una mentalidad basada en datos, eso es una enorme ventaja.
En conclusión, usar Fava y Beancount para analítica financiera en tiempo real es un poco como tener tu propio laboratorio personalizable para tus finanzas. Obtienes claridad, flexibilidad y propiedad difíciles de igualar con plataformas propietarias, lo que lo hace ideal para quienes valoran estos aspectos y están dispuestos a cambiar algo de comodidad para conseguirlos. El panorama moderno incluso muestra enfoques híbridos – por ejemplo, algunos podrían usar una herramienta comercial pero exportar periódicamente a Beancount para un análisis más profundo, o viceversa usar Beancount como principal y una herramienta de BI para la presentación. Con el conocimiento de esta investigación, uno puede tomar una decisión informada sobre si Fava+Beancount se alinea con sus necesidades y, de ser así, proceder con confianza a aprovechar sus capacidades para obtener información financiera rica y en tiempo real.
Fuentes:
- Blais, M. (2020). Beancount Documentation – Design principles and usage. [Online]. Available: beancount.github.io
- Aumayr, D., Gerstmayr, A. (2025). Fava Documentation & GitHub Repository. [Online]. Available: beancount.github.io/fava/ and github.com/beancount/fava
- LowEndBox. (2025). "Beancount: Lightweight FOSS Double-Entry Accounting...from the Command Line!" LowEndBox Tutorial.
- Fang-Pen Lin. (2024). "My Beancount books are 95% automatic after 3 years." Personal Blog Post.
- Google Groups – Beancount Forum. (2023). Discussion on Grafana integration (Josh D. and Andreas G.)
- QuickBooks Marketing Page. "Bank Feeds – Understand all your transactions in an instant." Intuit QuickBooks.
- Watt, A. (2023). "Beancount for Personal Finance." Alex Watt Blog.
- Reddit – r/plaintextaccounting. Various discussions (2021-2023) on business use of Beancount and ledger visualization.
- Fava Extension Documentation – Help: Extensions.
- fava-dashboards GitHub README – Andreas Gerstmayr's custom dashboards plugin.
- Awesome Beancount list – community-curated resources for Beancount.