본문으로 건너뛰기

"재무보고" 태그로 연결된 1개 게시물개의 게시물이 있습니다.

모든 태그 보기

Beancount에서 발생비용: 실전 가이드 (복사-붙여넣기 원장 예시 포함)

· 약 6분
Mike Thrift
Mike Thrift
Marketing Manager

발생비용은 월말 마감이 쌓이기 시작할 때까지는 추상적으로 들릴 수 있습니다. 이는 적절한 발생주의 회계의 초석으로, 현금이 실제로 이동하는 시점이 아니라 경제적 실체를 재무보고에 반영하도록 합니다. 여기서는 발생비용이 무엇인지, 왜 중요한지, 그리고 평문 원장에 어떻게 기록·반전·보고하는지 Beancount 중심으로 명확히 안내합니다.

TL;DR ⚡

  • 발생비용은 이번 기간에 발생했지만 아직 지급되지 않은 비용입니다. 현금이 나갈 때까지 부채로 기록됩니다.
  • Beancount에서는 간단합니다: Expenses: 계정을 차변에, Liabilities:Accrued: 계정을 대변에 기록합니다. 이후 지급 시 부채를 정산합니다.
  • 보고하려면, CLOSE ONCLEAR 옵션을 사용한 bean-query를 실행하면 특정 날짜 기준으로 미지급 금액을 확인하고 깔끔한 대차대조표 스냅샷을 얻을 수 있습니다.

Beancount 발생비용 이미지

발생비용이란?

발생비용은 기업이 이미 발생했지만 아직 지급하지 않은 비용을 말합니다. 서비스가 제공되었거나 비용이 발생한 시점에 청구서가 아직 도착하지 않았거나 지급 기한이 오지 않았더라도 기록합니다. 이는 발생주의 회계의 매칭 원칙에 따라 비용을 해당 비용이 기여한 수익과 동일한 기간에 기록하도록 합니다.

  • 월말에 발생했지만 다음 달에 지급되는 직원 급여
  • 12월에 사용했지만 1월에 청구되는 전기·수도 등 공과금
  • 한 달 동안 누적됐지만 아직 계좌에서 인출되지 않은 대출 이자

이러한 비용을 발생 시점에 기록함으로써 해당 기간에 대한 기업의 재무성과를 보다 정확히 파악할 수 있습니다.

Beancount가 생각하는 방식 (30초 안에)

Beancount는 평문 기반의 복식부기 회계 시스템입니다. 모든 항목은 텍스트 파일에 날짜가 지정된 지시문이나 거래로 기록됩니다. 시스템은 다섯 가지 핵심 계정 유형인 자산(Assets), 부채(Liabilities), 자본(Equity), 수익(Income), 비용(Expenses) 위에 구축됩니다.

거래는 항상 날짜 순으로 정렬됩니다. 중요한 점은 balance 어설션이 같은 날의 거래가 처리되기 에 검증된다는 것입니다. 이는 체크와 반전 항목을 배치할 때 기억해야 합니다.

마지막으로 bean-query 언어는 강력한 SQL 유사 방식으로 보고서를 생성합니다. OPEN ON, CLOSE ON, CLEAR 같은 연산자를 사용하면 재무제표에 대한 정확한 '시점' 뷰를 만들 수 있습니다.

권장 계정표 (Chart of Accounts)

깨끗하고 계층적인 계정표는 최고의 파트너입니다. 발생비용의 경우 구조가 간단합니다. 다음과 같은 계정이 필요합니다:

  • 비용 계정: 예) Expenses:Utilities, Expenses:Payroll:Wages
  • 해당 부채 계정: 예) Liabilities:Accrued:Utilities, Liabilities:Accrued:Payroll
  • 현금 계정: 예) Assets:Bank:Checking

Beancount는 다섯 가지 최상위 계정 유형을 강제합니다. 계정명을 체계적으로 정리하면 향후 쿼리와 보고서 작성이 훨씬 쉬워집니다.

핵심 패턴 (플러그인·매직 없이)

