Saltar al contenido principal

Configuración de Beancount para Startups

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


beancount-setup-for-startups

Dirigir una startup significa desempeñar muchas funciones, y una de las más críticas es la de "contable". Antes de que puedas permitirte un software costoso o un contable a tiempo completo, necesitas un sistema que sea preciso, auditable y que no te encierre en un ecosistema propietario. Aquí es donde entra Beancount: un sistema de contabilidad de código abierto y texto plano.

Usar Beancount significa que tu libro mayor financiero reside en archivos de texto, junto con tu código en un repositorio Git. Está controlado por versiones, es transparente e infinitamente personalizable. Esta guía proporciona una configuración completa, para copiar y pegar, para que los libros de tu startup funcionen desde la constitución hasta tu Serie A, construida sobre principios contables sólidos basados en el devengo.

1) Qué vas a configurar

Esta guía te guiará a través de 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 bonitos. Fava es una interfaz web para Beancount que convierte tus archivos de texto en estados de resultados interactivos, balances y análisis de flujo de caja.
  • Una estructura para importadores que puedes añadir más tarde para automatizar la entrada de transacciones desde tus cuentas bancarias, tarjetas de crédito, PayPal y Stripe. Empezaremos manualmente para aprender el sistema y luego lo automatizaremos.
  • Un plan de cuentas listo para el devengo diseñado para startups modernas, con soporte incorporado para ingresos diferidos, gastos prepagados y pasivos de nómina.
  • Primitivas para la financiación semilla, incluyendo ejemplos claros para registrar notas SAFE (ya sea como pasivo o patrimonio) y notas convertibles con intereses.

2) Estructura del proyecto (colocar 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 # optional; add when you automate CSV ingestion
bank_importer.py
card_importer.py
  • main.beancount: El archivo central que lo une todo.
  • /includes: Contiene tu plan de cuentas, saldos iniciales y políticas contables.
  • /documents: Un lugar para almacenar PDFs de extractos bancarios, facturas y recibos para una pista de auditoría limpia.
  • /importers: Donde vivirán tus futuros scripts de Python para analizar los CSVs bancarios.

3) main.beancount mínimo y sensato

Este es el punto de entrada para 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" "Libro Mayor de Acme, Inc."
option "operating_currency" "USD"
option "documents" "ledger/documents"

include "includes/accounts.beancount"
include "includes/opening-balances.beancount"
include "includes/policies.beancount"

; Si más tarde añades importadores, añadirás líneas de plugin aquí.
; plugin "beancount.plugins.implicit_prices"

4) Plan de cuentas inicial (primero el devengo)

Tu plan de cuentas 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 da una imagen mucho más precisa de la salud de tu empresa que la contabilidad basada en el efectivo.

Coloca esto en includes/accounts.beancount. Siéntete libre de 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 seguridad
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 Adicional Pagado
1970-01-01 open Equity:SAFE USD ; Si clasificas los SAFEs 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 doble entrada. No te preocupes por esto; Fava invierte automáticamente los signos en los informes, por lo que tus ingresos aparecerán como un número positivo en el estado de resultados.
  • Mantén categorías estrechas y con propósito para empezar. Es mucho más fácil añadir nuevas cuentas más tarde que limpiar un plan de cuentas 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 empiezas a hacer el seguimiento. Coloca 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 se equilibre a cero, como lo requiere la contabilidad de doble entrada.


6) Transacciones comunes de startups (copiar y pegar)

Aquí tienes recetas para los eventos financieros más comunes en una startup en sus primeras etapas. Copia, pega y adáptalas para tu propio uso.

Compra de acciones por fundadores (simple, sólo moneda)

Cuando los fundadores compran sus acciones iniciales al valor nominal, el efectivo entra en 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 recuento de acciones; el libro mayor sólo registra los dólares.

2025-01-05 * "Compra de acciones por fundadores @ par"
Assets:Bank:Checking 800.00 USD
Equity:CommonStock -0.80 USD
Equity:APIC -799.20 USD
; 8,000,000 common @ $0.0001 — counts maintained off-ledger

(Opcional) Seguimiento de tus propias acciones como una mercancía

Si quieres que el libro mayor haga un seguimiento del número de acciones emitidas, puedes definir tus acciones como una "mercancía". Esto es más complejo, pero proporciona un registro más completo en el libro mayor.

2025-01-05 commodity ACME
name: "Acme, Inc. Common"

2025-01-05 * "Emisión de acciones a fundadores"
Assets:Bank:Checking 800.00 USD
Equity:APIC -799.20 USD
Equity:CommonStock -8,000,000 ACME {0.0001 USD}

Entrada de efectivo SAFE (elige la clasificación)

Un SAFE (Simple Agreement for Future Equity) puede ser tratado como un pasivo o como una forma de patrimonio (específicamente, "patrimonio mezzanine"). Consulta con tu contable para elegir el enfoque correcto y sé consistente.

; (A) Clasificación de patrimonio (mezzanine)
2025-02-01 * "SAFE post-money — SeedFund"
Assets:Bank:Checking 500,000.00 USD
Equity:SAFE -500,000.00 USD

; (B) Clasificación de 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 valorada, reclasificarás el saldo de SAFE a Acciones Preferentes y Capital Adicional Pagado basándote en los documentos de cierre.

Nota convertible con intereses acumulados

A diferencia de un SAFE, una nota convertible es inequívocamente un pasivo que acumula intereses. Registrarás el efectivo inicial y luego registrarás los gastos 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 la nota Q2"
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)

Esta es una piedra angular de la contabilidad de devengo. Cuando un cliente paga por adelantado por un año, no ganas todos esos ingresos a la vez. Lo registras en un pasivo (DeferredRevenue) y luego reconoces 1/12 del mismo cada mes.

