본문으로 건너뛰기

외상매입금이란? 텍스트 기반 Beancount 친화적 가이드: 공급업체 청구서 추적

· 약 6분
Mike Thrift
Mike Thrift
Marketing Manager

외상매입금(AP)은 이미 물품이나 서비스를 받았지만 아직 결제하지 않은 공급업체에 대해 기업이 지고 있는 채무를 의미합니다. 회계상에서는 외상매입금이 대차대조표의 유동부채로 분류되며, 일반적으로 1년 이내, 보통 30~60일 내에 상환해야 하는 금액입니다.

이 개념은 발생주의 회계의 핵심으로, 청구서가 도착하는 순간 비용과 해당 부채를 동시에 기록합니다(현금이 실제로 이동하는 시점이 아니라). 이 가이드는 텍스트 기반 회계 도구인 Beancount를 사용해 외상매입금 전 과정을 깔끔하고 효율적으로 관리하는 방법을 보여줍니다.

2025-08-20-what-is-accounts-payable


빠른 요약

세부 내용에 들어가기 전에 핵심을 정리합니다:

  • 외상매입금(AP) 은 공급업체에 대한 단기 채무를 의미합니다. 대차대조표의 Liabilities 섹션에서 확인할 수 있습니다.
  • 발생주의 vs 현금주의: 외상매입금은 발생주의 회계 체계에서만 존재합니다. Beancount는 발생주의 워크플로를 완벽히 지원하며, 웹 인터페이스인 Fava가 부채를 정확히 표시합니다.
  • AP vs AR: 간단히 말해, 외상매입금은 기업이 빚진 금액이고, 외상매출금(AR) 은 다른 기업이 우리에게 빚진 금액입니다.

Beancount와 Fava에서 외상매입금이 위치하는 곳

외상매입금을 추적하려면 먼저 원장에 해당 계정을 선언해야 합니다. 일반적인 관례는 다음과 같습니다.

Liabilities:AccountsPayable

주요 공급업체별로 서브계정을 만들 수도 있습니다(예: Liabilities:AccountsPayable:ForestPaintSupply).

Fava에서는 이 계정이 대차대조표의 Liabilities 아래에 표시됩니다. 클릭하면 모든 미결 및 결제된 항목 목록을 확인할 수 있어 채무 현황을 한눈에 파악할 수 있습니다. 실제 예시는 Fava의 공개 예제 원장에서도 확인할 수 있습니다.


Beancount에서 사용할 핵심 구성 요소

견고한 외상매입금 워크플로는 몇 가지 핵심 기능에 의존합니다:

  1. 계정: Liabilities:AccountsPayable, 현금 계정(Assets:Bank:Checking) 및 다양한 비용 계정(Expenses:Supplies 등)을 주로 사용합니다.
  2. 메타데이터: 거래마다 키‑값 형태의 메타데이터를 첨부할 수 있습니다. 외상매입금에서는 invoice:, due:, terms:, document: 등을 활용합니다. Fava는 document: 키를 인식해 문서 폴더를 지정하면 클릭 가능한 링크를 자동 생성합니다.
  3. 태그 & 링크: #ap 같은 태그로 손쉽게 필터링하고, ^INV-10455 같은 링크로 청구서와 결제 거래를 논리적으로 연결합니다. 이렇게 하면 감사 가능한 흔적이 남습니다.
  4. 쿼리(BQL): Beancount의 SQL‑유사 언어인 BQL을 이용해 강력한 보고서를 만들 수 있습니다. 예를 들어 bean-query 명령어나 Fava의 “Query” 페이지에서 미결 외상매입금을 기한 순으로 나열하는 쿼리를 실행할 수 있습니다.

Beancount에서 외상매입금 핵심 워크플로

외상매입금 관리는 청구서 기록 → 결제 → (선택) 부분 결제·할인 처리의 2~3단계로 이루어집니다.

1) 공급업체 청구서 기록 (부채 생성)

청구서가 도착하면 비용을 기록하고 동시에 외상매입금을 생성합니다.

; 옵션: 문서 폴더 지정
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. 8월 회계기간에 500 USD 비용을 즉시 인식합니다.
  2. 동일 금액의 외상매입금 부채를 생성해 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

이 거래는 외상매입금 잔액을 500 USD 감소시키고, 체크 계좌도 동일 금액만큼 감소시켜 부채를 정산합니다.

b) 조기 결제 할인 (예: “2/10, n/30”)

조건이 “2/10, n/30”이면 10일 이내 결제 시 2 % 할인을 받을 수 있습니다. 500 USD 청구서라면 10 USD 할인이 적용됩니다. 아래 두 방법 중 하나를 선택해 일관되게 기록합니다.

