미지급금(AP)은 이미 재화나 용역을 제공받았지만 아직 대금을 지급하지 않은 공급업체에 대해 기업이 갚아야 할 돈입니다. 회계에서 AP는 대차대상표에 유동부채로 분류되는데, 이는 일반적으로 1년 이내, 주로 30~60일 이내에 지급해야 할 금액입니다.
이 개념은 발생주의 회계의 핵심으로, 실제로 현금을 지불하는 시점이 아닌 청구서가 도착하는 즉시 비용과 이에 상응하는 부채를 기록하는 방식입니다. 이 가이드에서는 일반 텍스트 회계 도구인 Beancount를 사용하여 전체 AP 워크플로우를 깔끔하고 효율적으로 관리하는 방법을 보여드리겠습니다.
요약
세부 사항을 살펴보기 전에 기본 사항을 먼저 정리하겠습니다.
- 미지급금(AP) 은 공급업체에 대한 단기 부채를 의미합니다. 대차대상표의
부채(Liabilities)항목에서 확인할 수 있습니다. - 발생주의 vs 현금주의: AP는 발생주의로 장부를 기록할 때만 존재하는 개념입니다. Beancount는 발생주의 워크플로우를 완벽하게 지원하며, 웹 인터페이스인 Fava에서 부채를 올바르게 표시합니다.
- AP와 매출채권(AR)의 차이: 간단합니다. 지급할 의무가 있는 것은 미지급금, 받을 권리가 있는 것은 매출채권(AR) 입니다.
Beancount(및 Fava)에서 AP 위치
AP 추적을 시작하려면 먼저 원장에 해당 계정을 선언해야 합니다. 일반적인 규칙은 다음과 같습니다.
Liabilities:AccountsPayable
주요 거래처에 대한 하위 계정(예: Liabilities:AccountsPayable:ForestPaintSupply)을 만들 수도 있습니다.
Fava에서 이 계정은 대차대조표의 부채(Liabilities) 아래에 표시됩니다. 클릭하여 드릴다운하면 모든 미결제 및 결제 항목 목록을 보고 부채를 명확하게 파악할 수 있습니다. Fava의 공개 예제 원장에서도 이 내용을 확인할 수 있으며, 여기에는 Liabilities:AccountsPayable 계정이 포함되어 있습니다.
사용하게 될 Beancount 구성 요소
Beancount의 강력한 AP 워크플로우는 몇 가지 핵심 기능에 의존합니다.
- 계정(Accounts): 주로
Liabilities:AccountsPayable계정,Assets:Bank:Checking과 같은 현금 계정, 다양한 비용 계정(예:Expenses:Supplies)을 사용하게 됩니다. - 메타데이터(Metadata): 모든 거래에 키-값 데이터를 첨부할 수 있습니다. AP의 경우
invoice:,due:,terms:,document:와 같은 메타데이터를 사용합니다. Fava는document:키를 인식하여 문서 폴더를 구성한 경우 첨부 파일에 대한 클릭 가능한 링크를 자동으로 생성합니다. - 태그 및 링크(Tags & Links):
#tags(예:#ap)를 사용하여 쉽게 필터링하고^links(예:^INV-10455)를 사용하여 청구서와 이후 지급을 프로그래밍 방식으로 연결할 수 있습니다. 이는 명확하고 추적 가능한 기록을 생성합니다. - 쿼리(BQL): Beancount의 SQL 유사 쿼리 언어(BQL)를 사용하면
bean-query명령줄이나 Fava의 "Query" 페이지에서 만기가 가까운 미지급금 목록을 정렬하는 등 강력한 보고서를 실행할 수 있습니다.
Beancount의 핵심 AP 워크플로우
Beancount에서 AP를 관리하려면 청구서 기록, 지급, 그리고 때로는 부분 지급이나 할인 처리를 위한 두세 단계가 필요합니다.
1) 벤더 청구서 기록 (부채 생성)
먼저, 인보이스가 도착하면 비용을 계상하고 미지급금을 생성합니다.
; 기본 Beancount 파일에 문서 폴더를 선택적으로 설정합니다:
option "documents" "documents"
2025-08-05 * "Forest Paint Supply" "도료 주문 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이 단일 거래는 두 가지 중요한 역할을 합니다.
- 8월(해당 기간)에 $500 비용을 즉시 인식합니다.
- Forest Paint Supply에 $500을 지불해야 함을 보여주는 상응하는 $500 부채를 생성합니다.
^INV-10455 링크는 나중에 지급 거래에 동일한 링크를 연결하여 청구서와 지급 거래를 논리적으로 연결할 수 있게 해주는 고유 식별자 역할을 합니다.
2) 청구서 지불 (부채 상환)
인보이스를 지불할 때 은행 계좌에서 자금을 이동하여 부채를 상환하는 거래를 생성합니다.
a) 표준 결제 (할인 없음):
2025-09-01 * "Forest Paint Supply" "결제 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" 조건이라면 10일 이내에 지불하면 2% 할인을 받을 수 있습니다. $500 인보이스의 경우 $10 할인입니다. 기록하는 데 허용되는 두 가지 방법이 있습니다. 하나를 선택하여 일관성을 유지하십시오.
; 옵션 1: 할인을 기타 수익으로 기록 (비용 상쇄 효과)
2025-08-12 * "Forest Paint Supply" "조기 결제 할인 INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -490.00 USD
Income:Discounts:Payables -10.00 USD
; 옵션 2: 원래 비용을 직접 차감
2025-08-12 * "Forest Paint Supply" "조기 결제 할인 INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -490.00 USD
Expenses:Supplies:Paint -10.00 USD두 경우 모두 총 $500 부채를 상환하고, 실제로 지불한 $490만큼 은행 잔액을 줄이며, $10 혜택을 설명합니다.
3) 부분 지불 처리
Beancount의 연결 기능을 사용하면 부분 지불을 간단하고 명확하게 추적할 수 있습니다.
; 인보이스: $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
; 1차 지불: $400
2025-08-20 * "Acme Parts" "결제 INV-9001 (1/3)" ^INV-9001
Liabilities:AccountsPayable 400.00 USD
Assets:Bank:Checking -400.00 USD
; 최종 지불: $800
2025-09-05 * "Acme Parts" "결제 INV-9001 (최종)" ^INV-9001
Liabilities:AccountsPayable 800.00 USD
Assets:Bank:Checking -800.00 USD세 거래 모두에 ^INV-9001 링크를 사용하면 저널을 쉽게 필터링하여 특정 청구서와 관련 지급 내역 전체를 볼 수 있습니다.
유용한 쿼리 (BQL)
Fava의 "Query" 탭이나 명령줄에서 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;Fava에서 AP 확인 위치
- 대차대조표:
대차대조표→부채(Liabilities)→AccountsPayable로 이동하여 총 잔액을 확인하고 거래 내역을 자세히 볼 수 있습니다. - 저널:
account:Liabilities:AccountsPayable또는^INV-xxxx와 같은 특정 링크로 저널을 필터링하여 청구서의 전체 수명 주기를 확인할 수 있습니다. - 문서 사이드바:
document:메타데이터를 사용하고option "documents"지시문을 설정한 경우 사이드바에 연결된 문서 목록이 표시됩니다.
AP 노후화, 회전율 및 현금 흐름 인식
- 노후화 일정: 이 보고서는 미결제 기간(예: 1
30일, 3160일, 60일 초과)에 따라 미결제 인보이스를 그룹화합니다. Beancount에서 가장 실용적인 방법은 위의 "인보이스 및 만기일별 미지급 AP" 쿼리를 실행하고 결과를 CSV로 내보낸 다음 스프레드시트나 간단한 Python 스크립트에서 버킷으로 분류하는 것입니다. - AP 회전율: 이는 공급업체에 지불하는 속도를 나타내는 지표입니다. 공식은
총 공급업체 구매액 ÷ 평균 AP입니다. 이와 관련된 지급 소요 일수(DPO) 는 약365 ÷ 회전율입니다. - 정시에 지불할 수 없는 경우: AP는 단기 부채를 의미합니다. 공급업체가 공식적인 장기 상환에 동의하는 경우, 해당 부채는 AP에서 지급어음(Notes Payable)으로 재분류해야 합니다.
2025-10-01 * "Helix Industries" "연체 AP를 12개월 어음으로 전환" ^INV-1110
Liabilities:AccountsPayable 2000.00 USD
Liabilities:NotesPayable -2000.00 USD일반 텍스트 원장에서 AP를 위한 모범 사례
- 종이 없는 환경 구축:
documents폴더에 인보이스 PDF를 저장하고document:메타데이터와 연결합니다. - 링크를 일관되게 사용: 고유 인보이스 번호를 청구서와 모든 관련 지불 항목에
^link로 포함합니다. - 메타데이터를 체계적으로 유지:
invoice:,due:,terms:를 일관되게 사용하면 검색, 쿼리 및 재무 검토가 개선됩니다. - 발생주의 유지: 유용한 AP 보고를 원한다면 발생주의로 장부를 유지하세요. Beancount와 Fava가 훌륭하게 처리해 드립니다.
복사하여 사용하는 스타터: 벤더 청구서 + 결제
; ---- 청구서 ----
2025-08-05 * "Forest Paint Supply" "도료 주문 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
; ---- 지불 (할인 없음) ----
2025-09-01 * "Forest Paint Supply" "결제 INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USD이 안내는 교육 목적으로 제공되며 세무, 법률 또는 재정 조언을 구성하지 않습니다.