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.pymain.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 USDNotas
- 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 USDEsta 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 USDCuando 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,750Venta 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 USDGasto 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 USDNó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 USDRecaudació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 USDFX 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 USD7) 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-checkse 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:olink: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 metadatosdocument:. - 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 USD10) 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:
- Banco CSV →
Assets:Bank:Checking - Tarjeta de crédito CSV →
Liabilities:CreditCard:Corporate - 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,500se convierten en un elemento deAssets: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:Suspensepara que el archivo sea válido, y luego investigar y corregir la causa raíz. - Desajustes de FX: Asegúrate de tener directivas
pricepara las fechas relevantes o especifica la base de costo en tu moneda operativa, como90.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.