2 puntos por GN⁺ 2026-01-03 | 1 comentarios | Compartir por WhatsApp
  • Durante 10 años registró sus finanzas personales con Beancount en archivos de texto plano, gestionando alrededor de 45,000 líneas de datos y 10,000 transacciones
  • Cada mes dedica entre 30 y 45 minutos a importar archivos CSV de estados bancarios y organizarlos de forma manual y automática, separándolos por año para mantener la legibilidad
  • Desarrolló por su cuenta una librería importer basada en Python para bancos alemanes e integrarla con Beancount; algunas siguen en mantenimiento hasta hoy
  • Al notar las dificultades de quienes empiezan con Beancount, escribió una guía introductoria para principiantes, que recibió evaluaciones positivas en la comunidad
  • Todos los datos se guardan en su dispositivo local y en un repositorio Git, lo que ofrece mayor durabilidad y control que una app o servicio específico

Estructura del libro mayor de Beancount durante 10 años

  • Desde 2016 ha gestionado sus datos financieros con Beancount, y en total 45,011 líneas de registros están guardadas en 16 archivos .beancount
    • El archivo main.beancount sirve como eje central, enlazando los archivos por año mediante include
    • El total de transacciones es de unas 9,895, con 19,743 postings (asientos) dentro de ellas
  • Existen 1,086 cuentas (accounts) en total, pero no son cuentas bancarias reales, sino cuentas virtuales de clasificación
    • Ejemplo: se pueden crear cuentas por categoría detallada como gastos de supermercado, ingresos o servicios por suscripción
  • 507 documentos PDF están adjuntos a las transacciones, lo que permite revisar fácilmente los recibos relacionados al hacer la declaración de impuestos
  • La cantidad de postings por año aumentó de 715 en 2016 a 2,651 en 2023, quedando 2023 como el año con más actividad

Proceso de gestión mensual

  • Cada mes invierte alrededor de 30 a 45 minutos en descargar los estados bancarios como CSV y luego importarlos a Beancount
    • Usa CSV porque es más fácil de parsear que PDF
    • Un importer basado en Python convierte los datos CSV al formato de Beancount
  • Después de agregar las transacciones convertidas al archivo .beancount, ajusta todo para que el saldo quede en 0 según el principio de partida doble
    • Una parte se clasifica automáticamente y otra se ajusta manualmente
  • Cuando empieza un nuevo año, mueve las transacciones del año anterior al archivo <year>.beancount y las gestiona incluyéndolas en main.beancount
  • Todo el historial de transacciones está organizado como archivos de texto dentro de un solo directorio

Desarrollo de importers de Beancount para bancos alemanes

  • Beancount no conoce por defecto el formato de los estados bancarios, así que necesita convertirlos mediante una clase importer
  • Como usa cuentas bancarias alemanas, desarrolló personalmente varios importers
  • Las primeras tres librerías siguen activamente mantenidas y en uso

De usuario a autor

  • La documentación de Beancount es amplia, pero la barrera de entrada para principiantes es alta
  • Con base en lo aprendido tras mucha prueba y error, escribió una guía introductoria
    • Publicada en personalfinancespython.com
    • Mencionada en la página de external contributions de la documentación oficial de Beancount
    • Recibió respuestas positivas en las reseñas de lectores

Cierre

  • Todos los datos financieros se guardan como archivos de texto locales con control de versiones en Git
  • Los datos existen en su propio dispositivo y no dependen de una app o servicio específico
  • Puede analizarlos libremente usando herramientas del ecosistema de Beancount
  • Este enfoque de plaintext accounting es una forma sólida de gestión financiera que puede durar más que cualquier app

