회계 사이클, Beancount 스타일
재무제표는 마법처럼 나타나는 것이 아닙니다. 이는 회계 사이클이라 불리는 구조화되고 반복 가능한 프로세스의 최종 산물입니다. 원칙은 보편적이지만, 사용하는 도구에 따라 경험이 크게 달라질 수 있습니다. 이 가이드는 강력한 텍스트 기반 회계 도구인 Beancount에 초점을 맞춰 회계 사이클을 단계별로 안내합니다.
Beancount의 텍스트 우선 접근 방식이 어떻게 번거로운 단계를 없애는지, 자동화해야 할 부분은 무엇인지, 그리고 재무 건전성을 가장 명확히 파악할 수 있는 보고서는 무엇인지 살펴보겠습니다. 🧑💻
TL;DR: Beancount 워크플로우
- Capture & Journal: 모든 거래를 깔끔한 복식부기 포스팅으로
.beancount
텍스트 파일에 기록합니다. - Validate & Reconcile:
balance
어설션을 사용해 원장이 은행 명세와 일치하는지 확인하고bean-check
로 오류를 잡습니다. - Review: 조정되지 않은 시산표를 생성해 빠르게 sanity check를 합니다.
- Adjust: 발생비용, 이연비용, 감가상각 및 기타 기간 말 항목에 대한 조정 분개를 기록합니다.
- Re-review: 조정된 시산표를 확인해 모든 것 이 정확한지 검증합니다.
- Publish & Close: 손익계산서, 대차대조표, 현금흐름표를 생성합니다. Beancount에서는 보고서가 날짜를 인식하므로 장부 마감은 선택 사항입니다.
이 흐름은 다음과 같이 시각화할 수 있습니다:
Step 1: 거래 캡처 및 기록
이것이 기본 단계입니다. 모든 재무 이벤트—판매, 구매, 은행 수수료—는 반드시 기록되어야 합니다. Beancount에서는 main.beancount
와 같이 간단한 텍스트 파일에 거래를 생성함으로써 이를 수행합니다. 파일을 연도별로 나누어 관리할 수도 있습니다.
각 거래는 복식부기 규칙을 따라야 하며, 모든 포스팅의 합은 반드시 0이어야 합니다. Beancount이 이를 자동으로 강제합니다.
2025-08-10 * "Walmart" "사무용품 구매"
Expenses:Office:Supplies 45.67 USD
Assets:Bank:Checking -45.67 USD
- Pro-Tip:
#project-phoenix
또는#client-acme
와 같은 태그를 사용해 데이터에 차원을 추가하세요. 나중에 쿼리와 보고서를 훨씬 유연하게 만들 수 있습니다.
조정 위생 ✅
정확성을 보장하는 가장 강력한 기능은 balance 어설션입니다. 명세 기간 말(예: 월말)에는 해당 계정의 잔액이 어떠해야 하는지 선언합니다.
2025-08-31 balance Assets:Bank:Checking 12345.67 USD
Assets:Bank:Checking
에 영향을 주는 모든 거래의 합이 12345.67 USD
와 일치하지 않으면 Beancount이 오류를 발생시킵니다. 이 간단한 지시문은 원장을 자체 감사 문서로 전환합니다.
역사 데이터를 뒤늦게 입력하는 경우, pad
지시문을 사용해 개시 잔액이 첫 어설션과 맞도록 자동으로 균형 거래를 생성할 수 있습니다.
Step 2: "원장에 포스팅" (무료!)
전통 회계 시스템에서는 먼저 "분개장(journal)"에 입력하고, 별도의 "포스팅" 단계에서 이를 "총계정원장(general ledger)"에 복사합니다.
Beancount에서는 .beancount
파일 자체가 분개장과 원장을 동시에 겸합니다. 거래를 작성하고 저장하면 이미 포스팅이 완료된 것입니다. 별도의 단계가 없습니다. 이 직접성은 텍스트 기반 회계의 핵심 장점이며, 보는 그대로가 결과가 됩니다.