Saltar al contenido principal

Configuración de Beancount para Startups

Una base práctica, lista para copiar y pegar, para llevar la contabilidad de tu startup en texto plano. Funciona desde pre-semilla hasta Serie A. Esto no es asesoramiento legal ni fiscal.


Dirigir una startup significa llevar muchos sombreros, y uno de los más críticos es el de "contable". Antes de poder permitirte software caro o un contable a tiempo completo, necesitas un sistema que sea preciso, auditable y que no te encierre en un ecosistema propietario. Aquí entra Beancount: un sistema contable de código abierto y texto plano.

Usar Beancount significa que tu libro mayor vive en archivos de texto, junto a tu código en un repositorio Git. Está versionado, es transparente e infinitamente personalizable. Esta guía proporciona una configuración completa, lista para copiar y pegar, para llevar los libros de tu startup desde la constitución hasta la Serie A, basada en principios contables sólidos de devengo.

1) Lo que vas a configurar

Esta guía te guiará en la creación de una configuración contable completa y de nivel profesional. Al final, tendrás:

  • Un libro mayor de fuente única de verdad gestionado en Git (main.beancount), que te dará un historial completo y auditable de las finanzas de tu empresa.
  • Fava para informes y gráficos excelentes. Fava es una interfaz web para Beancount que convierte tus archivos de texto en estados de resultados, balances y análisis de flujo de caja interactivos.
  • Una estructura para importadores que puedes añadir más adelante para automatizar la entrada de transacciones desde tu banco, tarjeta de crédito, PayPal y cuentas de Stripe. Empezaremos manualmente para aprender el sistema y luego automatizaremos.
  • Un plan contable preparado para devengo diseñado para startups modernas, con soporte integrado para ingresos diferidos, gastos pagados por adelantado y pasivos de nómina.
  • Primitivas para financiación semilla, incluidos ejemplos claros para registrar notas SAFE (como pasivo o patrimonio) y notas convertibles con intereses.

2) Estructura del proyecto (introdúcela en tu repositorio)

Comienza creando esta estructura de directorios dentro del repositorio Git de tu empresa. Esta organización mantiene tu libro mayor limpio y escalable.

/ledger
  main.beancount
  /includes
    accounts.beancount
    opening-balances.beancount
    policies.beancount
  /documents
    /bank
    /invoices
    /receipts
  /importers              # opcional; añádelo cuando automatices la ingesta de CSV
    bank_importer.py
    card_importer.py
  • main.beancount: El archivo central que lo une todo.
  • /includes: Contiene tu plan contable, saldos iniciales y políticas contables.
  • /documents: Un lugar para almacenar PDFs de extractos bancarios, facturas y recibos para un rastro de auditoría limpio.
  • /importers: Donde vivirán tus futuros scripts de Python para analizar los CSV del banco.

3) main.beancount mínimo y sensato

Este es el punto de entrada de tu libro mayor. Establece algunas opciones globales e incluye los otros archivos componentes. Copia este contenido en ledger/main.beancount y personaliza el título.

option "title" "Acme, Inc. Ledger"
option "operating_currency" "USD"
option "documents" "ledger/documents"
 
include "includes/accounts.beancount"
include "includes/opening-balances.beancount"
include "includes/policies.beancount"
 
; Si más adelante añades importadores, añadirás líneas de plugin aquí.
; plugin "beancount.plugins.implicit_prices"

4) Plan contable inicial (primero el devengo)

Tu plan contable es la lista completa de categorías para las transacciones financieras de tu empresa. Esta plantilla inicial está construida para la contabilidad de devengo, que ofrece una imagen mucho más precisa de la salud de tu empresa que la contabilidad de caja.

Pon esto en includes/accounts.beancount. No dudes en eliminar cualquier cuenta que no necesites de inmediato.

; --- Activos ---
1970-01-01 open Assets:Bank:Checking              USD
1970-01-01 open Assets:Bank:Savings                USD
1970-01-01 open Assets:AR                         USD         ; Cuentas por cobrar
1970-01-01 open Assets:Prepaid:Software            USD
1970-01-01 open Assets:Prepaid:Insurance           USD
1970-01-01 open Assets:Deposits                    USD         ; Depósitos de garantía
1970-01-01 open Assets:Equipment                   USD
1970-01-01 open Assets:Intangibles                 USD
1970-01-01 open Assets:Crypto:BTC                  BTC
1970-01-01 open Assets:Other
 