2025-03-10 * "Suscripción anual — AcmeCo — INV-001"
Assets:AR 1,200.00 USD
Liabilities:DeferredRevenue -1,200.00 USD
narration: "SaaS annual prepay"

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 escribir un script)
2025-04-01 * "Reconocimiento de ingresos 1/12 — INV-001"
Liabilities:DeferredRevenue 100.00 USD
Income:Revenue:SaaS -100.00 USD

Gasto prepagado y amortización

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

2025-03-01 * "Software anual prepagado"
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 salarial bruto, el gasto de impuestos del empleador, el efectivo neto pagado a los empleados y el pasivo por los impuestos que has retenido y que deben ser remitidos al gobierno.

2025-04-15 * "Nómina — 15 de abril"
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 del impuesto sobre las ventas (ejemplo CA)

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

2025-05-10 * "Factura #123 — CA taxable"
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 el impuesto sobre las ventas de CA Q2"
Liabilities:SalesTax:CA 89.75 USD
Assets:Bank:Checking -89.75 USD

FX y cripto (ligero)

Beancount maneja múltiples monedas de forma nativa. Utiliza 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 EU"
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) Usando Fava (informes en un comando)

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

  • Instalar: $ pip install fava
  • Ejecutar: $ fava ledger/main.beancount
  • Vistas útiles: Estado de Resultados, Balance General, Diario (para filtrar por cuenta/etiqueta) y Consulta (para consultas personalizadas tipo SQL).

Filtros rápidos de Fava:

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

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

Al final de cada mes, revisa esta lista de verificación para asegurarte de que tus libros estén precisos y actualizados. Esta disciplina facilita la época de impuestos y la diligencia debida de los inversores.

  • Bancos/tarjetas de crédito: Importa o introduce manualmente todas las transacciones. Concilia los saldos con tus extractos.
  • AR/AP: Publica todas las facturas emitidas y las facturas recibidas; marca los artículos pagados como liquidados.
  • Ingresos: Publica las entradas de reconocimiento de ingresos mensuales para todos los contratos prepagados.
  • Prepagos: Amortiza 1/12 (o la fracción apropiada) de todos los gastos prepagados.
  • Nómina: Registra el asiento de diario del informe de tu proveedor de nómina.
  • Impuesto sobre las ventas: Registra tu pasivo por el impuesto sobre las ventas del mes.
  • Instrumentos de semilla: Acumula intereses sobre cualquier nota convertible.
  • Comprobaciones de cordura:
    • ¿Los ingresos de tu Estado de Resultados coinciden aproximadamente con tu MRR/ARR esperado?
    • ¿Tu tasa de quema y pista de aterrizaje se alinean con tu plan financiero?
    • ¿$ bean-check se ejecuta sin errores? ¿Los informes de Fava se ven correctos?
  • Commit a Git con una nota concisa y consistente (por ejemplo, close: 2025-04).

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

Tu libro mayor debe ser auto-documentado. Utiliza metadatos y enlaces a documentos fuente para crear una pista de auditoría a prueba de balas. Tu futuro yo (y tu contable) te lo agradecerán.

  • Añade metadatos como payee:, narration:, invoice:, customer:, o link: a las transacciones para mayor claridad.
  • Adjunta PDFs fuente (facturas, recibos, extractos bancarios) a tu carpeta ledger/documents/ y enlaza a ellos utilizando la etiqueta de metadatos document:.
  • Utiliza 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) Importar más tarde (cuando tengas tiempo)

Comienza introduciendo las 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 sencillos de Python para automatizar el proceso y reducir el trabajo.

Un orden de batalla típico del importador:

  1. CSV bancario → Assets:Bank:Checking
  2. CSV de la tarjeta de crédito → Liabilities:CreditCard:Corporate
  3. Informes de pago de Stripe/PayPal → Mapeo de ingresos y efectivo

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


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

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

  • Base de devengo; reconocer los ingresos de SaaS pro-rata.
  • Moneda funcional es USD; registrar FX a la tasa diaria o tasa de transacción.
  • Umbral de capitalización (por ejemplo, los artículos de más de $2,500 se convierten en un artículo de Assets:Equipment; de lo contrario, se gastan inmediatamente).
  • Viajes/Comidas: El propósito comercial debe estar documentado en el campo narration.
  • Registro de patrimonio: Indica explícitamente si estás utilizando el método sólo moneda o acción-mercancía.
  • SAFEs/notas: Documenta tu clasificación elegida (Pasivo o Patrimonio).

Ejemplo policies.beancount:

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

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 lo mostrarán como un número positivo.
  • Saldos que no se ponen a cero: Es probable que tengas una transacción incompleta. Los asientos de una transacción deben sumar cero. Utiliza la vista Diario de Fava para encontrar al culpable. Como medida temporal, puedes añadir una pata de equilibrio a una cuenta Equity:Suspense para que el archivo sea válido, luego investigar y arreglar la causa raíz.
  • Desajustes de FX: Asegúrate de tener directivas price para las fechas relevantes o de que especificas la base del costo en tu moneda operativa, como 90.00 EUR {97.49 USD}.

13) Qué rastrear fuera del libro mayor (mantener los enlaces)

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

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

Archivo de inicio listo para copiar (todo en uno)

Si prefieres empezar con un solo archivo antes de expandirte a la estructura de inclusión, puedes simplemente pegar el contenido de los archivos de las secciones anteriores en un gran main.beancount. Siempre puedes refactorizarlo más tarde 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 sin igual, preparando a tu empresa para la disciplina financiera desde el primer día.