Что такое кредиторская задолженность? Руководство по Beancount для отслеживания счетов поставщиков в простом тексте
Кредиторская задолженность (AP) — это деньги, которые ваш бизнес должен своим поставщикам за товары или услуги, которые вы уже получили, но ещё не оплатили. В бухгалтерском учёте AP классифицируется как текущее обязательство в балансе — сумма, обычно подлежащая выплате в течение следующего года, часто в течение 30–60 дней.
Эта концепция является центральной в начисленном учёте, где расход и соответствующее обязательство фиксируются в момент получения счёта, а не в момент фактической выплаты. В этом руководстве показано, как управлять полным рабочим процессом AP чисто и эффективно, используя инструмент бухгалтерского учёта в виде простого текста — Beancount.
Краткое содержание
Прежде чем углубляться в детали, рассмотрим основные положения:
- Accounts Payable (AP) — это ваши краткосрочные долги перед поставщиками. Вы найдёте его в разделе
Liabilities
вашего баланса. - Accrual vs. Cash: AP существует только при ведении книг на начисленной основе. Beancount полностью поддерживает начисленные процессы, а его веб‑интерфейс Fava корректно отображает ваши обязательства.
- AP vs. AR: Просто: Payables — это то, что вы должны, а Receivables (AR) — это то, что другие должны вам.
Где находится AP в Beancount (и в Fava)
Чтобы начать отслеживание AP, сначала необходимо объявить счёт для него в вашем журнале. Стандартный вариант:
Liabilities:AccountsPayable
При желании можно создать субсчета для основных поставщиков (например, Liabilities:AccountsPayable:ForestPaintSupply
).
В Fava этот счёт появится в Балансе под Liabilities
. Кликнув по нему, вы сможете увидеть список всех открытых и оплаченных позиций, получив чёткое представление о своих обязательствах. Пример работы можно увидеть в публичном примере журнала Fava — public example ledger, где присутствует счёт Liabilities:AccountsPayable
.
Структурные элементы Beancount, которые вам понадобятся
Надёжный процесс AP в Beancount опирается на несколько ключевых возможностей:
- Accounts: Основные счёта —
Liabilities:AccountsPayable
, денежный счёт, напримерAssets:Bank:Checking
, и различные расходные счёта (например,Expenses:Supplies
). - Metadata: К любой транзакции можно добавить пары «ключ‑значение». Для AP обычно используют
invoice:
,due:
,terms:
иdocument:
. Fava распознаёт ключdocument:
и автоматически создаёт кликабельную ссылку на прикреплённый файл, если настроена папка документов. - Tags & Links: Используйте
#tags
(например,#ap
) для удобной фильтрации и^links
(например,^INV-10455
) для программного связывания счёта и последующей оплаты. Это создаёт ясный, проверяемый след. - Queries (BQL): Язык запросов Beancount, похожий на SQL (BQL), позволяет генерировать мощные отчёты, например список всех открытых обязательств, отсортированных по дате оплаты, прямо из командной строки с
bean-query
или на странице «Query» в Fava.
Основной рабочий процесс AP в Beancount
Управление AP в журнале включает два‑три ключевых шага: запись счёта, его оплата и, при необходимости, частичные выплаты или скидки.
1) Запись счёта поставщика (создаёт обязательство)
Сначала фиксируем расход и создаём обязательство, когда приходит счёт.
; Optionally set your documents folder in your main Beancount file:
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
Эта запись делает две важные вещи:
- Немедленно признаёт расход — $500 в правильный период (август).
- Создаёт соответствующее обязательство — $500, показывая, что вы должны деньги Forest Paint Supply.
Ссылка ^INV-10455
— уникальный идентификатор, который позже можно добавить к оплате, связывая счёт и платёж логически.
2) Оплата счёта (снимает обязательство)
Когда вы оплачиваете счёт, создаётся транзакция, переводящая деньги из банковского счёта и снимающая обязательство.
a) Обычная оплата (без скидки):
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USD
Эта запись уменьшает ваш баланс AP на $500 и баланс текущего счёта на ту же сумму. Обязательство считается погашенным.
b) Скидка за досрочную оплату (например, «2/10, n/30»):
При условиях «2/10, n/30» вы можете получить 2 % скидку, если оплатите в течение 10 дней. Для нашего счёта 10 скидки. Есть два допустимых способа записи — выберите один и придерживайтесь его последовательно.
; Option 1: Record the discount as other income (a contra‑expense effect)
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
; Option 2: Reduce the original expense directly
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
В обоих случаях вы полностью погашаете обязательство 490 и учитываете выгоду $10.
3) Частичные выплаты
Функция ссылок в Beancount упрощает отслеживание частичных оплат.
; Invoice for $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
; First payment of $400
2025-08-20 * "Acme Parts" "Payment INV-9001 (1/3)" ^INV-9001
Liabilities:AccountsPayable 400.00 USD
Assets:Bank:Checking -400.00 USD
; Final payment of $800
2025-09-05 * "Acme Parts" "Payment INV-9001 (final)" ^INV-9001
Liabilities:AccountsPayable 800.00 USD
Assets:Bank:Checking -800.00 USD
Благодаря общей ссылке ^INV-9001
во всех трёх транзакциях вы легко можете отфильтровать журнал и увидеть полную историю конкретного счёта и его оплат.
Полезные запросы (BQL)
Запускайте их во вкладке «Query» в Fava или из командной строки с bean-query
.
Подсказка: Функция
any_meta()
отлично подходит для извл ечения полей метаданных, таких какinvoice:
иdocument:
, в результаты запросов.
Открытая AP по поставщикам (вид баланса):
SELECT payee, COST(SUM(position)) AS amount
WHERE account "^Liabilities:AccountsPayable"
GROUP BY payee
ORDER BY payee;
Открытая AP по счёту + дате оплаты:
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;
Счета с прикреплёнными PDF:
SELECT date, payee, any_meta('invoice') AS invoice, any_meta('document') AS file
WHERE account "^Liabilities:AccountsPayable"
ORDER BY date DESC;
Где увидеть AP в Fava
- Balance Sheet: Перейдите в
Balance Sheet
→Liabilities
→AccountsPayable
, чтобы увидеть общий баланс и детализировать транзакции. - Journal: Отфильтруйте журнал по
account:Liabilities:AccountsPayable
или по конкретной ссылке, например^INV-xxxx
, чтобы проследить весь жизненный цикл счёта. - Documents Sidebar: При использовании метаданных
document:
и директивыoption "documents"
в боковой панели появится список связанных документов.