Saltar al contenido principal

Una publicación con la etiqueta "facturación"

Ver todas las etiquetas

Creación y seguimiento de facturas con Beancount

· Lectura de 6 minutos
Mike Thrift
Mike Thrift
Marketing Manager

Una plantilla de texto plano, un flujo de trabajo repetible y una sola consulta para “¿Quién me debe todavía?”


2022-02-12-crafting-tracking-invoices-with-beancount

Facturar puede parecer una tarea tediosa, atrapada entre el trabajo que ha terminado y el pago que está esperando. Pero un buen proceso de facturación es la columna vertebral de un flujo de caja saludable. Cumple una doble función: les dice claramente a sus clientes lo que deben y cuándo, y alimenta a su sistema de contabilidad con los hechos irrefutables que necesita.

Si bien las aplicaciones SaaS dedicadas pueden enviar archivos PDF elegantes y automatizados, a menudo vienen con tarifas mensuales y bloquean sus datos en un silo propietario. Un enfoque ligero de texto plano que utiliza Beancount ofrece una alternativa poderosa. Puede convertir cada factura en un conjunto claro de entradas contables, lo que le brinda todos los beneficios del control de versiones, metadatos potentes y consultas instantáneas, sin necesidad de suscripción.


La factura mínima viable (campos que nunca debe omitir)

Antes de tocar su libro mayor, necesita una factura profesional. El formato puede ser simple, pero el contenido debe ser preciso. Estos campos, tomados de la práctica comprobada de las pequeñas empresas, no son negociables.

  • Detalles del vendedor: Nombre y dirección física de su empresa.
  • Detalles del cliente: Nombre de su cliente e (idealmente) su dirección.
  • Número de factura: Una identificación única y secuencial que nunca se reutiliza. INV-045 sigue a INV-044.
  • Fechas de emisión y vencimiento: Indique claramente cuándo se emitió la factura y cuándo se espera el pago.
  • Partidas: Una descripción clara de los servicios o productos, junto con la cantidad, la tarifa y el total de la línea.
  • Subtotal, impuestos y total: Muestre los cálculos para que el cliente pueda seguirlos fácilmente.
  • Notas opcionales: Un lugar para un agradecimiento, instrucciones de transferencia bancaria o un número de orden de compra proporcionado por el cliente.

Para comenzar, hemos creado un conjunto de plantillas listas para editar que incluyen todos estos campos. Las versiones de hoja de cálculo incluso calculan previamente los totales por usted.

Obtenga nuestras plantillas aquí: beancount.io/invoice‑templates (Disponible en formatos de Google Docs, Word, Hojas de cálculo, Excel y PDF)


Registrar la factura en su libro mayor

Una vez que haya enviado el PDF de la factura a su cliente, debe registrarlo en Beancount. Este es un paso crucial que reconoce los ingresos cuando se ganan, no solo cuando se pagan. El proceso implica dos transacciones distintas.

1. Cuando emite la factura:

Crea una transacción que mueve el monto total de su cuenta de Ingresos a Activos:CuentasPorCobrar. Esto crea un pagaré digital en sus libros.

; 2025‑07‑21 Factura #045  Diseño web sprint para Acme Corp.
2025-07-21 * "Acme Corp" "INV-045 Diseño web sprint"
Activos:CuentasPorCobrar 3500.00 USD ; vence:2025-08-04
Ingresos:Diseño:Web
invoice_id: "INV-045"
contact_email: "ap@acme.example"
link: "docs/invoices/2025-07-21_Acme_INV-045.pdf"

Aquí, debita CuentasPorCobrar y acredita su cuenta de Ingresos. Observe los ricos metadatos: la fecha de vencimiento, un invoice_id único e incluso un link: directo al PDF que envió.

2. Cuando el cliente paga:

Cuando el efectivo llega a su cuenta bancaria, registra una segunda transacción para "cerrar" el pagaré. Esto mueve el saldo de CuentasPorCobrar a su cuenta corriente.