; 방법 1: 할인액을 기타수익으로 기록
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

; 방법 2: 원래 비용을 직접 감소
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

두 경우 모두 외상매입금 500 USD가 완전히 소멸하고, 실제 지급액 490 USD와 10 USD 할인(또는 수익)이 반영됩니다.

3) 부분 결제 처리

Beancount의 링크 기능을 활용하면 부분 결제도 깔끔하게 추적할 수 있습니다.

; 1,200 USD 청구서
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

; 첫 번째 결제 400 USD
2025-08-20 * "Acme Parts" "Payment INV-9001 (1/3)" ^INV-9001
Liabilities:AccountsPayable 400.00 USD
Assets:Bank:Checking -400.00 USD

; 최종 결제 800 USD
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 쿼리

Fava의 “Query” 탭이나 bean-query 명령줄에서 다음 쿼리를 실행해 보세요.

팁: any_meta() 함수는 invoice:·document: 같은 메타데이터를 결과에 포함시키는 데 매우 유용합니다.

공급업체별 미결 외상매입금 (잔액 보기)

SELECT payee, COST(SUM(position)) AS amount
WHERE account "^Liabilities:AccountsPayable"
GROUP BY payee
ORDER BY payee;

청구서·기한별 미결 외상매입금

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에서 외상매입금을 확인하는 위치

  • 대차대조표: Balance Sheet → Liabilities → AccountsPayable 로 이동하면 총 잔액과 세부 거래를 확인할 수 있습니다.
  • 원장: account:Liabilities:AccountsPayable 혹은 특정 링크(^INV-xxxx) 로 필터링하면 청구서의 전체 흐름을 볼 수 있습니다.
  • 문서 사이드바: document: 메타데이터와 option "documents" 지시자를 설정하면 사이드바에 연결된 PDF 목록이 표시됩니다.

외상매입금 Aging, Turnover, 현금 흐름 인식

  • Aging 스케줄: 미결 청구서를 1–30일, 31–60일, 60일 이상 등으로 구분합니다. Beancount에서는 “청구서·기한별 미결 외상매입금” 쿼리를 실행하고 결과를 CSV로 내보낸 뒤 스프레드시트나 간단한 Python 스크립트로 구간을 나누면 됩니다.
  • AP Turnover Ratio: 공급업체 구매 총액 ÷ 평균 외상매입금 으로 계산합니다. 연관 지표인 Days Payable Outstanding (DPO)365 ÷ Turnover Ratio 로 구합니다.
  • 지급 지연 시: 외상매입금은 단기 부채이므로, 장기 상환이 필요할 경우 해당 부채를 AccountsPayable에서 NotesPayable 등 장기 부채 계정으로 재분류합니다.
2025-10-01 * "Helix Industries" "Convert overdue AP to 12-month note" ^INV-1110
Liabilities:AccountsPayable -5000.00 USD
Liabilities:NotesPayable 5000.00 USD

외상매입금 관리 시 체크리스트

  1. 계정 선언Liabilities:AccountsPayable 를 원장에 반드시 포함합니다.
  2. 청구서 메타데이터invoice:·due:·terms:·document: 를 일관되게 사용합니다.
  3. 고유 링크^청구서번호 로 청구서와 결제 거래를 연결해 추적성을 확보합니다.
  4. 정기적인 리포팅 – BQL 쿼리와 Fava 대시보드를 활용해 미결 부채와 기한을 주기적으로 검토합니다.
  5. 문서 보관document: 메타데이터와 문서 폴더 옵션을 설정해 모든 청구서 PDF를 원장과 연결합니다.

실전 예시

아래 예시는 실제 비즈니스 상황에 적용 가능한 외상매입금 흐름을 보여줍니다. 코드 블록 내부는 그대로 유지됩니다.

option "title" "My Business"
option "operating_currency" "USD"
option "documents" "documents"

2025-01-01 open Assets:Bank:Checking USD
2025-01-01 open Liabilities:AccountsPayable USD
2025-01-01 open Expenses:Supplies USD
2025-01-01 open Income:Discounts:Payables USD

마무리

Beancount와 Fava를 활용하면 복잡한 외상매입금 관리도 텍스트 파일 하나간단한 메타데이터만으로 투명하게 기록하고, 필요할 때마다 강력한 BQL 쿼리로 즉시 보고서를 생성할 수 있습니다. 발생주의 원칙을 그대로 유지하면서도, 모든 거래 내역을 버전 관리 시스템(Git 등)으로 추적할 수 있다는 점이 가장 큰 장점입니다.


본 가이드는 교육 목적이며, 실제 회계 처리 시 기업 고유의 회계 정책 및 현지 법규를 반드시 검토하시기 바랍니다.