1 comentarios

 
GN⁺ 2026-01-03
Opiniones de Hacker News
  • Estoy totalmente de acuerdo con el libro del OP. Fue la mejor introducción que he visto hasta ahora para entender Beancount / plaintext accounting
    Yo tampoco había entendido bien la contabilidad por partida doble en toda mi vida, hasta que leí "Accounting for Computer Scientists" de Martin Kleppman. La forma en que lo explica con teoría de grafos fue sorprendentemente intuitiva

    • El resumen de que “Quicken es un sistema de contabilidad de partida simple, así que el dinero puede aparecer o desaparecer de la nada. En partida doble, para poner dinero en una cuenta necesariamente hay que sacarlo de otra” realmente da en el clavo. Es una frase que vi en quicken2beancount
    • Me parece interesante que dijeras que la partida doble te resultó difícil. En realidad, todas las transacciones tocan dos cuentas al mismo tiempo, y la suma de débitos y créditos debe ser igual. Es un principio simple. No me imagino bien cómo la teoría de grafos lo vuelve aún más simple
    • ¡Gracias por mencionarlo, Michael!
  • Antes usaba Quicken, pero cada vez que cambiaba de versión tenía que volver a ingresar los datos, así que al final me pasé a GNU Cash. Pero ahí también tuve problemas de migración
    Luego descubrí plaintext accounting (PTA) y elegí hledger (porque me preocupaba que Beancount tuviera problemas de rendimiento). Al aprender partida doble, resultó ser más simple de lo que esperaba.
    Parseo con scripts de Python los estados de inversión y recibos de sueldo que llegan en PDF, y también hice clasificación automática para los CSV del banco y la tarjeta, así que tengo casi todo automatizado.
    Le dedico como una hora al mes para generar reportes de inversión, presupuesto y resúmenes de impuestos.
    Como es plain text, los datos están seguros aunque cambie el formato, y además puedo hacer control de versiones con git.
    La desventaja es que no funciona en móvil y requiere algo de conocimiento técnico. Pero si para ti es importante el flujo de tu dinero, esta es la respuesta correcta

    • Me da curiosidad qué quieres decir con “tenía que volver a ingresarlos”. Yo uso Quicken desde 1992 y nunca he tenido que reingresar datos al cambiar de versión
    • Yo también quiero salir de Quicken, pero la dependencia de Intuit es demasiado fuerte. Todas mis transacciones desde 2000 están atadas a un formato propietario.
      Pero la función de sincronización automática de Quicken sigue siendo la mejor, así que es difícil reemplazarla. Reviso 27 cuentas todos los días para detectar fraude o errores, y descargar CSV cada vez para procesarlos manualmente sería una pesadilla.
      Además, últimamente los bancos están cerrando OFX y usando a Intuit como hub intermedio, así que cada vez es más difícil escapar
  • Aprendí la idea de gestionar las finanzas personales como si fueran un sistema de build de proyectos en full-fledged-hledger
    Guardas tal cual los datos originales que te dan las instituciones financieras, luego los conviertes a CSV con scripts y después los mapeas a entradas de PTA con archivos de reglas.
    Así, si cambias la lógica de conversión o las reglas de clasificación, todo el histórico se actualiza automáticamente.
    Puedes empezar con un mes de datos e ir ampliándolo poco a poco — por ejemplo, hasta incluir historial de pedidos de Amazon o recibos de Paypal

    • Hizo el chiste de “¿por qué PTA tendría algo que ver con la asociación de padres de familia?”
    • Me confundía la contabilidad de una hipoteca, y ese enlace da una buena explicación. Me pregunto si realmente usaste ese codebase o si solo tomaste las ideas. No sé Haskell, así que tampoco sé cuánto habría que modificar
  • Llevo varios años usando Beancount.
    Este año empecé a usar, como el OP, una estructura de archivos por año. Antes tenía un solo archivo de 2 millones de líneas y el plugin de Emacs se volvió lento.
    La ventaja de este enfoque es que puedes rastrear todo — inversiones, pensión, RSU, cuentas bancarias, etc. Incluso puedes modelar el consumo eléctrico (kWh).
    Últimamente he estado creando muchas herramientas de automatización con LLM. Por ejemplo, refactoricé con Claude un motor de reglas de transacciones para convertirlo en una app con UI. Antes eso me habría tomado varios días

    • Yo también probé rastrear la factura de luz en kWh y, sinceramente, no me sirvió de mucho 😂
    • Yo también quiero crear herramientas de finanzas personales con LLM, pero me preocupa entregar datos sensibles. Probablemente sea mejor procesarlo con un modelo local anonimizado
  • Parece que mucha gente está confundiendo plain text con partida doble.
    Beancount soporta ambas cosas, pero puedes llevar contabilidad en plain text aunque no sepas partida doble.
    Aun así, recomiendo aprender partida doble porque es una gran herramienta para estructurar el conocimiento.
    Soy algo escéptico sobre la utilidad del plain text en sí. Parece más bien una reacción contra la dependencia de la nube o el vendor lock-in, pero con usar software libre local para partida doble debería bastar.
    Mi conclusión es esta:

    • Contabilidad: importante
    • Partida doble: importante
    • Evitar la nube / el lock-in: importante
    • Evitar formatos propietarios: importante
    • plain text: no es importante
      Yo uso GnuCash, y aunque no es perfecto, encaja bien con esa filosofía
    • Creo que la automatización es esencial en contabilidad. Hacerlo a mano introduce muchos errores, y la exactitud es un requisito prioritario (P0)
    • Yo también amo y odio GnuCash. La UI está demasiado anticuada. Ojalá pudieran separar el motor como librería para usarlo desde distintas interfaces
  • Empecé con PTA hace poco y la barrera de entrada es bastante alta.
    Primero tienes que aprender partida doble y luego elegir entre ledger-cli / hledger / beancount. Las diferencias son sutiles, así que al final pesan más la comunidad y la calidad de la documentación.
    Después toca pensar de qué cuentas vas a importar datos, cuánto historial vas a incluir y cómo vas a configurar los importadores automáticos.
    hledger usa un DSL y Beancount usa Python. La mayor parte del tiempo se va en edición manual.
    Luego empiezan a aparecer nuevas preguntas: presupuesto, impuestos, cómo compartirlo con tu pareja, etc.
    Pero siento que el verdadero valor de PTA está justamente en empezar a notar esas preguntas por ti mismo.
    Cada año tienes que tomar muchas decisiones financieras — pensión, seguros, internet, una nueva oferta de trabajo — y ayuda muchísimo entender tu economía con ese nivel de detalle

    • Soy matemático, programador y además estudié finanzas, así que aprendí partida doble temprano. Me parece un sistema abstracto y elegante realmente hermoso.
      Llevo 10 años usando ledger-cli con Emacs, y antes también usé GnuCash.
      Incluso tengo un manual de partida doble que escribí como introducción
    • La partida doble se vuelve fácil una vez que te acostumbras, pero al principio la curva de aprendizaje es empinada.
      Uso PTA desde 2018 y he aprendido mucho a prueba y error.
      Los servicios comerciales solo muestran algunas cuentas, pero con PTA puedes entender completamente el flujo de todas tus finanzas.
      Por ejemplo, puedes rastrear la procedencia de todo el proceso, desde que recibes acciones de la empresa hasta que se venden y el dinero llega a tu cuenta bancaria
    • Me parece que la partida doble es un exceso innecesario para las finanzas personales.
      Para mí, una hoja de cálculo de Excel es la herramienta perfecta. Solo agrego los números que necesito cada semana
    • Estoy de acuerdo en que la contabilidad parece fácil, pero es difícil de aprender.
      La literatura es contradictoria y enredada, y hasta los propios contadores a veces la entienden mal a nivel conceptual
  • Llevo 20 años gestionando mis finanzas con hojas de cálculo de forma simple.
    Las actualizo unos 5 minutos al mes y solo rastreo los elementos clave: electricidad, calefacción, seguros, ahorros, etc.
    El objetivo es entender la tendencia del gasto y asegurar un presupuesto anual. El dinero que sobra simplemente me lo gasto

    • Yo hago algo parecido. Cada mes solo anoto saldos de cuentas, ingresos, impuestos, transferencias a inversiones, vivienda y seguros. Con eso basta para entender mi situación financiera
    • Yo también antes lo llevaba en plain text, pero después de casarme me pasé a una hoja de cálculo para poder administrarlo en conjunto.
      Solo registro aparte los gastos de más de $100 para seguir las compras grandes
    • Yo también uso hojas de cálculo para mis finanzas del hogar, pero cuando administro dinero de otras personas (fideicomisos, etc.) uso hledger. Ahí sí necesito partida doble y conciliación
    • Si quieres automatización, recomiendo Tiller. Se conecta con el banco e importa automáticamente las transacciones a una hoja de cálculo, y además ofrece plantillas de presupuesto
    • Yo también soy menos obsesivo, pero no me gustan los servicios propietarios ni las apps de pago.
      Descargo cada mes los CSV del banco y la tarjeta y los analizo con scripts de Python.
      Con código escrito por un LLM analizo tendencias de gasto por comercio, y en una tarjeta dejo solo cargos recurrentes para detectar variaciones fácilmente
  • Recomiendo Fava, un frontend GUI para Beancount
    https://beancount.github.io/fava/
    Es muy útil para visualizar todas las cuentas, y tiene una interfaz de búsqueda/consulta y edición en tiempo real

  • Este sistema se ve realmente genial, pero me pregunto cómo funciona cuando gestionas las finanzas con una pareja no técnica.
    Nosotros usamos YNAB porque la UI es limpia y colaborar es fácil. ¿Se puede implementar una interfaz así en Beancount?

    • En el comentario justo abajo recomiendan Fava
    • Si usas iPhone, recomiendo la app MoneyStats. Es bonita y fácil de configurar, así que funciona bien para usarla entre dos
  • Yo también me clavé con PTA hace tiempo y empecé a llevar registros, pero descargar manualmente las transacciones de varios bancos es demasiado engorroso
    Dicen que la automatización es la solución, pero me gustaría saber cómo lo hacen en la práctica — si usan APIs como Plaid o si hacen web scrapers o parsers de PDF
    Al final pago $130 al año por YNAB. Mi pareja está contenta y todo se conecta automáticamente.
    Tal vez se podrían respaldar los datos por la API de YNAB y usar PTA en paralelo

    • Yo hice mis propios parsers de estados de cuenta en PDF. Algunos los escribí directamente con PyMuPDF y otros hice que Claude los generara dándole estados de cuenta de ejemplo.
      La industria financiera está demasiado atrasada en esto. La automatización va aumentando, pero todavía el retorno por esfuerzo es bajo
    • Justo hoy en la mañana terminé de configurarlo yo también. Como disfruto revisar 18 cuentas cada dos semanas, no me representa una gran carga.
      Antes usaba YNAB, pero los problemas de transacciones duplicadas eran muy frecuentes y al final lo dejé.
      Lo reinicié tres veces, pero los errores seguían, así que volví al seguimiento manual.
      Ahora PTA es mucho más estable y siento que yo tengo el control