미지급금(AP)은 이미 받았지만 아직 대금을 지불하지 않은 상품이나 서비스에 대해 사업체가 공급업체에 지불해야 하는 금액입니다. 회계 세계에서 AP는 대차대조표에서 유동부채로 분류되며, 일반적으로 다음 해 이내, 종종 30~60일 내에 지불해야 하는 금액입니다.
이 개념은 발생주의 회계의 핵심으로, 실제로 현금을 지불할 때가 아니라 청구서가 도착하는 즉시 비용과 해당 부채를 기록합니다. 이 가이드에서는 일반 텍스트 회계 도구인 Beancount를 사용하여 전체 AP 워크플로우를 깔끔하고 효율적으로 관리하는 방법을 보여드리겠습니다.
빠른 요약
세부 사항을 살펴보기 전에 필수 사항을 정리하겠습니다:
- 미지급금(AP) 은 공급업체에 대한 단기 부채를 나타냅니다. 대차대조표의
부채(Liabilities)섹션에서 찾을 수 있습니다. - 발생주의 vs. 현금주의: AP는 장부를 발생주의로 관리할 때만 존재하는 개념입니다. Beancount는 발생주의 워크플로우를 완벽하게 지원하며, 웹 인터페이스인 Fava에서 부채를 올바르게 표시합니다.
- AP vs. AR: 간단합니다. 지급금(AP)은 내가 갚아야 할 것, 수취채권(AR)은 다른 사람이 나에게 갚아야 할 것입니다.
AP가 Beancount(및 Fava)에서 위치하는 곳
AP 추적을 시작하려면 먼저 원장에 해당 계정을 선언해야 합니다. 일반적인 표준은 다음과 같습니다:
Liabilities:AccountsPayable
주요 공급업체별로 하위 계정을 선택적으로 생성할 수 있습니다 (예: Liabilities:AccountsPayable:ForestPaintSupply).
Fava에서 이 계정은 대차대조표의 Liabilities 아래에 표시됩니다. 클릭하면 잔액을 구성하는 거래 내역으로 드릴다운할 수 있습니다. Liabilities:AccountsPayable 계정이 포함된 Fava의 공개 예제 원장에서도 이 기능을 직접 확인할 수 있습니다.
부호 규칙: Beancount는 부채 잔액을 대변(음수)으로 저장합니다. Liabilities:AccountsPayable의 잔액이 -500.00 USD이면 $500을 갚아야 한다는 뜻입니다. 아래의 미결 항목 보고서는 -SUM(number)으로 부호를 바꿔 각 미지급 인보이스가 양수 미결제 금액으로 표시되도록 합니다. 완전히 결제된 인보이스는 합계가 0이 되어 HAVING으로 제외됩니다.
사용할 Beancount 기본 구성 요소
견고한 AP 워크플로우는 몇 가지 핵심 기능에 의존합니다:
- 계정: 주로
Liabilities:AccountsPayable계정,Assets:Bank:Checking과 같은 현금 계정, 그리고 다양한 비용 계정(예:Expenses:Supplies)을 사용합니다. - 메타데이터: 모든 거래에 키-값 데이터를 첨부할 수 있습니다. AP의 경우
invoice:,due:,terms:,document:와 같은 메타데이터를 사용합니다. Beancount가 해당 폴더에서 파일을 찾을 수 있도록option "documents"를 폴더로 설정하세요. Fava에서 저널 행에 파일을 끌어다 놓으면document:메타데이터 항목이 삽입되고,plugin "fava.plugins.link_documents"를 활성화하면 발견된 Document 지시문과 해당 항목이 연결됩니다. - 태그 및 링크:
#tags(예:#ap)를 사용하여 쉽게 필터링하고^links(예:^INV-10455)를 사용하여 청구서와 이후 지불을 프로그래밍 방식으로 연결하세요. 이렇게 하면 저널에서 명확하고 감사 가능한 추적이 생성되지만, 링크만으로는 아래의 미결 인보이스 쿼리에 충분하지 않습니다. - 쿼리(BQL): Beancount의 SQL 유사 쿼리 언어(BQL)를 사용하면
bean-query명령줄이나 Fava의 "쿼리(Query)" 페이지에서 만기일별로 정렬된 모든 미지급금 목록과 같은 강력한 보고서를 실행할 수 있습니다.
인보이스 식별(미결 인보이스 쿼리에 필수): 모든 청구서와 이를 결제하는 모든 지불(전체, 부분, 조기 할인)은 동일한 invoice: 및 due: 거래 메타데이터와 동일한 ^link를 가져야 합니다. 쿼리는 payee, any_meta('invoice'), any_meta('due')로 그룹화합니다. 지불에 이러한 키가 없으면 해당 AP 거래 내역은 별도의 (payee, null, null) 그룹에 속하게 되어 결제된 청구서도 여전히 미결로 보입니다. (payee, invoice)를 공급업체별로 고유하게 유지하세요. terms: 및 document:와 같은 선택적 청구서 전용 필드는 지불에 반복할 필요가 없습니다.
Beancount의 핵심 AP 워크플로우
원장에서 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 비용을 올바른 기간(8월)에 즉시 인식합니다. 지불 시 비용을 다시 게시하지 마세요.
- AP를 $500(
-500.00 USD) 대변에 기록하여 Forest Paint Supply에 그 금액을 빚지고 있음을 기록합니다.
^INV-10455 링크와 invoice: / due: 메타데이터는 인보이스의 식별자를 형성합니다. 이 청구서의 모든 이후 지불은 세 가지를 모두 재사용해야 합니다.
2) 청구서 지불(부채 상환)
인보이스를 지불할 때 은행 계좌에서 자금을 이동하여 부채를 상환하는 거래를 생성합니다. 청구서에서 invoice: 및 due:를 지불로 복사하여 두 거래 내역이 하나의 쿼리 그룹을 공유하도록 하세요.
a) 표준 지불(할인 없음):
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 합계가 0). 비용은 8월 청구서에 남아 있습니다. 지불은 Expenses:를 건드리지 않습니다.
b) 조기 지불 할인(예: "2/10, n/30") — 정확히 한 가지 방법을 선택하세요:
조건이 "2/10, n/30"인 경우 10일 이내에 지불하면 2% 할인을 받을 수 있습니다. $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 현금 지불 위에 쌓지 말고, 같은 인보이스에 대해 이 울타리를 섹션 2a와 결합하지 마세요.
3) 부분 지불 처리
각 할부 지불에 동일한 invoice: / due: / ^link 식별자를 재사용하여 각 지불이 동일한 미결 인보이스 그룹을 줄이도록 하세요.
; 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을 빚지고 있음). 마지막 지불 후에는 0이 됩니다. ^INV-9001로 저널을 필터링하면 전체 이력이 계속 표시됩니다.
유용한 쿼리(BQL)
이 쿼리는 Fava의 "쿼리(Query)" 탭이나 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) 결제된(0) 그룹을 제외하며, (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으로 종료됩니다. 쿼리는 아래 예상 테이블의 5개 미결 행을 반환합니다(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을 지원하며, COST(SUM(position)) != 0으로 inventory를 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는 0으로 순계산되어 없음):
| 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). 2025-09-05의 $800 지불은 기준일 이후이므로 이 스냅샷을 닫을 수 없습니다.
동일한 기준일에서 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는 빈 due로 미결 보고서에 계속 나타납니다. 전용 missing-due 버킷(아래)으로 분류하세요. 절대 조용히 생략하지 마세요.
첨부 PDF가 있는 청구서 나열:
SELECT date, payee, any_meta('invoice') AS invoice, any_meta('document') AS file
WHERE account ~ "^Liabilities:AccountsPayable"
ORDER BY date DESC;Fava에서 AP를 확인할 수 있는 곳
- 대차대조표:
대차대조표(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 | days past due | bucket | 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-today)는 "현재(current)"에 포함되지 않습니다: due == as-of는 자체 버킷입니다. 아직 만기 아님(not-yet-due)은 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 사용 시 Fava 업로드 /link_documents). - 지불에 인보이스 식별자 재사용: 청구서와 이를 결제하는 모든 지불에 동일한
invoice:,due:,^link를 넣으세요. - 기준일 기준 보고:
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 USDBeancount 3.2.3 및 beanquery 0.2.0으로 이 스타터를 로드하면 오류가 발생하지 않고, AP 계정은 0으로 순계산되며, invoice+due 쿼리는 금액이 비어 있는(결제됨) 단일 그룹 (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 확인)