Beancount에서 발생비용을 처리하는 가장 직접적인 방법입니다. 두 단계로 구성됩니다: 월말에 비용을 발생시키고, 지급 시 부채를 정산합니다.

단계 1: 월말에 비용 발생시키기

기간 마지막 날에 비용을 기록하고 부채를 생성합니다.

2025-01-31 * 월말 발생비용
Expenses:Utilities 100.00 USD
Liabilities:Accrued:Utilities

단계 2: 지급 시 발생비용 정산하기

청구서가 도착하고 지급하면 비용 계정을 다시 차변에 기록하지 않습니다. 대신 부채 계정을 차변에 기록해 정산합니다.

2025-02-15 * 청구서 지급
Liabilities:Accrued:Utilities 100.00 USD
Assets:Bank:Checking

이 방법은 소규모 팀에 가장 깔끔합니다. 비용을 2월에 정확히 배치하고 3월에 중복 계산되지 않도록 합니다. Beancount에서는 금액을 비워두면 시스템이 자동으로 거래를 맞춰줍니다.

대안: 다음 달 1일에 반전 항목 사용

클래식한 '자동 반전' 회계 방식을 선호한다면, 다음 달 1일에 발생 항목의 반대 거래를 기록하고, 실제 공급업체 청구서는 일반적으로 비용 계정에 기록합니다.

단계 1: 월말에 비용 발생시키기

2025-01-31 * 월말 발생비용
Expenses:Utilities 100.00 USD
Liabilities:Accrued:Utilities

단계 2: 다음 달 1일에 반전하기

2025-02-01 * 반전
Liabilities:Accrued:Utilities 100.00 USD
Expenses:Utilities

단계 3: 일반적으로 지급 기록하기

2025-02-15 * 청구서 지급
Liabilities:Accrued:Utilities 100.00 USD
Assets:Bank:Checking

체크에 대한 주의: balance 어설션은 같은 날 거래 전에 평가됩니다. Liabilities:Accrued:Utilities 계정 잔액을 확인하려면 2025-02-28에 어설션을 두어 발생을 확인하거나, 2025-03-01반전 거래 후에 어설션을 두어 잔액이 0인지 확인합니다. 2025-03-01에 반전 전 어설션을 두면 잘못된 실패가 발생합니다.

흔히 쓰이는 6가지 발생비용 (복사-붙여넣기 패턴) 📋

1. 아직 청구되지 않은 임대료

2025-01-01 open Expenses:Rent
2025-01-01 open Liabilities:Accrued:Rent
2025-01-01 open Assets:Bank:Checking
2025-01-01 open Equity:RetainedEarnings

2025-01-31 * 발생비용 (청구서 없음)
Expenses:Rent 1500.00 USD
Liabilities:Accrued:Rent

2. 발생했지만 미지급된 급여

2025-01-01 open Expenses:Payroll
2025-01-01 open Liabilities:Accrued:Payroll
2025-01-01 open Assets:Bank:Checking
2025-01-01 open Equity:RetainedEarnings

2025-01-31 * 발생비용 (급여)
Expenses:Payroll 3000.00 USD
Liabilities:Accrued:Payroll

3. 발생한 연차수당 (PTO)

2025-01-01 open Expenses:PTO
2025-01-01 open Liabilities:Accrued:PTO
2025-01-01 open Assets:Bank:Checking
2025-01-01 open Equity:RetainedEarnings

2025-01-31 * 연차수당 발생
Expenses:PTO 500.00 USD
Liabilities:Accrued:PTO

4. 대출 이자 발생

2025-01-01 open Expenses:Interest
2025-01-01 open Liabilities:Accrued:Interest
2025-01-01 open Assets:Bank:Checking
2025-01-01 open Equity:RetainedEarnings

2025-01-31 * 이자 발생
Expenses:Interest 200.00 USD
Liabilities:Accrued:Interest

5. 전문 수수료 (감사/법률)