; --- Pasivos ---
1970-01-01 open Liabilities:AP                     USD         ; Cuentas por pagar
1970-01-01 open Liabilities:CreditCard:Corporate   USD
1970-01-01 open Liabilities:DeferredRevenue        USD
1970-01-01 open Liabilities:Payroll:Withholding    USD
1970-01-01 open Liabilities:Payroll:EmployerTaxes  USD
1970-01-01 open Liabilities:SalesTax:CA            USD
1970-01-01 open Liabilities:SAFE                   USD
1970-01-01 open Liabilities:NotesPayable           USD
1970-01-01 open Liabilities:Other
 
; --- Patrimonio ---
1970-01-01 open Equity:CommonStock                 USD
1970-01-01 open Equity:APIC                        USD         ; Capital pagado adicional
1970-01-01 open Equity:SAFE                        USD         ; Si clasificas los SAFE como patrimonio
1970-01-01 open Equity:RetainedEarnings            USD
1970-01-01 open Equity:OpeningBalances             USD
 
; --- Ingresos (saldos negativos) ---
1970-01-01 open Income:Revenue:SaaS                USD
1970-01-01 open Income:Revenue:Services            USD
1970-01-01 open Income:Other                       USD
 
; --- Gastos ---
1970-01-01 open Expenses:COGS                      USD
1970-01-01 open Expenses:Payroll:Wages             USD
1970-01-01 open Expenses:Payroll:EmployerTaxes     USD
1970-01-01 open Expenses:Benefits                  USD
1970-01-01 open Expenses:Contractors               USD
1970-01-01 open Expenses:Software:Subscriptions    USD
1970-01-01 open Expenses:Cloud                     USD
1970-01-01 open Expenses:Rent                      USD
1970-01-01 open Expenses:Meals                     USD
1970-01-01 open Expenses:Travel                    USD
1970-01-01 open Expenses:Marketing                 USD
1970-01-01 open Expenses:Legal                     USD
1970-01-01 open Expenses:Accounting                USD
1970-01-01 open Expenses:Insurance                 USD
1970-01-01 open Expenses:BankFees                  USD
1970-01-01 open Expenses:Taxes:Income              USD
1970-01-01 open Expenses:Taxes:Sales               USD
1970-01-01 open Expenses:Other                     USD

Notas

  • Las cuentas de ingresos son negativas porque representan créditos en la contabilidad de partida doble. No te preocupes por esto; Fava invierte automáticamente los signos en los informes, así tu ingresos aparecerán como un número positivo en el estado de resultados.
  • Mantén categorías estrechas y con propósito al principio. Es mucho más fácil añadir nuevas cuentas más adelante que limpiar un plan contable desordenado y demasiado granular.

5) Saldos iniciales (primer día)

La primera transacción en tu libro mayor establece el escenario. Registra el estado inicial de tus cuentas el día en que comienzas a hacer seguimiento. Pon esta transacción en includes/opening-balances.beancount, ajustando la fecha y los importes para reflejar tu posición inicial real.

2025-01-01 * "Saldos iniciales"
  Assets:Bank:Checking              5,000.00 USD
  Liabilities:CreditCard:Corporate   -500.00 USD
  Equity:OpeningBalances           -4,500.00 USD

Esta entrada establece que la empresa comenzó con $5,000 en el banco y un saldo de $500 en su tarjeta de crédito. La cuenta Equity:OpeningBalances es una cuenta especial utilizada para asegurar que la transacción cuadre a cero, como exige la contabilidad de partida doble.


6) Transacciones comunes de startups (copiar y pegar)

Aquí tienes recetas para los eventos financieros más comunes en una startup en etapa inicial. Cópialas, pégalas y adáptalas para tu propio uso.

Compra de acciones de los fundadores (simple, solo moneda)

Cuando los fundadores compran sus acciones iniciales a su valor nominal, el efectivo entra a la empresa y se registra como patrimonio. Tu tabla de capitalización (Carta, Pulley o una hoja de cálculo) es la fuente de verdad para el número de acciones; el libro mayor solo registra los dólares.

2025-01-05 * "Compra de acciones de fundador @ valor nominal"
  Assets:Bank:Checking                800.00 USD
  Equity:CommonStock                   -0.80 USD
  Equity:APIC                        -799.20 USD
  ; 8,000,000 comunes @ $0.0001 — recuentos mantenidos fuera del libro mayor

