¿Qué es Cuentas por Pagar? Una Guía Amigable con Beancount para Rastrear Facturas de Proveedores en Texto Plano
Las cuentas por pagar (AP) son el dinero que tu negocio debe a sus proveedores por bienes o servicios que ya has recibido pero que aún no has pagado. En contabilidad, AP se clasifica como un pasivo corriente en tu balance: una cantidad que normalmente se debe pagar dentro del próximo año, y con frecuencia dentro de 30 a 60 días.
Este concepto es central en la contabilidad de acumulación, donde registras el gasto y el pasivo correspondiente en el momento en que llega la factura, no cuando realmente envías el efectivo. Esta guía te mostrará cómo gestionar todo el flujo de trabajo de AP de forma limpia y eficiente usando la herramienta de contabilidad en texto plano, Beancount.
Resumen rápido
Antes de entrar en detalles, cubramos lo esencial:
- Cuentas por pagar (AP) representa tus deudas a corto plazo con los proveedores. La encontrarás bajo la sección
Liabilities
de tu balance. - Acumulación vs. Efectivo: AP solo existe si llevas tus libros bajo una base de acumulación. Beancount soporta totalmente los flujos de trabajo de acumulación, y su interfaz web, Fava, mostrará tus pasivos correctamente.
- AP vs. AR: Es simple: las cuentas por pagar son lo que debes, mientras que las cuentas por cobrar (AR) son lo que otros te deben.
Dónde vive AP en Beancount (y Fava)
Para comenzar a rastrear AP, primero debes declarar una cuenta para ello en tu libro mayor. Una convención estándar es:
Liabilities:AccountsPayable
Opcionalmente puedes crear subcuentas para proveedores principales (p. ej., Liabilities:AccountsPayable:ForestPaintSupply
).
En Fava, esta cuenta aparecerá en tu Balance bajo Liabilities
. Puedes hacer clic para profundizar y ver una lista de todos los ítems abiertos y pagados, dándote una visión clara de tus obligaciones. Incluso puedes ver esto en acción en el libro mayor de ejemplo público de Fava, que incluye una cuenta Liabilities:AccountsPayable
.
Bloques de construcción de Beancount que usarás
Un flujo de trabajo robusto de AP en Beancount se apoya en algunas funciones clave:
- Cuentas: Usarás principalmente tu cuenta
Liabilities:AccountsPayable
, una cuenta de efectivo comoAssets:Bank:Checking
, y tus diversas cuentas de gasto (p. ej.,Expenses:Supplies
). - Metadatos: Puedes adjuntar pares clave‑valor a cualquier transacción. Para AP usarás metadatos como
invoice:
,due:
,terms:
ydocument:
. Fava reconoce la clavedocument:
y creará automáticamente un enlace clicable al archivo adjunto si configuras una carpeta de documentos. - Etiquetas y enlaces: Usa
#tags
(como#ap
) para filtrar fácilmente y^links
(como^INV-10455
) para vincular programáticamente una factura con su pago posterior. Esto crea una pista clara y auditable. - Consultas (BQL): El lenguaje de consultas similar a SQL de Beancount (BQL) te permite ejecutar informes potentes, como listar todas las cuentas por pagar abiertas ordenadas por fecha de vencimiento, directamente desde la línea de comandos con
bean-query
o en la página “Query” de Fava.
Flujo de trabajo central de AP en Beancount
Gestionar AP en tu libro mayor implica dos o tres pasos clave: registrar la factura, pagarla y, a veces, manejar pagos parciales o descuentos.
1) Registrar la factura del proveedor (crea el pasivo)
Primero, registras el gasto y creas la cuenta por pagar cuando llega la factura.
; Opcionalmente define tu carpeta de documentos en el archivo principal de Beancount:
option "documents" "documents"
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
terms: "2/10, n/30"
document: "invoices/2025-08-05-forest-paint-INV-10455.pdf"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USD
Esta única entrada logra dos cosas críticas:
- Reconoce inmediatamente el gasto de $500 en el período correcto (agosto).
- Crea un pasivo correspondiente de $500, mostrando que le debes dinero a Forest Paint Supply.
El enlace ^INV-10455
es un identificador único que te permite adjuntar el mismo enlace al pago más tarde, manteniendo la factura y el pago lógicamente conectados.
2) Pagar la factura (elimina el pasivo)
Cuando pagas la factura, creas una transacción que mueve dinero de tu cuenta bancaria para liquidar el pasivo.
a) Pago estándar (sin descuento):
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USD
Esta entrada reduce tu saldo de AP en $500 y el saldo de tu cuenta corriente en la misma cantidad. El pasivo queda liquidado.
b) Descuento por pronto pago (p. ej., “2/10, n/30”):
Si los términos son “2/10, n/30”, puedes obtener un 2 % de descuento si pagas dentro de 10 días. Para nuestra factura de 10 de descuento. Aquí tienes dos formas aceptables de registrarlo—elige una y sé consistente.
; Opción 1: Registrar el descuento como otro ingreso (efecto contra‑gasto)
2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -490.00 USD
Income:Discounts:Payables -10.00 USD
; Opción 2: Reducir directamente el gasto original
2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -490.00 USD
Expenses:Supplies:Paint -10.00 USD
En ambos casos, eliminas el pasivo completo de 490 (lo que realmente pagaste) y contabilizas el beneficio de $10.
3) Manejar pagos parciales
La función de enlaces de Beancount hace que rastrear pagos parciales sea sencillo y limpio.
; Factura de $1,200
2025-08-10 * "Acme Parts" "INV-9001" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Expenses:Parts 1200.00 USD
Liabilities:AccountsPayable -1200.00 USD
; Primer pago de $400
2025-08-20 * "Acme Parts" "Payment INV-9001 (1/3)" ^INV-9001
Liabilities:AccountsPayable 400.00 USD
Assets:Bank:Checking -400.00 USD
; Pago final de $800
2025-09-05 * "Acme Parts" "Payment INV-9001 (final)" ^INV-9001
Liabilities:AccountsPayable 800.00 USD
Assets:Bank:Checking -800.00 USD
Al usar el enlace ^INV-9001
en las tres transacciones, puedes filtrar fácilmente tu diario para ver el historial completo de esta factura específica y sus pagos asociados.
Consultas útiles (BQL)
Puedes ejecutar estas consultas en la pestaña “Query” de Fava o desde la línea de comandos con bean-query
.
Consejo: La función
any_meta()
es extremadamente útil para extraer campos de metadatos comoinvoice:
ydocument:
en los resultados de tus consultas.
AP abierto por proveedor (vista de saldo):
Esta consulta suma el saldo pendiente actual que le debes a cada proveedor.
SELECT payee, COST(SUM(position)) AS amount
WHERE account "^Liabilities:AccountsPayable"
GROUP BY payee
ORDER BY payee;
AP abierto por factura + fecha de vencimiento:
Obtén una lista ordenada de cada factura abierta, ordenada por su fecha de vencimiento, para ayudarte a priorizar pagos.
SELECT payee,
any_meta('invoice') AS invoice,
any_meta('due') AS due,
COST(SUM(position)) AS amount
WHERE account "^Liabilities:AccountsPayable"
GROUP BY payee, invoice, due
ORDER BY due, payee;
Listar facturas con PDFs adjuntos:
Esta consulta encuentra todas tus facturas y muestra la ruta al documento enlazado.
SELECT date, payee, any_meta('invoice') AS invoice, any_meta('document') AS file
WHERE account "^Liabilities:AccountsPayable"
ORDER BY date DESC;
Dónde ver AP en Fava
- Balance: Navega a
Balance Sheet
→Liabilities
→AccountsPayable
para ver el saldo total y profundizar en los detalles de cada transacción. - Diario: Filtra el diario con
account:Liabilities:AccountsPayable
o con un enlace específico como^INV-xxxx
para ver el ciclo de vida completo de una factura. - Barra lateral de documentos: Si usas el metadato
document:
y configuras la directivaoption "documents"
, verás una lista de documentos enlazados en la barra lateral.
Envejecimiento de AP, Rotación y Conciencia de Flujo de Caja
- Calendario de envejecimiento: Este informe agrupa tus facturas abiertas por tiempo de vencimiento (p. ej., 1‑30 días, 31‑60 días, más de 60 días). En Beancount, el enfoque más práctico es ejecutar la consulta “AP abierto por factura + fecha de vencimiento” anterior, exportar los resultados a CSV y agruparlos en una hoja de cálculo o con un pequeño script Python.
- Ratio de rotación de AP: Es una medida rápida de cuán rápido pagas a tus proveedores. La fórmula es
Compras totales a proveedores ÷ Promedio de AP
. Una métrica relacionada, Días de Cuentas por Pagar (DPO), se calcula aproximadamente como365 ÷ Ratio de rotación
. - Si no puedes pagar a tiempo: AP está pensado para deudas a corto plazo. Si un proveedor acepta un plazo de pago más largo y formal, deberías reclasificar la deuda fuera de AP y moverla a una nota por pagar.
2025-10-01 * "Helix Industries" "Convert overdue AP to 12-month note" ^INV-1110
Liabilities:AccountsPayable 2000.00 USD
Liabilities:NotesPayable -2000.00 USD
Mejores prácticas para AP en un libro mayor de texto plano
- Sin papel: Guarda los PDFs de facturas en tu carpeta
documents
y enlázalos con la clave de metadatodocument:
. - Usa enlaces de forma consistente: Pon el número de factura único en un
^link
tanto en la factura como en todas las entradas de pago asociadas. - Mantén los metadatos ordenados: Usar consistentemente
invoice:
,due:
yterms:
mejora la búsqueda, las consultas y las revisiones financieras. - Acumulación total: Si deseas informes útiles de AP, comprométete a llevar tus libros bajo una base de acumulación. Beancount y Fava manejan esto de forma excelente.
Copia‑pega de inicio: Factura de proveedor + Pago
; ---- Factura ----
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
document: "invoices/2025-08-05-forest-paint-INV-10455.pdf"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USD
; ---- Pago (sin descuento) ----
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USD
Esta guía es con fines educativos y no constituye asesoramiento fiscal, legal o financiero.