본문으로 건너뛰기

미지급금(Accounts Payable)이란? 정의, 예시 및 AP vs AR (2026)

게시됨 마지막 업데이트 약 15분Mike ThriftMike Thrift
미지급금(Accounts Payable)이란? 정의, 예시 및 AP vs AR (2026)
이 페이지에서

미지급금(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 워크플로우는 몇 가지 핵심 기능에 의존합니다:

  1. 계정: 주로 Liabilities:AccountsPayable 계정, Assets:Bank:Checking과 같은 현금 계정, 그리고 다양한 비용 계정(예: Expenses:Supplies)을 사용합니다.
  2. 메타데이터: 모든 거래에 키-값 데이터를 첨부할 수 있습니다. AP의 경우 invoice:, due:, terms:, document:와 같은 메타데이터를 사용합니다. Beancount가 해당 폴더에서 파일을 찾을 수 있도록 option "documents"를 폴더로 설정하세요. Fava에서 저널 행에 파일을 끌어다 놓으면 document: 메타데이터 항목이 삽입되고, plugin "fava.plugins.link_documents"를 활성화하면 발견된 Document 지시문과 해당 항목이 연결됩니다.
  3. 태그 및 링크: #tags(예: #ap)를 사용하여 쉽게 필터링하고 ^links(예: ^INV-10455)를 사용하여 청구서와 이후 지불을 프로그래밍 방식으로 연결하세요. 이렇게 하면 저널에서 명확하고 감사 가능한 추적이 생성되지만, 링크만으로는 아래의 미결 인보이스 쿼리에 충분하지 않습니다.
  4. 쿼리(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

이 단일 항목은 두 가지 중요한 작업을 수행합니다:

  1. $500 비용을 올바른 기간(8월)에 즉시 인식합니다. 지불 시 비용을 다시 게시하지 마세요.
  2. 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으로 순계산되어 없음):

payeeinvoicedueoutstanding
No Due CoINV-ND(빈 값)50.00
Metro HardwareINV-772025-08-05150.00
Helix IndustriesINV-4402025-09-04200.00
Acme PartsINV-90012025-09-09800.00
Bright Office CoINV-2202025-09-14300.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 > Dnot-yet-due
due == Ddue-today
1 ≤ (D − due) ≤ 301-30-overdue
31 ≤ (D − due) ≤ 6031-60-overdue
(D − due) ≥ 6161+-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 기준 미결 행의 예상 노화:

invoiceduedays past duebucketoutstanding
INV-ND(빈 값)—missing-due50.00
INV-772025-08-05301-30-overdue150.00
INV-4402025-09-040due-today200.00
INV-90012025-09-09−5not-yet-due800.00
INV-2202025-09-14−10not-yet-due300.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 USD

Beancount 3.2.3 및 beanquery 0.2.0으로 이 스타터를 로드하면 오류가 발생하지 않고, AP 계정은 0으로 순계산되며, invoice+due 쿼리는 금액이 비어 있는(결제됨) 단일 그룹 (Forest Paint Supply, INV-10455, 2025-09-04)을 반환합니다. 청구된 행과 고아 (…, null, null) 지불 행이 아닙니다.


이 가이드는 교육 목적으로 제공되며 세금, 법률 또는 재정 조언을 구성하지 않습니다.

참조 및 추가 자료:​

출처: https://beancount.io/ko/blog/2025/08/20/what-is-accounts-payable

게시됨: 2025년 8월 20일

마지막 업데이트: 2026년 9월 15일