(Opcional) Registra tus propias acciones como un commodity

Si quieres que el libro mayor registre el número de acciones emitidas, puedes definir tus acciones como un "commodity". Esto es más complejo pero proporciona un registro más completo dentro del libro mayor.

2025-01-05 commodity ACME
  name: "Acme, Inc. Comunes"
 
2025-01-05 * "Emisión de acciones de fundador"
  Assets:Bank:Checking                800.00 USD
  Equity:APIC                        -799.20 USD
  Equity:CommonStock           -8,000,000 ACME {0.0001 USD}

Entrada de efectivo por SAFE (elige la clasificación)

Un SAFE (Acuerdo Simple para Patrimonio Futuro) puede tratarse como un pasivo o como una forma de patrimonio (específicamente, "patrimonio intermedio"). Consulta con tu contable para elegir el enfoque correcto y sé consistente.

; (A) Clasificación como patrimonio (intermedio)
2025-02-01 * "SAFE post-money — SeedFund"
  Assets:Bank:Checking            500,000.00 USD
  Equity:SAFE                    -500,000.00 USD
 
; (B) Clasificación como pasivo (hasta la conversión)
2025-02-01 * "SAFE post-money — SeedFund"
  Assets:Bank:Checking            500,000.00 USD
  Liabilities:SAFE               -500,000.00 USD

Cuando se cierre una ronda con precio, reclasificarás el saldo del SAFE a Acciones Preferentes y Capital Pagado Adicional según los documentos de cierre.

Nota convertible con intereses acumulados

A diferencia de un SAFE, una nota convertible es claramente un pasivo que acumula intereses. Registrarás el efectivo inicial y luego contabilizarás el gasto por intereses periódicamente (por ejemplo, trimestralmente).

2025-03-01 * "Nota convertible — 6% anual"
  Assets:Bank:Checking            250,000.00 USD
  Liabilities:NotesPayable       -250,000.00 USD
 
2025-06-30 * "Acumular intereses de nota T2"
  Expenses:Interest                 3,750.00 USD
  Liabilities:NotesPayable         -3,750.00 USD
  ; 250,000 * 6% * 0.25 = 3,750

Venta anual de SaaS (ingresos diferidos + reconocimiento mensual)

Este es un pilar de la contabilidad de devengo. Cuando un cliente paga por adelantado un año, no ganas todos esos ingresos a la vez. Los registras como un pasivo (DeferredRevenue) y luego reconoces 1/12 de ellos cada mes.

2025-03-10 * "Suscripción anual — AcmeCo — INV-001"
  Assets:AR                       1,200.00 USD
  Liabilities:DeferredRevenue    -1,200.00 USD
  narration: "Pago anticipado anual SaaS"
 
2025-03-20 * "Pago INV-001"
  Assets:Bank:Checking            1,200.00 USD
  Assets:AR                      -1,200.00 USD
 
; Reconocer mes 1/12 (repetir mensualmente o con un script)
2025-04-01 * "Reconocimiento de ingresos 1/12 — INV-001"
  Liabilities:DeferredRevenue       100.00 USD
  Income:Revenue:SaaS              -100.00 USD

Gasto pagado por adelantado y amortización

Esto es el inverso de los ingresos diferidos. Cuando pagas por adelantado un servicio (como software anual o seguro), lo registras como un activo (Prepaid) y luego "amortizas" o gastas una parte cada mes.

2025-03-01 * "Software anual pagado por adelantado"
  Assets:Prepaid:Software         1,200.00 USD
  Assets:Bank:Checking           -1,200.00 USD
 
2025-04-01 * "Amortizar prepago 1/12"
  Expenses:Software:Subscriptions   100.00 USD
  Assets:Prepaid:Software          -100.00 USD

Nómina (efectivo neto, con retenciones + impuestos del empleador)

Una entrada de nómina tiene varias partes: el gasto bruto por salarios, el gasto por impuestos del empleador, el efectivo neto pagado a los empleados y el pasivo por los impuestos que has retenido y que deben remitirse al gobierno.

2025-04-15 * "Nómina — 15 abr"
  Expenses:Payroll:Wages          15,000.00 USD
  Expenses:Payroll:EmployerTaxes   1,200.00 USD
  Liabilities:Payroll:Withholding -4,000.00 USD
  Assets:Bank:Checking           -12,200.00 USD

