일반 텍스트 회계는 복식 부기에서 어휘를 빌려오고 몇 가지 Beancount 고유의 단어를 추가합니다. 이 용어집은 이 문서나 자신의 장부 파일을 읽을 때 만나게 될 용어를 정의하며, 도움이 될 경우 짧은 예제를 함께 제공합니다. 각 항목에는 고유한 링크가 있어 동료를 바로 정의로 안내할 수 있습니다.
계정 (Account)
계정은 하나의 가치 흐름을 추적하는 명명된 버킷으로, 자산(Assets), 부채(Liabilities), 자본(Equity), 수익(Income) 또는 비용(Expenses)의 다섯 가지 루트 유형 중 하나 아래에 콜론으로 구분된 계층 구조로 작성됩니다. 이 계층 구조는 장부의 전체 구성 구조입니다. Assets:US:BofA:Checking 및 Expenses:Food:Restaurant은 자동으로 분류 및 집계됩니다. 모든 계정은 사용되기 전에 선언되어야 합니다. 명명 규칙은 Beancount 언어 구문을 참조하세요.
발생 기준 (Accrual basis)
발생 기준 회계는 현금이 실제로 언제 이동하는지와 관계없이 수익이 발생했을 때 수익을 기록하고 비용이 발생했을 때 비용을 기록합니다. 현금 기준 회계는 그 반대입니다. 즉, 현금이 실제로 오갈 때만 둘 다 인식합니다. 발생 기준은 기간의 성과를 더 정확하게 보여주므로, 3월에 보낸 송장은 고객이 5월에 지불하더라도 3월에 속합니다.
상각 (Amortization)
상각은 단일 대규모 지불을 실제로 적용되는 기간에 걸쳐 분산하여 각 월이 비용의 공정한 몫을 부담하도록 합니다. 1월에 지불한 연간 보험료는 1월뿐만 아니라 12개월 전체의 비용입니다. Beancount에서는 분할 분개를 수동으로 작성하거나 플러그인을 사용하여 생성합니다. 상각을 참조하세요.
잔액 확인 (Balance assertion)
잔액 확인은 특정 날짜의 시작 시점에 계정 잔액이 얼마여야 하는지 명시하는 balance 지시문으로, 은행 거래 명세서를 장부에 대한 자동 확인 도구로 만듭니다. 계산된 잔액이 다를 경우 Beancount는 예상 금액과 실제 금액을 표시하며 오류를 발생시킵니다. 계정 및 명세서당 하나의 확인을 추가하는 것은 장부의 신뢰성을 유지하는 가장 저렴한 방법입니다.
2026-01-01 balance Assets:US:BofA:Checking 4,321.00 USDBeancount
Beancount는 텍스트 편집기에서 편집하고 명령줄 도구로 검증할 수 있는 일반 텍스트 파일로 장부를 관리하는 오픈소스 복식 부기 시스템입니다. 데이터베이스나 독점 파일 형식 없이 엄격하고 구문 분석 가능한 구문, 쿼리 언어 및 웹 인터페이스를 제공합니다. 장부가 텍스트이기 때문에 코드와 함께 Git에서 문제없이 관리할 수 있습니다. Beancount 소개부터 시작하세요.
Beancount 쿼리 언어 (Beancount Query Language)
Beancount 쿼리 언어(보통 BQL로 약칭)는 장부에 질문하는 데 사용하는 SQL과 유사한 언어입니다. 데이터베이스 대신 구문 분석된 지시문을 대상으로 실행되므로 SELECT account, sum(position) WHERE year = 2026은 편집 중인 동일한 파일에서 즉시 답변을 제공합니다. 전체 문법은 쿼리 언어 가이드를 참조하세요.
예약 방법 (Booking method)
예약 방법은 감소가 기존 로트 중에서 선택해야 할 때 Beancount가 적용하는 규칙입니다. 선택지는 STRICT(직접 로트를 식별해야 함), FIFO, LIFO, AVERAGE 및 NONE이며, 계정의 open 지시문에서 설정합니다. 선택한 방법은 실현된 자본 이득을 변경하므로 세무 당국에서 예상하는 방법을 선택하고 안정적으로 유지하세요.
계정과목표 (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주를 의미합니다. 기준이 포지션과 함께 이동하므로, 매도 시 자본 이득이 산술적으로 계산됩니다. 재고 관리를 참조하세요.
지시문 (Directive)
지시문은 Beancount 파일의 날짜가 지정된 하나의 명령이며, 장부에는 지시문만 포함됩니다. 날짜로 시작하는 모든 줄이 지시문입니다: open, close, balance, price, note, document, pad, event, commodity 및 거래 자체입니다. Beancount는 처리를 위해 지시문을 날짜별로 정렬하므로, 가장 읽기 좋은 순서로 유지할 수 있습니다.
복식 부기 (Double-entry bookkeeping)
복식 부기는 모든 경제적 사건을 최소 두 개의 일치하는 항목으로 기록하여 금액이 항상 합계 0이 되도록 하는 관행입니다. 돈은 생성되거나 소멸되지 않으며 계정 간에 이동할 뿐이므로, 이 기술은 단일 열 목록으로는 절대 찾을 수 없는 오류를 포착합니다. Beancount는 이 규칙을 엄격하게 적용합니다. 분개가 균형을 이루지 못하는 거래는 경고가 아닌 오류입니다.
봉투 예산 편성 (Envelope budgeting)
봉투 예산 편성은 지출하기 전에 목적에 따라 돈을 할당하여 각 카테고리가 하나의 통합 잔액을 두고 경쟁하는 대신 자체 한도를 가지도록 합니다. 이름은 한때 월급날 현금으로 채웠던 종이 봉투에서 유래했습니다. 일반 텍스트 장부에서는 전용 계정이나 예산 지시문으로 봉투를 모델링합니다. 예산을 참조하세요.
Fava
Fava는 Beancount를 위한 웹 인터페이스입니다. 차트, 대차대조표, 손익계산서, 쿼리 편집기 및 입력 양식을 장부 파일에서 제공합니다. 주로 읽기 전용이며 로컬에서 실행되므로, 기록 방식을 변경하지 않고 장부를 보는 방식을 변경합니다. beancount.io는 자체 도구와 함께 관리형 버전을 호스팅합니다. UI 기능 가이드에서 수행할 수 있는 작업을 다룹니다.
재고 (Inventory)
재고는 계정이 현재 보유한 포지션의 모음으로, 각각 고유한 상품과, 관련된 경우 고유한 원가 기준 및 취득일을 가집니다. 동일한 주식을 세 번 매수한 증권 계좌는 하나의 혼합된 숫자가 아닌 세 개의 개별 로트를 하나의 재고에 보유합니다. 로트를 구별하는 것이 정확한 이득 계산을 가능하게 합니다.
분개장 (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는 이를 구문 분석하지 않지만, 6개월 후에 항목이 더 이상 이해되지 않을 때 읽게 될 내용입니다.
개설 지시문 (Open directive)
open 지시문은 계정, 사용 가능한 시작 날짜, 그리고 선택적으로 보유할 수 있는 상품과 사용할 예약 방법을 선언합니다. Beancount는 모든 계정이 첫 번째 분개 전에 개설되어야 하도록 요구하며, 이는 오타가 새로운 계정을 조용히 생성하는 것을 방지합니다. 허용된 상품을 제한하면 또 다른 종류의 오류를 오류로 처리하게 합니다.
2026-01-01 open Assets:US:Broker:VTI VTI "FIFO"패드 (Pad)
pad 지시문은 계정의 다음 잔액 확인이 성공하도록 필요한 금액을 삽입하고 그 차액을 두 번째 계정에 기록하도록 Beancount에 지시합니다. 이는 정확히 한 가지 작업을 위해 존재합니다. 수년간의 내역을 재구성하지 않고 장부를 중간부터 시작하는 것입니다. 초기 설정 이후의 패딩은 일반적으로 실제 오류가 은폐되고 있음을 의미합니다.
수취인 (Payee)
수취인은 거래한 상대방으로, 거래 줄의 첫 번째 따옴표 문자열로 작성됩니다. 수취인을 일관되게 유지하는 것(항상 "Whole Foods", 가끔 "WholeFoods"가 아닌)이 수취인 기반 보고서와 자동 수입기가 작동하는 이유입니다. Beancount는 수취인을 선택 사항으로 취급합니다. 거래에는 설명만 있을 수 있습니다.
일반 텍스트 회계 (Plain-text accounting)
일반 텍스트 회계는 버전 관리 하에 사람이 읽을 수 있는 텍스트 파일로 장부를 관리하고 오픈소스 명령줄 도구로 처리하는 관행입니다. 클릭 인터페이스를 내구성, 감사 가능성 및 자동화와 교환합니다. 데이터는 모든 공급업체보다 오래 지속되고, 모든 변경 사항은 검토 가능한 비교(diff)이며, 모든 스크립트가 이를 읽을 수 있습니다. Beancount, Ledger 및 hledger는 가장 잘 알려진 세 가지 구현체입니다.
플러그인 (Plugin)
플러그인은 Beancount가 파일을 처리하는 동안 로드하는 Python 모듈로, 보고서가 작성되기 전에 지시문을 추가, 변환 또는 검증할 수 있습니다. 플러그인은 핵심 언어를 변경하지 않고 예측, 상각 일정 및 사용자 정의 검사를 구현하는 방법입니다. 장부 상단에 plugin 줄을 추가하여 활성화합니다. 예측 플러그인 가이드에서 실제 예제를 살펴볼 수 있습니다.
분개 (Posting)
분개는 거래의 한 다리입니다. 계정, 금액, 그리고 선택적으로 원가 또는 가격으로 구성됩니다. 거래에는 최소 두 개의 분개가 필요하며, 그 금액의 합계는 0이어야 합니다. 최대 하나의 분개는 금액을 비워둘 수 있으며, 이 경우 Beancount가 균형을 맞추는 금액을 계산합니다.
가격 지시문 (Price directive)
price 지시문은 특정 날짜의 두 상품 간 환율을 기록하며, Beancount가 보고서에서 보유 자산을 시장 가치로 변환하는 방법입니다. 가격은 순수한 참조 데이터입니다. 돈을 이동시키지 않으며 거래에 나타나지 않습니다. 가격이 없으면 포트폴리오는 여전히 원가 기준으로 균형을 맞추지만 시장 가치로 평가할 수는 없습니다.
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여전히 특정 단어가 어렵나요? 도움말 센터는 이 사이트의 모든 가이드를 색인화하고 있으며, 치트시트는 각 지시문의 구문을 나란히 보여줍니다.