본문으로 건너뛰기

Beancount 및 플레인 텍스트 회계 용어집

Beancount 및 플레인 텍스트 회계 용어를 쉬운 말로 정의합니다: 계정, 전기, 원가 기준, 부킹 방식 등.

플레인 텍스트 회계는 복식부기에서 차용한 어휘에 Beancount만의 고유한 단어 몇 가지를 더합니다. 이 용어집은 이 문서를 읽거나 자신의 원장 파일을 다룰 때 만나게 될 용어를 정의하며, 도움이 되는 경우 짧은 예시를 함께 제공합니다. 각 항목에는 자체 링크가 있어 동료에게 정의를 바로 알려줄 수 있습니다.

계정 (Account)​

계정은 하나의 가치 흐름을 추적하는 이름 붙은 버킷으로, Assets, Liabilities, Equity, Income, Expenses 다섯 가지 루트 유형 중 하나 아래에 콜론으로 구분된 계층 구조로 작성됩니다. 이 계층 구조가 장부의 전체 조직 구조입니다 — Assets:US:BofA:Checking과 Expenses:Food:Restaurant은 자동으로 정렬되고 집계됩니다. 모든 계정은 사용하기 전에 선언해야 합니다. 명명 규칙은 Beancount 언어 구문을 참조하세요.

발생 기준 (Accrual basis)​

발생주의 회계는 현금이 실제로 움직이는 시점과 관계없이 소득이 발생했을 때 수익을 기록하고 비용이 발생했을 때 비용을 기록합니다. 현금주의 회계는 그 반대로, 돈이 오갈 때만 양쪽을 인식합니다. 발생주의는 기간의 성과를 더 정확하게 보여주기 때문에, 3월에 보낸 인보이스는 고객이 5월에 지불하더라도 3월에 속합니다.

상각 (Amortization)​

상각은 하나의 큰 지불을 실제로 적용되는 기간에 걸쳐 분배하여, 매월 비용의 공정한 몫을 부담하도록 합니다. 1월에 지불한 연간 보험료는 1월만이 아니라 열두 달 모두의 비용입니다. Beancount에서는 분할 전기를 직접 작성하거나 플러그인으로 생성합니다 — 상각을 참조하세요.

잔액 검증 (Balance assertion)​

잔액 검증은 특정 날짜 시작 시점에 계정 잔액이 반드시 얼마여야 하는지를 명시하는 balance 지시문으로, 은행 명세서가 장부에 대한 자동 점검이 되도록 합니다. 계산된 잔액이 검증의 허용 오차를 넘어 다르면 Beancount는 예상 금액과 실제 금액을 함께 표시하며 크게 실패합니다. 허용 오차는 작성한 마지막 소수점 자리의 한 단위입니다 — 4.27 RGAGX는 4.26에서 4.28까지를 허용하며, 통화 앞에 ~를 붙이면 직접 설정할 수 있습니다. 명세서마다 계정당 하나의 검증을 추가하는 것이 원장을 신뢰할 수 있게 유지하는 가장 저렴한 방법입니다.

2026-01-01 balance Assets:US:BofA:Checking   4,321.00 USD

Beancount​

Beancount는 원장이 아무 텍스트 편집기에서 편집하고 명령줄 도구로 검증하는 플레인 텍스트 파일인 오픈소스 복식부기 회계 시스템입니다. 데이터베이스나 독점 파일 형식 없이 엄격하고 파싱 가능한 구문, 쿼리 언어, 웹 인터페이스를 제공합니다. 원장이 텍스트이기 때문에 코드와 함께 Git에 편안히 저장됩니다. Beancount 소개부터 시작하세요.

Beancount 쿼리 언어​

Beancount 쿼리 언어(BQL)는 원장에 질문을 던질 때 사용하는 SQL 유사 언어입니다. 데이터베이스가 아니라 파싱된 지시문 위에서 실행되므로 SELECT account, sum(position) WHERE year = 2026은 편집 중인 동일한 파일에서 즉시 답합니다. 전체 문법은 쿼리 언어 가이드를 참조하세요.

예약 방법 (Booking method)​

부킹 방식은 감소가 어느 기존 로트에서 인출할지 선택해야 할 때 Beancount가 적용하는 규칙입니다. 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 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)​

재고는 계정이 현재 보유한 포지션의 모음으로, 각 포지션은 자체 상품과 해당되는 경우 자체 취득원가 및 취득일을 가집니다. 같은 주식을 세 번 매수한 증권 계좌는 하나의 혼합된 숫자가 아니라 하나의 재고 안에 세 개의 개별 로트를 보유합니다. 로트를 구분해 유지하는 것이 정확한 이득 계산을 가능하게 합니다.

저널 (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가 파일을 처리하는 동안 로드하는 파이썬 모듈로, 보고서가 만들어지기 전에 지시문을 추가, 변환 또는 검증할 수 있게 합니다. 플러그인은 핵심 언어를 바꾸지 않고 예측, 상각 일정, 사용자 정의 검사를 구현하는 방법입니다. 원장 상단의 독립적인 plugin 줄로 활성화하며, 절대 option으로 하지 않습니다 — 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의 가중치를 주어 거래의 균형 여부를 결정합니다. price 지시문이 없으면 포트폴리오는 원가로는 여전히 균형을 이루지만 시장 가치로 평가될 수 없습니다.

2026-06-30 price VTI   271.40 USD

실시간 가격은 호스팅된 원장에서 지원되는 자산에 대해 관리형 price 지시문을 제공합니다. 같은 날짜와 쌍(역방향 쌍 포함)에 대해서는 자신의 가격이 우선합니다. 나중 날짜의 관리형 가격은 나중 평가에 여전히 적용될 수 있습니다.

화해 (Reconciliation)​

조정은 장부가 은행이나 증권 명세서 같은 외부 기록과 일치함을 입증하는 행위입니다. 플레인 텍스트 회계에서는 대부분 기계적입니다: 각 명세서 날짜마다 잔액 검증을 추가하고 도구가 숫자가 일치하는지 알려주도록 두면 됩니다. 매달 깔끔하게 조정되는 원장은 두려움 없이 세금 신고를 할 수 있는 원장입니다.

태그와 링크는 계정 계층 외부에서 거래를 그룹화하기 위해 붙이는 두 가지 레이블입니다: #가 붙은 태그는 #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

아직도 단어가 막히시나요? 도움말 센터가 이 사이트의 모든 가이드를 색인하고 있으며, 치트시트가 각 지시문의 구문을 나란히 보여줍니다.

출처: https://beancount.io/ko/docs/glossary