Recaudación y remesa de impuesto a las ventas (ejemplo CA)

Cuando recaudas impuesto a las ventas, no es tu dinero. Es un pasivo que debes al estado. Registras el pasivo cuando haces la venta y lo cancelas cuando remites el impuesto.

2025-05-10 * "Factura #123 — sujeta a impuestos CA"
  Assets:AR                       1,088.75 USD
  Income:Revenue:SaaS              -999.00 USD
  Liabilities:SalesTax:CA           -89.75 USD
 
2025-06-05 * "Pago #123"
  Assets:Bank:Checking            1,088.75 USD
  Assets:AR                      -1,088.75 USD
 
2025-07-20 * "Remitir impuesto a las ventas CA T2"
  Liabilities:SalesTax:CA            89.75 USD
  Assets:Bank:Checking              -89.75 USD

FX y cripto (ligero)

Beancount maneja múltiples monedas de forma nativa. Usa directivas price para registrar los tipos de cambio y la sintaxis de costo {} para transacciones específicas.

2025-03-01 price EUR 1.0832 USD
 
2025-03-02 * "Cargo de AWS UE"
  Expenses:Cloud                     90.00 EUR
  Liabilities:CreditCard:Corporate  -90.00 EUR
 
2025-03-05 * "Comprar BTC para pruebas"
  Assets:Crypto:BTC                   0.0200 BTC {3400.00 USD}
  Assets:Bank:Checking           -3,400.00 USD

7) Usar Fava (informes con un comando)

Fava es la brillante interfaz web que hace que los datos de Beancount cobren vida. Es la recompensa por tu cuidadosa entrada de datos.

  • Instalación: $ pip install fava
  • Ejecución: $ fava ledger/main.beancount
  • Vistas útiles: Estado de Resultados, Balance General, Diario (para filtrar por cuenta/etiqueta) y Consulta (para consultas personalizadas similares a SQL).

Filtros rápidos de Fava:

  • account:DeferredRevenue: Muestra toda la actividad en tu cuenta de ingresos diferidos.
  • tag:#invoice-001: Etiqueta transacciones relacionadas con una factura específica y filtra por ellas.
  • from:2025-01-01 to:2025-12-31: Concéntrate en un período financiero específico.

8) Lista de verificación de cierre mensual (15–45 min)

Al final de cada mes, recorre esta lista de verificación para asegurarte de que tus libros sean precisos y estén actualizados. Esta disciplina hace que la temporada de impuestos y la diligencia de inversores sean pan comido.

  • Bancos/tarjetas de crédito: Importa o ingresa manualmente todas las transacciones. Concilia los saldos con tus extractos.
  • CxC/CxP: Registra todas las facturas emitidas y cuentas por pagar recibidas; marca los elementos pagados como liquidados.
  • Ingresos: Registra las entradas mensuales de reconocimiento de ingresos para todos los contratos pagados por adelantado.
  • Prepagados: Amortiza 1/12 (o la fracción correspondiente) de todos los gastos pagados por adelantado.
  • Nómina: Registra el asiento contable del informe de tu proveedor de nómina.
  • Impuesto a las ventas: Registra tu pasivo por impuesto a las ventas del mes.
  • Instrumentos semilla: Acumula intereses sobre cualquier nota convertible.
  • Verificaciones de cordura:
    • ¿Los ingresos de tu Estado de Resultados coinciden aproximadamente con tu MRR/ARR esperado?
    • ¿Tu tasa de consumo y pista de aterrizaje se alinean con tu plan financiero?
    • ¿$ bean-check se ejecuta sin errores? ¿Los informes de Fava se ven correctos?
  • Haz commit en Git con una nota breve y consistente (por ejemplo, close: 2025-04).

9) Metadatos y documentos (facilita las auditorías)

Tu libro mayor debe autodocumentarse. Usa metadatos y enlaza documentos fuente para crear un rastro de auditoría a prueba de balas. Tu yo del futuro (y tu contable) te lo agradecerán.

  • Añade metadatos como payee:, narration:, invoice:, customer: o link: a las transacciones para mayor claridad.
  • Adjunta los PDFs fuente (facturas, recibos, extractos bancarios) a tu carpeta ledger/documents/ y enlázalos usando la etiqueta de metadatos document:.
  • Usa etiquetas (#payroll, #saas, #vendor-aws, #invoice-001) para facilitar el filtrado y el análisis.

Ejemplo:

2025-03-10 * "Suscripción anual — AcmeCo" #saas #invoice-001
  payee: "AcmeCo"
  invoice: "INV-001"
  document: "documents/invoices/INV-001.pdf"
  Assets:AR                       1,200.00 USD
  Liabilities:DeferredRevenue    -1,200.00 USD

10) Importa más tarde (cuando tengas tiempo)