2025-08-01 * "Acme Corp" "Pago INV-045"
Activos:Banco:CuentaCorriente 3500.00 USD
Activos:CuentasPorCobrar
invoice_id: "INV-045"

El saldo de INV-045 en Activos:CuentasPorCobrar ahora es cero y sus libros están perfectamente equilibrados.

Adjunte el PDF: La clave de metadatos link: es especialmente poderosa cuando se usa con Fava, la interfaz web de Beancount. Fava representará un enlace cliqueable directamente en la vista de transacción, por lo que el documento fuente nunca está a más de un clic de distancia. Este flujo de trabajo se previó ya en 2016 en una solicitud de función (GitHub).


Una consulta para listar todas las facturas abiertas

Entonces, ¿quién le debe todavía dinero? Con este sistema, no necesita buscar en correos electrónicos u hojas de cálculo. Solo necesita una consulta simple.

Guarde lo siguiente como un archivo llamado facturas-abiertas.sql:

SELECT
meta('invoice_id') AS id,
payee,
narration,
date,
number(balance) AS pendiente
WHERE
account = "Activos:CuentasPorCobrar"
AND balance != 0
ORDER BY
date;

Ahora, ejecútelo desde su línea de comandos:

bean-query books.beancount facturas-abiertas.sql

En segundos, obtendrá un informe de antigüedad limpio y actualizado de todas las facturas pendientes, que muestra la identificación de la factura, el cliente, la fecha de emisión y el monto adeudado. No se requiere software adicional.


Automatizar el trabajo pesado

La belleza del texto plano es la capacidad de creación de scripts. Puede automatizar las partes tediosas de este flujo de trabajo.

  • Plantilla + Pandoc = PDF: Mantenga su plantilla de factura en Markdown. Un pequeño script de Python puede completar las variables (nombre del cliente, partidas, número de factura) y la herramienta de línea de comandos Pandoc puede convertirla instantáneamente a un PDF profesional.
  • Git Pre-commit Hook: Si almacena su libro mayor en Git, un simple gancho de pre-commit puede ejecutar comprobaciones antes de guardar su trabajo. Puede verificar que cada nuevo invoice_id sea único, que los asientos de la transacción tengan un saldo cero y que el archivo al que se hace referencia en los metadatos de link: realmente exista.
  • Trabajo Cron: Configure una tarea programada (un trabajo cron) para ejecutar su consulta facturas-abiertas.sql todas las noches y enviarle el resumen por correo electrónico. Comenzará cada día sabiendo exactamente quién necesita un pequeño recordatorio.

Una advertencia realista

Beancount es una herramienta de contabilidad, no un servicio de facturación. No enviará automáticamente recordatorios de pago a sus clientes ni procesará sus pagos con tarjeta de crédito. El flujo de trabajo es: usted crea y envía la factura utilizando el método que elija (como las plantillas anteriores) y luego registra las entradas contables en su libro mayor.

Para la mayoría de los autónomos y las pequeñas tiendas, este paso manual es un pequeño precio a pagar por un sistema de contabilidad a prueba de balas, auditable y gratuito que usted posee y controla por completo (beancount.io).


Próximos pasos

¿Listo para tomar el control de su facturación? Aquí le mostramos cómo empezar.

  1. Descargue una plantilla y úsela para crear su próxima factura real, asegurándose de usar un número de factura secuencial.
  2. Almacene sus archivos PDF enviados en una carpeta dedicada como docs/invoices/ y use la clave de metadatos link: en su transacción de Beancount para hacer referencia a ellos.
  3. Guarde la consulta facturas-abiertas.sql y haga que su ejecución sea parte de su revisión financiera semanal.

La contabilidad de texto plano no significa renunciar a la precisión o al control, solo significa que la base de datos se puede grep. Con una plantilla simple y los fragmentos de código anteriores, le pagarán más rápido y mantendrá sus libros impecables.