간단한 텍스트 회계는 복식부기 용어를 차용하고 Beancount 고유의 몇 가지 단어를 추가합니다. 이 용어집은 문서나 자신의 원장 파일을 읽을 때 만나는 용어들을 정의하며, 필요할 경우 간단한 예시를 함께 제공합니다. 각 항목에는 고유 링크가 있어 팀원에게 정의를 바로 안내할 수 있습니다.
계정 (Account)
계정은 한 가지 가치 흐름을 추적하는 이름 붙여진 바구니로, 다섯 가지 최상위 유형 중 하나 아래에 콜론으로 구분된 계층 구조로 작성됩니다: Assets, Liabilities, Equity, Income 또는 Expenses. 이 계층 구조가 장부의 전체 조직 구조입니다 — Assets:US:BofA:Checking와 Expenses:Food:Restaurant가 자동으로 정렬 및 집계됩니다. 모든 계정은 사용 전에 선언되어야 합니다. 명명 규칙에 대해서는 Beancount Language Syntax를 참조하십시오.
발생 기준 (Accrual basis)
발생 기준 회계는 현금이 실제로 이동하는 시점과 관계없이 소득은 발생한 때에, 비용은 발생한 때에 기록합니다. 현금 기준 회계는 그 반대로 현금이 이동하는 시점에만 인식합니다. 발생 기준은 기간의 실적을 더 정확히 보여주므로 3월에 보낸 송장은 고객이 5월에 결제하더라도 3월에 귀속됩니다.
상각 (Amortization)
상각은 하나의 큰 지급액을 실제 적용되는 기간에 나누어 분산하는 것으로, 각 월에 그 비용의 공정한 부담분을 적용합니다. 1월에 낸 연간 보험료는 1월 한 달이 아닌 12개월 모두의 비용입니다. Beancount에서는 게시를 직접 작성하거나 플러그인으로 생성할 수 있습니다 — 상각을 참고하세요.
잔액 검증 (Balance assertion)
잔액 검증은 특정 날짜 시작 시점의 계정 잔액이 반드시 이러해야 한다고 명시하는 balance 지시문입니다. 이로써 은행 명세서가 장부 검증의 자동 검사 수단이 됩니다. 계산된 잔액이 검증 허용 오차를 넘어 차이가 나면, Beancount가 예상 및 실제 금액과 함께 명확한 오류를 보고합니다. 허용 오차는 마지막 소수점 자리의 최소 단위입니다 — 예를 들어 4.27 RGAGX는 4.26에서 4.28까지 허용합니다 — 그리고 화폐 앞의 ~가 사용자 지정 허용 오차를 설정합니다. 계정당 명세서마다 하나씩 검증을 뿌려두는 것이 원장을 신뢰성 있게 유지하는 가장 저렴한 방법입니다.
2026-01-01 balance Assets:US:BofA:Checking 4,321.00 USDBeancount
Beancount은 오픈 소스의 복식부기 시스템으로, 원장은 평문 텍스트 파일이고 아무 텍스트 편집기로 편집하며 명령줄 도구로 검증합니다. 엄격하고 구문 분석 가능한 문법, 쿼리 언어, 웹 인터페이스를 제공하며 데이터베이스나 독점 파일 포맷이 필요 없습니다. 원장이 텍스트이므로 코드와 함께 Git에 편히 보관할 수 있습니다. Beancount 소개부터 시작하세요.
Beancount 쿼리 언어
Beancount 쿼리 언어는 보통 BQL로 줄이며, 원장에 질문하는 SQL 유사 언어입니다. 데이터베이스가 아닌 구문 분석된 지시문 위에서 실행되므로 SELECT account, sum(position) WHERE year = 2026이 편집하는 동일 파일에서 즉시 결과를 제공합니다. 전체 문법은 쿼리 언어 안내를 읽으십시오.
예약 방법 (Booking method)
예약 방법은 감액 시 어떤 기존 매입 단위를 사용할지 결정하는 규칙입니다. Beancount 3.2.3은 일곱 가지를 지원합니다: 기본값인 STRICT(직접 매입 단위를 지정), STRICT_WITH_SIZE, NONE, FIFO, LIFO, HIFO, AVERAGE. 각 계정의 open 지시문에 지정하거나 파일 전체에 option "booking_method"로 설정합니다. 일곱 중 여섯은 구현되어 있으며 AVERAGE는 구문은 통과하지만 감액 시점에 AVERAGE method is not supported 오류를 발생시킵니다. 선택한 방법은 실현 자본 이득에 영향을 주니 세법이 요구하는 방식으로 안정적으로 유지하세요. 재고 관리는 일곱 방식을 동일 매입 단위에 적용해 보고, AVERAGE에서 실패하는 원장을 공개합니다.
계정 차트 (Chart of accounts)
계정 차트는 원장에서 사용하는 전체 계정 목록과 이를 조직하는 구조입니다. Beancount에는 별도의 차트 파일이 없으며, open 지시문 세트 자체가 계정 차트입니다. 초기에 잘 설계하면 나중에 이름 변경이 줄어듭니다; 업종별 설정을 참조해 시작할 수 있습니다.
종료 지시문 (Close directive)
close 지시문은 계정을 더 이상 사용할 수 없는 날짜를 표시합니다. 은행 계좌 폐쇄나 대출 종료 시 기록을 삭제하지 않고 퇴역시키는 방법입니다. 과거 거래는 유효하고 보고 가능하며 새로운 게시만 거부됩니다. 사용하지 않는 계정 닫기는 원장이 오래될수록 보고서를 읽기 쉽게 합니다.
2026-03-31 close Assets:US:OldBank:Checking상품 (Commodity)
상품은 원장에 기록하는 가치 단위로, 통화 USD, 주식 티커 AAPL, 암호화폐 BTC, 혹은 VACATION-DAYS처럼 임의로 만든 단위도 포함됩니다. Beancount은 자동으로 상품 간 환산을 하지 않으므로, 금액에는 항상 그 금액 단위를 나타내는 상품이 쌍으로 붙습니다. 선택적 commodity 지시문으로 이름이나 자산 종류 같은 메타데이터를 첨부할 수 있습니다.
원가 기준 (Cost basis)
원가 기준은 보유 자산을 실제 구입 시 지급한 금액이며, 지급한 통화 단위로 기록되고 자산 보유 기간 내내 유지됩니다. Beancount는 중괄호를 사용해서 기록합니다 — 10 AAPL {150.00 USD}는 주당 150달러에 10주를 취득했음을 뜻합니다. 중괄호를 두 번 쓰면 단가가 아닌 총액이 되어 10 AAPL {{1,500.00 USD}}도 같은 매입 단위를 나타냅니다. 원가 기준이 포지션과 함께 이동하므로 매각 시 자본 이득이 산술적으로 정확히 계산됩니다. 자세한 내용은 재고 관리를 확인하세요.
지시문 (Directive)
지시문은 Beancount 파일 내 하나의 명령어로, 대개 날짜가 포함되어 있고 원장의 기본 구성 단위입니다. 날짜가 포함된 열두 종류가 있습니다: open, close, balance, price, note, document, pad, event, commodity, custom, query, 그리고 거래 자체. 날짜가 없는 몇 가지는 파일 전체를 대상으로 작용합니다 — option, include, plugin, 그리고 pushtag/poptag 쌍. Beancount는 날짜가 있는 지시문을 날짜 순으로 정렬 후 처리하므로 가독성 좋게 자유롭게 배열할 수 있고, 날짜 없는 지시문은 작성 위치에서 바로 적용됩니다.
복식부기 (Double-entry bookkeeping)
복식부기는 모든 경제 이벤트를 최소 두 개의 상응하는 항목으로 기록해 총합이 항상 0이 되도록 하는 방식입니다. 돈은 실제로 생성되거나 파괴되지 않고 계정 간에 이동하므로 단일 컬럼 목록에서 잡아내지 못하는 오류를 이 방식이 탐지합니다. 가중치는 각 게시의 금액 자체 또는 한 통화로 환산한 비용이나 가격으로, 서로 다른 상품의 두 다리도 상쇄됩니다. Beancount는 이 규칙을 엄격하게 적용하여 게시가 균형을 이루지 못하면 오류로 처리하고 경고가 아닙니다.
2026-03-02 * "Bank" "Buy euros"
Assets:US:BofA:EUR 100.00 EUR @ 1.08 USD
Assets:US:BofA:Checking -108.00 USD봉투 예산 (Envelope budgeting)
봉투 예산은 지출 전에 목적별로 돈을 따로 떼어놓는 방식으로, 각 범주마다 별도의 한도액이 있어 하나의 통합된 잔액을 두고 경쟁하지 않습니다. 이름은 예전 월급날 현금을 담던 종이 봉투에서 유래했습니다. 텍스트 원장에서는 별도 계정이나 예산 지시문으로 봉투를 모델링합니다 — 예산을 참고하세요.
파바 (Fava)
Fava는 Beancount의 웹 인터페이스로 차트, 대차대조표, 손익계산서, 쿼리 편집기 및 입력 폼을 제공합니다. 원장 파일에서 직접 서비스되며, 읽기 중심이고 로컬에서 실행되므로 기록 방식을 바꾸지 않고도 원장을 보는 방식을 바꿉니다. beancount.io는 자체 도구와 함께 관리되는 버전을 호스팅하며, UI 기능 가이드에서 할 수 있는 일을 다룹니다.
재고 (Inventory)
재고는 계정이 현재 보유한 포지션 모음으로, 각 포지션은 고유 상품과 필요하다면 원가 기준과 취득일을 가집니다. 동일 주식을 1월과 6월에 세 번 매수했다면 하나의 재고에 세 개의 별도 매입 단위가 존재하며 단일 혼합 수치가 아닙니다. 매입 단위 구분이 정확한 이득 계산의 핵심입니다.
저널 (Journal)
저널은 장부 내 발생한 모든 거래를 시간순으로 나열한 것으로, 그룹화나 요약 전의 원시 트랜잭션 스트림입니다. "3월에 내가 실제로 무슨 일을 했나?" 확인할 때 살펴보는 뷰입니다. Fava의 저널 페이지가 잘못 분류된 항목을 가장 빨리 찾는 곳입니다.
원장 (Ledger)
원장은 하나의 법인에 대한 완벽한 회계 기록 집합으로, Beancount에서는 평문 텍스트 파일(및 포함된 모든 파일)을 의미합니다. 이 용어는 전체 계정 장부와 파일 자체 이름을 겸합니다. 텍스트이므로 원장은 소스 코드처럼 diff, 검토, 브랜치, 병합이 가능합니다.
매입 단위 (Lot)
매입 단위는 상품의 특정 구입 단위로, 원가 기준과 취득일로 식별됩니다. 1월과 6월에 동일 ETF를 사고 다시 매도할 때 어느 단위를 파는지 고르기 때문에, Beancount가 정확한 실현 이득을 계산할 수 있도록 하는 근본입니다.
2026-06-15 * "Broker" "Buy VTI"
Assets:US:Broker:VTI 5 VTI {260.00 USD, 2026-06-15}
Assets:US:Broker:Cash -1,300.00 USD설명 (Narration)
설명은 거래가 무엇을 위한 것인지 자유롭게 쓰는 텍스트로, 트랜잭션 줄의 두 번째 따옴표 문자열입니다. 사람을 위한 설명이며, 예: "월세", "식료품과 가정용품". Beancount는 이 내용을 구문 분석하지 않지만, 시간이 지나서 거래가 이해 안 갈 때 읽는 내용입니다.
개설 지시문 (Open directive)
open 지시문은 계정을 선언하고 사용할 수 있는 시작 날짜, 선택적으로 보유 가능한 상품과 예약 방법을 지정합니다. Beancount는 모든 계정이 첫 게시 이전에 개설되어야 하므로 오타로 새 계정이 몰래 생기지 않도록 합니다. 허용되는 상품 제한은 또 다른 오류를 방지하는 역할을 합니다.
2026-01-01 open Assets:US:Broker:VTI VTI "FIFO"패드 (Pad)
pad 지시문은 다음 잔액 검증을 통과시키기 위해 필요한 금액을 자동으로 삽입하고, 차액을 두 번째 계정에 예약합니다. 주 목적은 원장 기록 중간에 시작해 수년 치 기록을 재구성하지 않고 열 수 있게 하는 것입니다. 초기 개설 이후 패딩은 보통 실제 오류를 덮으려는 행위입니다.
수취인 (Payee)
수취인은 거래 상대방으로, 트랜잭션 줄 첫 번째 따옴표 문자열입니다. 수취인 이름을 일관되게 유지하는 것 — 항상 "Whole Foods", 절대 "WholeFoods"가 아닌 — 이 수취인별 보고와 자동 가져오기 기능의 핵심입니다. Beancount는 수취인을 선택 사항으로 여기며, 거래에 설명만 있어도 됩니다.
텍스트 회계 (Plain-text accounting)
텍스트 회계는 사람이 읽을 수 있는 텍스트 파일로 장부를 기록하고 버전 관리를 하는 방식이며, 오픈 소스 명령줄 도구로 처리합니다. 클릭 인터페이스 대신 지속성, 감사 가능성, 자동화를 택한 것으로, 데이터는 어떤 공급자보다 오래가고, 모든 변경은 검토 가능한 diff이고, 모든 스크립트가 읽을 수 있습니다. Beancount, Ledger, hledger가 가장 잘 알려진 구현체들입니다.
플러그인 (Plugin)
플러그인은 Beancount가 파일 처리 중 불러와 지시문을 추가, 변형, 검증할 수 있게 하는 파이썬 모듈입니다. 예측, 상각 일정, 맞춤 검사 등을 코어 언어를 바꾸지 않고 구현하는 방법입니다. 원장 최상단에 단독 plugin 줄로 활성화하며 option "plugin" "…"처럼 설정하면 Option 'plugin' may not be set 오류가 납니다. 예측 플러그인 가이드에 실제 예제가 있습니다.
게시 (Posting)
게시란 트랜잭션의 한 다리로, 계정과 금액 그리고 선택적 비용 또는 가격으로 구성됩니다. 거래 전체에서 합이 0이어야 하는 것은 단순 금액이 아니라 가중치입니다: 일반 금액은 스스로 무게를 가지며, 10 FUND @ 38.46 USD는 384.60 USD 무게, 10 FUND {384.61 USD}는 3,846.10 USD 무게입니다. 중괄호 하나는 단가 비용입니다. 최대 한 개 게시만 금액을 비울 수 있으며, 이 경우 Beancount가 균형 금액을 계산합니다. 전체 가중치 규칙은 정밀도와 허용 오차를 참고하세요.
가격 지시문 (Price directive)
price 지시문은 특정 상품 쌍간의 환율을 기록하는 것으로, 이를 통해 Beancount가 보고서에서 보유 자산의 시장 가치를 환산합니다. price 지시문은 순수 참조 데이터여서 돈을 움직이지 않고 트랜잭션에도 속하지 않습니다. 게시 내 @ 가격은 산술적이며 10 FUND @ 38.46 USD에 384.60 USD 무게를 부여해 거래가 균형 맞는지 따집니다. 가격 지시문 없이는 포트폴리오가 원가 기준으로는 균형을 이루지만 시장 가치는 산정할 수 없습니다.
2026-06-30 price VTI 271.40 USD화해 (Reconciliation)
화해란 장부가 외부 기록, 예컨대 은행이나 증권 계좌 명세서와 일치함을 증명하는 행위입니다. 텍스트 회계에서는 대체로 기계적인 작업으로, 명세서 날짜마다 잔액 검증을 추가하고 도구가 수치를 맞추는지 알려줍니다. 매월 깔끔하게 화해가 된 원장은 두려움 없이 세금 신고가 가능한 원장입니다.
태그와 링크 (Tags and links)
태그와 링크는 계층 구조 외에 거래를 그룹화하는 두 가지 라벨입니다: #가 붙은 태그는 #trip-japan 같은 테마를 표시하고, ^가 붙은 링크는 ^invoice-2026-014처럼 관련 항목을 묶습니다. 태그는 "이 범주에 속한 모든 항목 보여줘"에 답하며, 링크는 "이 사건에 속한 항목 보여줘"에 답합니다. 두 가지 모두 Fava에서 필터링 가능하고 BQL로 조회할 수 있습니다 — 필터링과 검색을 참조하세요.
거래 (Transaction)
거래는 날짜가 있는 경제 사건과 이를 기록하는 게시들이 모인 것이며, 가장 자주 작성하는 지시문입니다. 확인 상태 플래그(*는 확정, !는 검토 필요), 선택적 수취인, 설명, 그리고 가중치 합이 0인 두 개 이상의 게시를 가집니다. Beancount 파일 내 나머지 모든 내용은 거래를 선언, 검사 또는 주석 처리하기 위한 것입니다.
2026-02-14 * "Blue Bottle" "Coffee with Dana"
Expenses:Food:Coffee 9.50 USD
Assets:US:BofA:Checking -9.50 USD아직도 용어가 어렵나요? 도움말 센터가 이 사이트 모든 가이드를 색인화하고 있으며, 치트시트는 각 지시문의 문법을 나란히 보여줍니다.