Comienza ingresando transacciones manualmente durante el primer mes o dos. Esta es la mejor manera de aprender el sistema y tus propios patrones de gasto. Una vez que te sientas cómodo, puedes escribir importadores simples en Python para automatizar el proceso y reducir el trabajo manual.

Un orden de batalla típico para los importadores:

  1. Banco CSV → Assets:Bank:Checking
  2. Tarjeta de crédito CSV → Liabilities:CreditCard:Corporate
  3. Informes de pagos de Stripe/PayPal → Mapeo de ingresos y efectivo

Mantén tus importadores en /ledger/importers y revisa sus transacciones generadas como cualquier otro cambio de código.


11) Políticas (ponlas en includes/policies.beancount)

Este archivo es donde documentas tus decisiones contables para mantener la consistencia. Es un archivo de texto simple, pero es crucial para mantener la disciplina.

  • Base de devengo; reconoce los ingresos de SaaS de forma prorrateada.
  • La moneda funcional es USD; registra el FX al tipo de cambio diario o al tipo de la transacción.
  • Umbral de capitalización (por ejemplo, los elementos de más de $2,500 se convierten en un elemento de Assets:Equipment; de lo contrario, se gastan de inmediato).
  • Viajes/Comidas: El propósito comercial debe documentarse en el campo narration.
  • Registro de patrimonio: Indica explícitamente si estás usando el método solo moneda o commodity de acciones.
  • SAFEs/notas: Documenta tu clasificación elegida (Pasivo o Patrimonio).

Ejemplo de policies.beancount:

; Política: Base de devengo, ingresos diferidos y reconocidos mensualmente.
; Política: Moneda funcional USD. Las ganancias/pérdidas por FX se derivan de los datos de costo/precio.
; Política: Capitalizar activos tangibles de más de $2,500 con depreciación lineal a 3 años.
; Política: Los SAFE se registran como Pasivos hasta la conversión en una ronda con precio.

12) Solución rápida de problemas

  • Los ingresos se ven negativos en el Diario: ¡Esto es correcto! Los ingresos son un crédito. Los informes de Fava los mostrarán como un número positivo.
  • Los saldos no cuadran: Probablemente tengas una transacción incompleta. Los apuntes de una transacción deben sumar cero. Usa la vista de Diario de Fava para encontrar el culpable. Como medida temporal, puedes añadir una contrapartida a una cuenta Equity:Suspense para que el archivo sea válido, y luego investigar y corregir la causa raíz.
  • Desajustes de FX: Asegúrate de tener directivas price para las fechas relevantes o especifica la base de costo en tu moneda operativa, como 90.00 EUR {97.49 USD}.

13) Qué rastrear fuera del libro mayor (mantén enlaces)

Beancount es para tus transacciones financieras, pero algunas cosas se gestionan mejor en sistemas dedicados. La clave es enlazarlas desde tu libro mayor.

  • Tabla de capitalización: Usa Carta, Pulley o una hoja de cálculo. Enlaza los documentos de cierre firmados desde tus transacciones de financiación en Beancount.
  • Consentimientos de la Junta, Plan de Patrimonio, Informes 409A: Almacénalos en un lugar seguro y añade metadatos link: a las transacciones de patrimonio relevantes.
  • Declaraciones de impuestos: Almacena los PDFs finales y enlázalos desde una transacción de cierre de fin de año.

Archivo inicial listo para copiar (todo en uno)

Si prefieres comenzar con un solo archivo antes de expandir a la estructura de includes, simplemente puedes pegar el contenido de los archivos de las secciones anteriores en un solo main.beancount grande. Siempre puedes refactorizarlo más adelante a medida que tu libro mayor crezca.

Este marco proporciona una base sólida y escalable para las finanzas de tu startup. Al mantener tus libros en texto plano bajo control de versiones, obtienes una transparencia y un control inigualables, preparando a tu empresa para la disciplina financiera desde el primer día.