Задълженията към доставчици (AP) са парите, които вашият бизнес дължи на своите доставчици за стоки или услуги, които вече сте получили, но все още не сте платили. В счетоводния свят AP се класифицира като текущ пасив в баланса ви — сума, която обикновено е дължима през следващата година, често в рамките на 30 до 60 дни.
Тази концепция е централна за счетоводството по начисляване, при което записвате разхода и съответния пасив в момента, в който пристигне фактура, а не когато реално изпратите парите. Това ръководство ще ви покаже как да управлявате целия работен процес по AP чисто и ефективно с помощта на инструмента за счетоводство в обикновен текст, Beancount.
Кратко резюме
Преди да навлезем в детайлите, нека покрием основите:
- Задължения към доставчици (AP) представлява вашите краткосрочни дългове към доставчици. Ще ги намерите в раздела
Liabilities(Пасиви) на вашия баланс. - Начисляване срещу Касово: AP е концепция, която съществува само ако водите книгите си на принципа на начисляване. Beancount напълно поддържа работни процеси по начисляване, а неговият уеб интерфейс, Fava, ще покаже правилно вашите пасиви.
- AP срещу AR: Просто е: Задълженията (Payables) са това, което вие дължите, докато вземанията (Receivables, AR) са това, което другите ви дължат.
Къде се намира AP в Beancount (и Fava)
За да започнете да проследявате AP, първо трябва да декларирате сметка за него в главната си книга. Стандартна конвенция е:
Liabilities:AccountsPayable
По желание можете да създадете подсметки за основни доставчици (напр., Liabilities:AccountsPayable:ForestPaintSupply).
Във Fava тази сметка ще се появи в баланса ви под Liabilities. Можете да кликнете върху нея, за да се задълбочите и да видите осчетоводяванията, които формират баланса. Можете дори да видите това в действие в публичния примерен регистър на Fava, който включва сметка Liabilities:AccountsPayable.
Знакова конвенция: Beancount съхранява пасивните баланси като кредити (отрицателни числа). Баланс от -500.00 USD на Liabilities:AccountsPayable означава, че дължите $500. Отчетът за отворени позиции по-долу обръща знака с -SUM(number), така че всяка неплатена фактура показва положителна дължима сума. Напълно уредена фактура дава сума нула и се изключва от HAVING.
Основни градивни елементи на Beancount, които ще използвате
Стабилният работен процес за AP в Beancount разчита на няколко основни функции:
- Сметки: Основно ще използвате сметката си
Liabilities:AccountsPayable, касова сметка катоAssets:Bank:Checkingи различните си разходни сметки (напр.,Expenses:Supplies). - Метаданни: Можете да прикачите данни във формат ключ-стойност към всяка транзакция. За AP ще използвате метаданни като
invoice:,due:,terms:иdocument:. Задайтеoption "documents"към папка, така че Beancount да може да открива файлове там; във Fava, пускането на файл върху ред от дневника вмъква запис на метаданниdocument:, а активирането наplugin "fava.plugins.link_documents"свързва тези записи с откритите документи. - Тагове и връзки: Използвайте
#тагове(като#ap) за лесно филтриране и^връзки(като^INV-10455), за да свържете програмно фактура и последващото ѝ плащане. Това създава ясна, проверима следа в дневника — но самите връзки не са достатъчни за заявката за отворени фактури по-долу. - Заявки (BQL): Подобният на SQL език за заявки на Beancount (BQL) ви позволява да изпълнявате мощни отчети, като например списък на всички отворени задължения, сортирани по падеж, директно от командния ред с
bean-queryили на страницата "Query" във Fava.
Идентичност на фактурата (задължителна за заявки за отворени фактури): Всяка фактура и всяко уреждащо плащане — пълно, частично или с ранен отстъпки — трябва да носи същите метаданни на транзакцията invoice: и due:, както и същата ^връзка. Заявката групира по payee, any_meta('invoice') и any_meta('due'). Ако плащане пропусне тези ключове, неговото осчетоводяване на AP попада в отделна група (payee, null, null) и уредена фактура все още изглежда отворена. Поддържайте (payee, invoice) уникални за различните доставчици. По желание полетата, специфични само за фактурата, като terms: и document:, не е необходимо да се повтарят при плащанията.
Основен работен процес за 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 в правилния период (август) — веднъж. Не осчетоводявайте отново разхода при плащането.
- Той кредитира AP с $500 (
-500.00 USD), записвайки, че дължите на Forest Paint Supply тази сума.
Връзката ^INV-10455 плюс метаданните invoice: / due: формират идентичността на фактурата. Всяко по-късно плащане на тази фактура трябва да използва повторно и трите.
2) Плащане на фактурата (Това изчиства пасива)
Когато платите фактурата, създавате транзакция, която премества пари от банковата ви сметка, за да изчистите задължението. Копирайте invoice: и due: от фактурата върху плащането, така че и двете осчетоводявания да споделят една група на заявката.
а) Стандартно плащане (без отстъпка):
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
invoice: "INV-10455"
due: "2025-09-04"
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USDТози запис намалява баланса на AP с $500 и баланса на разплащателната ви сметка със същата сума. Задължението за тази фактура вече е изчистено (сумата на AP в групата е нула). Разходът остава във фактурата от август — плащането не засяга Expenses:.
б) Отстъпка за ранно плащане (напр., "2/10, n/30") — изберете точно един метод:
Ако условията са "2/10, n/30", можете да се възползвате от 2% отстъпка, ако платите в рамките на 10 дни. За нашата фактура от $500 това е отстъпка от $10. Оградата по-долу показва две взаимно изключващи се алтернативи: Вариант 1 е активен; Вариант 2 е напълно коментиран, така че поставянето не може да осчетоводи и двете. За да използвате Вариант 2 вместо това, коментирайте Вариант 1 и разкоментирайте Вариант 2. Никога не оставяйте и двете активни — това изчиства AP два пъти и измисля втора полза от $10. Коя сметка за приходи срещу разходи използвате, е въпрос на счетоводна политика за вашите книги; Beancount не изисква една пред друга.
; Pick EXACTLY ONE of the two transactions below for a given invoice.
; Do not paste both into the same ledger — that clears AP twice.
; Option 1: Record the discount as other income
2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
invoice: "INV-10455"
due: "2025-09-04"
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
; invoice: "INV-10455"
; due: "2025-09-04"
; Liabilities:AccountsPayable 500.00 USD
; Assets:Bank:Checking -490.00 USD
; Expenses:Supplies:Paint -10.00 USDПри всяка от алтернативите поотделно вие изчиствате пълното задължение от $500, намалявате банковия си баланс с $490, които реално сте платили, и отчитате ползата от $10. Заменете стандартната транзакция за пълно плащане с избраната алтернатива — не наслагвайте плащане с отстъпка върху плащането в брой от $500 и не комбинирайте тази ограда с раздел 2а за същата фактура.
3) Обработка на частични плащания
Използвайте повторно същата идентичност invoice: / due: / ^връзка при всяка вноска, така че всяко плащане да намалява същата група отворени фактури.
; 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
invoice: "INV-9001"
due: "2025-09-09"
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
invoice: "INV-9001"
due: "2025-09-09"
Liabilities:AccountsPayable 800.00 USD
Assets:Bank:Checking -800.00 USDСлед първото плащане сумата на AP в групата на фактурата е -800.00 USD (все още дължите $800). След последното плащане тя е нула. Филтрирането на дневника по ^INV-9001 все още показва пълната история.
Полезни заявки (BQL)
Можете да изпълните тези заявки в раздела "Query" на Fava или от командния ред с bean-query (справка за BQL). Проверени по-долу с Beancount 3.2.3 и beanquery 0.2.0.
Съвет: Функцията
any_meta()търси ключ на метаданни първо в осчетоводяването, след което се връща към транзакцията — така че стойностите наinvoice:/due:на ниво транзакция се появяват в резултатите.
Отворени AP по доставчик (изглед на баланса):
Тази заявка сумира инвентара на задълженията за всеки доставчик. Кредит (отрицателна) обща сума е това, което все още дължите на този доставчик.
SELECT payee, COST(SUM(position)) AS amount
WHERE account ~ "^Liabilities:AccountsPayable"
GROUP BY payee
ORDER BY payee;Отворени фактури към фиксирана дата (отчет за отворени позиции):
Отчетът за отворени позиции отговаря на „какво остава неплатено?“. Той трябва (1) да спре на изрична дата към момента, така че по-късни плащания да не могат тихо да изчистят по-ранен моментен снимков запис, (2) да групира по споделената идентичност на фактурата (payee + invoice: + due:), (3) да изключи уредени (нулеви) групи и (4) да покаже положителна дължима сума — а не суров подписан кредит по AP.
Отчетна дата, използвана навсякъде по-долу: 2025-09-04.
Изтегляема начална главна книга за AP
Изтеглете accounts-payable-starter.bean — една самостоятелна главна книга, генерирана от пълната ограда по-долу (откриване на сметки, измислено начално салдо в брой, уредени / частични / неплатени фактури, към 2025-09-04). Всяко име и сума са измислени примерни данни. Не се изисква PDF на фактура, папка за документи или друг файл, за да я проверите или направите заявка към нея.
Първо стартиране от чиста временна директория (фиксирани Beancount 3.2.3 / beanquery 0.2.0):
# Save the download as accounts-payable-starter.bean in this directory, then:
uvx --from beancount==3.2.3 bean-check accounts-payable-starter.bean
uvx --from beanquery==0.2.0 --with beancount==3.2.3 bean-query accounts-payable-starter.bean \
"SELECT payee, any_meta('invoice') AS invoice, any_meta('due') AS due, -SUM(number) AS outstanding WHERE account ~ '^Liabilities:AccountsPayable' AND date <= 2025-09-04 GROUP BY payee, invoice, due HAVING SUM(number) < 0 ORDER BY due, payee"bean-check излиза с код 0 и без изход. Заявката връща петте отворени реда в очакваната таблица по-долу (Forest отсъства; Acme дължима сума 800.00; сума на положителните дължими суми = 1500.00). Регенерирайте ангажираното изтегляне с yarn generate:ap-starter след редактиране на оградата; yarn generate:ap-starter --check се проваля, ако артефактът е остарял.
Поставете този пълен тестов сет (откривания + начално салдо + трите форми на фактури, плюс редове за дължими днес / просрочени / специални случаи за стареене). Алтернативите за ранен отстъпки за INV-10455 остават напълно коментирани — активирайте точно една само ако замените стандартното плащане на Forest; никога не оставяйте и двете опции за отстъпка активни заедно с това плащане.
; accounts-payable-starter — complete runnable AP workflow
option "operating_currency" "USD"
2025-01-01 open Assets:Bank:Checking USD
2025-01-01 open Equity:Opening-Balances USD
2025-01-01 open Liabilities:AccountsPayable USD
2025-01-01 open Expenses:Supplies:Paint USD
2025-01-01 open Expenses:Parts USD
2025-01-01 open Expenses:Office USD
2025-01-01 open Income:Discounts:Payables USD
; Fictional opening cash — enough to cover every payment in this ledger
2025-01-01 * "Opening balance"
Assets:Bank:Checking 5000.00 USD
Equity:Opening-Balances -5000.00 USD
; Settled before as-of — must disappear from the open report
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USD
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
invoice: "INV-10455"
due: "2025-09-04"
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USD
; Early-payment discount alternatives for INV-10455 — mutually exclusive with
; the standard payment above AND with each other. To take 2/10 instead: delete
; (or comment out) the 2025-09-01 payment, then uncomment EXACTLY ONE option.
; Never leave both options active — that clears AP twice.
;
; Option 1: Record the discount as other income
; 2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
; invoice: "INV-10455"
; due: "2025-09-04"
; 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
; invoice: "INV-10455"
; due: "2025-09-04"
; Liabilities:AccountsPayable 500.00 USD
; Assets:Bank:Checking -490.00 USD
; Expenses:Supplies:Paint -10.00 USD
; Partial before as-of; final $800 payment is AFTER 2025-09-04
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
2025-08-20 * "Acme Parts" "Payment INV-9001 (1/3)" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Liabilities:AccountsPayable 400.00 USD
Assets:Bank:Checking -400.00 USD
2025-09-05 * "Acme Parts" "Payment INV-9001 (final)" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Liabilities:AccountsPayable 800.00 USD
Assets:Bank:Checking -800.00 USD
; Unpaid — not yet due as of 2025-09-04
2025-08-15 * "Bright Office Co" "INV-220" ^INV-220
invoice: "INV-220"
due: "2025-09-14"
Expenses:Office 300.00 USD
Liabilities:AccountsPayable -300.00 USD
; Unpaid — due today (as-of == due)
2025-08-20 * "Helix Industries" "INV-440" ^INV-440
invoice: "INV-440"
due: "2025-09-04"
Expenses:Parts 200.00 USD
Liabilities:AccountsPayable -200.00 USD
; Unpaid — 30 days overdue as of 2025-09-04
2025-07-06 * "Metro Hardware" "INV-77" ^INV-77
invoice: "INV-77"
due: "2025-08-05"
Expenses:Parts 150.00 USD
Liabilities:AccountsPayable -150.00 USD
; Overpayment — credit balance (not an amount due; see edge cases)
2025-08-01 * "Credit Vendor" "INV-C1" ^INV-C1
invoice: "INV-C1"
due: "2025-08-20"
Expenses:Parts 100.00 USD
Liabilities:AccountsPayable -100.00 USD
2025-08-18 * "Credit Vendor" "Overpay INV-C1" ^INV-C1
invoice: "INV-C1"
due: "2025-08-20"
Liabilities:AccountsPayable 150.00 USD
Assets:Bank:Checking -150.00 USD
; Missing due metadata — still open; age into a separate bucket, do not drop
2025-08-12 * "No Due Co" "INV-ND" ^INV-ND
invoice: "INV-ND"
Expenses:Office 50.00 USD
Liabilities:AccountsPayable -50.00 USDЗаявка за отворени позиции (beanquery 0.2.0 поддържа HAVING SUM(number) < 0; той не поддържа сравняване на inventory с 0 с COST(SUM(position)) != 0):
SELECT payee,
any_meta('invoice') AS invoice,
any_meta('due') AS due,
-SUM(number) AS outstanding
WHERE account ~ "^Liabilities:AccountsPayable"
AND date <= 2025-09-04
GROUP BY payee, invoice, due
HAVING SUM(number) < 0
ORDER BY due, payee;Очаквани редове към 2025-09-04 (изведени независимо от транзакциите: фактура − плащания, датирани ≤ отчетна дата; Forest дава нула и отсъства):
| payee | invoice | due | outstanding |
|---|---|---|---|
| No Due Co | INV-ND | (празно) | 50.00 |
| Metro Hardware | INV-77 | 2025-08-05 | 150.00 |
| Helix Industries | INV-440 | 2025-09-04 | 200.00 |
| Acme Parts | INV-9001 | 2025-09-09 | 800.00 |
| Bright Office Co | INV-220 | 2025-09-14 | 300.00 |
Сума на положителните дължими суми = 1,500.00. Фактурата на Forest за $500 е изчезнала. Acme все още показва $800 ($1,200 − $400); плащането от $800 на 2025-09-05 е след отчетната дата, така че не може да затвори този моментен снимков запис.
Съгласувайте с пасива по AP към същия момент на прекъсване:
SELECT COST(SUM(position)) AS ap_balance
WHERE account ~ "^Liabilities:AccountsPayable"
AND date <= 2025-09-04;Очаквано: ap_balance = (-1450.00 USD). Независимо: отворена дължима сума $1,500 минус кредита от $50 на доставчик (по-долу) = $1,450 дължими → пасивен инвентар -1450.00 USD.
Преместете отчетната дата с един ден напред (date <= 2025-09-05) и стартирайте отново заявката за отворени позиции: редът на Acme изчезва (включено е последното плащане), а ap_balance става (-650.00 USD). Плащане след отчетната дата никога не пренаписва по-ранния отчет.
Кредити от доставчици / надплащания: HAVING SUM(number) < 0 запазва само сумите, които все още дължите. Надплащане обръща сумата на AP в групата в положителна. Избройте тези отделно — не третирайте положителен баланс по AP като „дължима сума“:
SELECT payee,
any_meta('invoice') AS invoice,
any_meta('due') AS due,
SUM(number) AS credit
WHERE account ~ "^Liabilities:AccountsPayable"
AND date <= 2025-09-04
GROUP BY payee, invoice, due
HAVING SUM(number) > 0
ORDER BY payee;Очаквано: един ред — Credit Vendor / INV-C1 / 2025-08-20 / credit = 50.00 (надплатили сте с $50).
Липсващ due:: INV-ND все още се появява в отчета за отворени позиции с празен падеж. Остарявайте я в специална кофа missing-due (по-долу); никога не я пропускайте мълчаливо.
Списък на фактури с прикачени 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→Liabilities→AccountsPayable, за да видите общия баланс и да се задълбочите в детайлите на транзакциите. - Дневник: Филтрирайте дневника по
account:Liabilities:AccountsPayableили конкретна връзка като^INV-xxxx, за да видите пълния жизнен цикъл на фактура. - Документи: С зададена
option "documents", Beancount открива файлове в това дърво. Прегледите на документи във Fava и приставкатаlink_documents(вижте по-горе) свързват тези файлове с транзакции, които носят метаданниdocument:.
Стареене на AP, оборот и осъзнаване на паричния поток
График за стареене (възпроизводим експорт + кофи): beanquery 0.2.0 може да издаде редовете за отворени позиции по-горе, но не предоставя вграден израз за кофа за стареене върху метаданните due. Експортирайте отчета за отворени позиции, след което групирайте в кофи детерминистично спрямо същата отчетна дата.
bean-query -f csv -o open-ap.csv accounts-payable-starter.bean \
"SELECT payee, any_meta('invoice') AS invoice, any_meta('due') AS due, -SUM(number) AS outstanding WHERE account ~ '^Liabilities:AccountsPayable' AND date <= 2025-09-04 GROUP BY payee, invoice, due HAVING SUM(number) < 0 ORDER BY due, payee"Колони в CSV: payee, invoice, due, outstanding.
Правило за кофа за отчетна дата D = 2025-09-04 и due на всеки ред (ISO YYYY-MM-DD):
| Условие | Кофа |
|---|---|
due празно | missing-due |
due > D | not-yet-due |
due == D | due-today |
1 ≤ (D − due) ≤ 30 | 1-30-overdue |
31 ≤ (D − due) ≤ 60 | 31-60-overdue |
(D − due) ≥ 61 | 61+-overdue |
Компактен Python (само стандартна библиотека), който прилага тази таблица:
from datetime import date
AS_OF = date(2025, 9, 4)
# Apply bucket() to each CSV row's due column (ISO YYYY-MM-DD or empty).
def bucket(due: str | None) -> str:
if not due:
return "missing-due"
days = (AS_OF - date.fromisoformat(due)).days
if days < 0:
return "not-yet-due"
if days == 0:
return "due-today"
if days <= 30:
return "1-30-overdue"
if days <= 60:
return "31-60-overdue"
return "61+-overdue"Очаквано стареене за отворените редове към 2025-09-04:
| invoice | due | дни след падеж | кофа | outstanding |
|---|---|---|---|---|
| INV-ND | (празно) | — | missing-due | 50.00 |
| INV-77 | 2025-08-05 | 30 | 1-30-overdue | 150.00 |
| INV-440 | 2025-09-04 | 0 | due-today | 200.00 |
| INV-9001 | 2025-09-09 | −5 | not-yet-due | 800.00 |
| INV-220 | 2025-09-14 | −10 | not-yet-due | 300.00 |
Дължими днес не се включват в „текущи“: due == as-of е собствена кофа. Не все още дължими изисква due > as-of.
- Коефициент на оборот на AP:
Общо покупки от доставчици ÷ Среден AP. Свързан показател, Дни на неизплатени задължения (DPO), е приблизително365 ÷ Коефициент на оборот. - Ако не можете да платите навреме: AP е предназначен за краткосрочен дълг. Ако доставчик се съгласи на формално, дългосрочно изплащане, прекласифицирайте извън AP в дължима записка — запазете същата идентичност на фактурата при преобразуването, така че групата по AP да се изчисти.
2025-10-01 * "Helix Industries" "Convert overdue AP to 12-month note" ^INV-1110
invoice: "INV-1110"
due: "2025-09-15"
Liabilities:AccountsPayable 2000.00 USD
Liabilities:NotesPayable -2000.00 USDНай-добри практики за AP в главна книга в обикновен текст
- Преминете към безхартиен принцип: Съхранявайте PDF файловете на фактурите в дървото на документите си и ги прикачвайте с ключа на метаданните
document:(както и с качване във Fava /link_documents, когато използвате Fava). - Използвайте повторно идентичността на фактурата при плащания: Поставете същите
invoice:,due:и^връзкавърху фактурата и върху всяко плащане, което я урежда. - Отчитайте към определена дата: Ограничете заявките за отворени позиции и стареене с
date <= YYYY-MM-DD, така че по-късно плащане да не може да пренапише по-ранен моментен снимков запис; остарявайте със същатаD. - Поддържайте метаданните подредени: Последователното използване на
invoice:,due:иterms:подобрява търсенето, заявките и финансовите прегледи. - Начисляване през цялото време: Ако искате полезна отчетност за AP, ангажирайте се да водите книгите си на принципа на начисляване. Beancount и Fava обработват начислените баланси в баланса без специални приставки.
Стартов набор за копиране и поставяне: Фактура от доставчик + Плащане
За пълния работен процес с отворени позиции (уредени + частични + неплатени, отчетна дата, стареене), предпочитайте изтегляемия AP стартер по-горе. Минималната двойка фактура + плащане по-долу все пак показва идентичност и в двата крака — отворете сметките първо (или включете тези откривания в основната си главна книга). По желание метаданните document: са пропуснати тук, така че нищо извън главната книга не се изисква.
option "operating_currency" "USD"
2025-01-01 open Assets:Bank:Checking USD
2025-01-01 open Liabilities:AccountsPayable USD
2025-01-01 open Expenses:Supplies:Paint USD
; ---- Bill ----
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USD
; ---- Payment (no discount) ----
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
invoice: "INV-10455"
due: "2025-09-04"
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USDС Beancount 3.2.3 и beanquery 0.2.0, зареждането на този стартер не създава грешки, сметката по AP се изчиства до нула, а заявката за фактура + падеж връща една група (Forest Paint Supply, INV-10455, 2025-09-04), чиято сума е празна (уредена) — не фактуриран ред плюс осиротял ред на плащане (…, null, null).
Това ръководство е с образователна цел и не представлява данъчен, правен или финансов съвет.
Препратки и допълнително четене:
- Синтаксис на езика Beancount — сметки, метаданни, тагове, връзки и документи (проверено на 2026-09-11)
- Справка за езика за заявки на Beancount (BQL) (проверено на 2026-09-11)
- Функции на Fava — качване на документи и
link_documents(проверено на 2026-09-11) any_meta()за запитване на метаданни на транзакция/осчетоводяване (Martin Blais, пощенски списък на Beancount; проверено на 2026-09-11)