2025-01-01 open Expenses:ProfessionalFees
2025-01-01 open Liabilities:Accrued:ProfessionalFees
2025-01-01 open Assets:Bank:Checking
2025-01-01 open Equity:RetainedEarnings

2025-01-31 * 전문 수수료 발생
Expenses:ProfessionalFees 800.00 USD
Liabilities:Accrued:ProfessionalFees

6. 사용했지만 청구되지 않은 공과금

2025-01-01 open Expenses:Utilities
2025-01-01 open Liabilities:Accrued:Utilities
2025-01-01 open Assets:Bank:Checking
2025-01-01 open Equity:RetainedEarnings

2025-01-31 * 공과금 사용 (청구서 아직 없음)
Expenses:Utilities 120.00 USD
Liabilities:Accrued:Utilities

보고: 특정 날짜 기준으로 내가 얼마나 빚졌는가?

bean-query는 답을 얻기 위한 도구입니다. 아래는 발생비용에 대한 정확한 대차대조표 스냅샷을 얻는 방법입니다.

기간 종료 시점 모든 발생부채 잔액 조회

bean-query --file ledger.beancount \
"SELECT account, SUM(position) FROM balances \
WHERE account LIKE 'Liabilities:Accrued:%' \
GROUP BY account"
  • OPEN ON은 기간 시작 시점의 시작 잔액을 설정합니다.
  • CLOSE ON은 이 날짜 이전의 거래를 잘라냅니다(포함되지 않음). 따라서 2025-04-01을 사용하면 2025-03-31까지의 데이터를 얻습니다.
  • CLEAR는 수익·비용을 0으로 만들어 자산·부채·자본만 남은 깔끔한 대차대조표 뷰를 제공합니다.

모든 발생비용 전표 내역 보기

bean-query --file ledger.beancount \
"SELECT * FROM transactions WHERE account LIKE 'Liabilities:Accrued:%'"

발생비용 계정의 원시 거래 내역을 보고 싶다면 위와 같이 조회합니다.

전체 발생비용 합계 조회

bean-query --file ledger.beancount \
"SELECT SUM(position) FROM balances WHERE account LIKE 'Liabilities:Accrued:%'"

전체 발생비용 총액을 빠르게 확인하려면 위와 같이 실행합니다.

Beancount 특유의 제어 및 주의사항

  • Balance 어설션 타이밍: 앞서 언급했듯이 어설션은 하루 시작 시점에 잔액을 검증합니다. 2025-03-01 balance ...는 해당 날짜의 거래가 처리되기 전에 실행됩니다. 이에 맞게 계획하세요.
  • 명명 및 계층 구조: Liabilities:Accrued:*와 같은 깔끔한 트리는 보기 좋을 뿐 아니라 쿼리를 단순화하고 보고서를 즉시 이해하기 쉽게 합니다.
  • Pad 사용 주의: pad 지시문은 시작 잔액을 맞출 때는 유용하지만, 반복 발생비용을 '수정'하는 용도로는 피하세요. 명시적인 거래를 기록하면 감사 추적이 명확해집니다.
  • 시점 기준 보고: 대차대조표 스냅샷을 만들 때는 항상 bean-query에서 OPEN ... CLOSE ... CLEAR를 사용하세요. 이렇게 하면 수익·비용 계정이 부채 총액에 섞이는 것을 방지합니다.

선불 vs. 발생 (빠르게)

발생비용은 기업이 이미 발생했지만 아직 지급되지 않은 비용이며, 재무제표에 부채로 기록됩니다. 선불은 미리 지급한 비용으로 자산으로 기록됩니다.

  • 발생비용: 비용이 발생했지만 현금이 아직 나가지 않은 경우 부채로 기록합니다.
  • 선불: 비용을 미리 지급하고, 이후 해당 비용을 차감합니다.

Beancount에서 발생비용을 다루는 실전 가이드 (옵션)

2022-01-01 open Assets:Cash
2022-01-01 open Expenses:Rent
2022-01-01 open Liabilities:Accrued:Rent
2022-01-01 open Equity:RetainedEarnings