본문으로 건너뛰기

Beancount 구문 참조: 지시문, 계정, 금액

Beancount 언어 구문 참조: 지시문, 거래, 계정 명명, 태그, 메타데이터 및 일반 텍스트 원장의 서식 규칙을 정리합니다.

이 문서는 Beancount 언어 문법에 대한 간결하면서도 포괄적인 레퍼런스를 제공하며, 실용적인 구조와 규칙, 예시를 함께 다룹니다. 더 자세한 내용은 치트 시트를 참고하세요.

개요​

Beancount는 평문 복식부기 회계 시스템입니다. 이 언어는 세 가지 주요 구성 요소를 중심으로 구조화되어 있습니다.

  • 상품 (통화, 주식, 포인트 등)
  • 계정 (계층적이고 분류된 원장)
  • 지시자 (이벤트나 설정을 기록하는 날짜가 지정된 항목)

상품​

상품은 항상 대문자로 작성합니다. 예: USD, EUR, AAPL, BTC, MILES, HOURS.

계정​

계정은 콜론으로 구분된 대문자화된 계층적 이름입니다. 반드시 다섯 가지 루트 계정 유형 중 하나로 시작해야 합니다.

이름유형일반적인 내용예시
Assets+현금, 은행, 투자Assets:Checking
Liabilities-신용카드, 대출Liabilities:CreditCard
Income-급여, 이자Income:EmployerA
Expenses+구매, 청구서Expenses:Food:Dining
Equity-기초/기말 잔액Equity:Opening-Balances
  • 각 구성 요소는 대문자로 시작해야 하며, 콜론(:)으로 구분되고 공백이 없어야 합니다.
  • 구성 요소에 숫자와 대시를 사용할 수 있습니다.
  • 루트 계정 이름은 옵션을 통해 사용자 지정할 수 있습니다(아래 참조).

지시어​

지시자는 Beancount 파일의 핵심 구문입니다. 대부분은 날짜로 시작하고, 그 뒤에 지시자 유형과 인수가 옵니다. 파일 순서가 아닌 날짜순(시간순)으로 처리됩니다.

일반 형식:

YYYY-MM-DD <directive> <arguments...>

일반적인 지시어 및 예제​

계정 개설 및 폐쇄​

2023-01-01 open Assets:Checking USD,EUR  ; Optionally specify allowed currencies
2023-12-31 close Assets:Checking

상품 선언​

2020-07-22 commodity AAPL
  name: "Apple Inc."

가격 선언​

2022-04-30 price AAPL 150.00 USD

호스팅된 원장에서 자동 평가 시세를 사용하려면 실시간 가격 설정을 참고하세요. 관리형 피드는 일반적인 날짜가 지정된 price 지시자를 제공합니다. 이는 거래 가격(@, @@)이나 로트 원가({})를 대체하지 않습니다.

메모 및 문서​

2022-03-20 note Assets:Checking "Asked about refund"
2022-03-20 document Assets:Checking "statements/2022-03.pdf"

거래​

2024-01-05 * "Coffee Shop" "Morning coffee"
  Expenses:Food         4.50 USD
  Assets:Cash         -4.50 USD
 
2024-01-06 ! "Phone Bill" "Monthly payment" #utilities ^phone
  id: "INV12345"              ; Metadata
  Expenses:Utilities  60.00 USD
  Assets:Checking

분개 기능​

; With cost basis
  Assets:Stocks    1 AAPL {150.00 USD}
; With price annotation
  Assets:Cash   -100 USD @ 1.25 CAD
; With total price
  Assets:Cash   -100 USD @@ 125.00 CAD
; Implicit balance
  Assets:Cash   -100 USD
  Assets:Bank

잔액 확인 및 패딩​

pad는 그것이 공급하는 balance보다 앞선 날짜여야 합니다. 잔액 검증은 해당 날짜의 시작 시점에 확인되기 때문입니다.

2024-06-01 pad Assets:Checking Equity:Opening-Balances
2024-06-02 balance Assets:Checking 1000.00 USD

이벤트​

2024-06-01 event "location" "San Francisco, CA"

옵션​

파일 전체 설정을 지정합니다.

option "title" "My Ledger"
option "operating_currency" "USD"
option "documents" "docs/"
option "name_assets" "Vermoegen"

더 많은 내용은 옵션 레퍼런스를 참고하세요.

플러그인 및 파일 구성​

plugin "beancount.plugins.module_name"
plugin "beancount.plugins.module_name" "config-string"
include "other/file.beancount"
pushtag #project
; ...
poptag #project

호스팅된 Beancount.io는 지원되는 관리형 가격 URL include도 처리합니다. 이는 업스트림 Beancount의 확장 기능입니다. 호스팅 및 로컬 호환성을 위해서는 실시간 가격 설정 가이드를 참고하세요.

중요 규칙​

  • 모든 거래는 균형을 이루어야 합니다. 모든 기입의 가중치 합은 0이 되어야 합니다. 기입의 가중치는 그 금액이거나, 원가({}) 또는 가격(@)이 있을 경우 다른 통화로 환산된 값입니다.
  • 계정은 사용 전에 개설해야 하며, 폐쇄된 계정은 기입을 받을 수 없습니다.
  • 잔액 검증은 지정된 통화만 확인하며, 상위 계정에도 사용할 수 있고, 해당 날짜의 시작 시점에 평가됩니다(따라서 같은 날의 거래는 제외됩니다).
  • 가격 표기(@는 단위당, @@는 총액)는 실제로 균형에 영향을 줍니다. 이들은 다른 통화로 기입의 가중치를 설정합니다. -100 USD @ 1.25 CAD는 125 CAD의 가중치를 가지며 125 CAD 기입을 상쇄합니다. 가격을 제거하면 거래는 더 이상 균형을 이루지 않습니다.

일반적인 패턴​

개시 잔액으로 계정 개설​

두 계정을 모두 개설하고, 시작 날짜에 pad를 사용한 뒤, 다음 날 잔액을 검증합니다(잔액 검증은 해당 날짜의 시작 시점에 확인됩니다).

2024-01-01 open Assets:Checking USD
2024-01-01 open Equity:Opening-Balances
2024-01-01 pad Assets:Checking Equity:Opening-Balances
2024-01-02 balance Assets:Checking 1000.00 USD

투자 거래​

2024-01-01 * "Buy stock"
  Assets:Broker:Stock   10 AAPL {150.00 USD}
  Assets:Broker:Cash -1500.00 USD

다중 통화 거래​

2024-01-01 * "Currency exchange"
  Assets:USD   -100.00 USD @ 1.25 CAD
  Assets:CAD    125.00 CAD

주석​

poptag  #trip-to-peru
; inline comments begin with a semi-colon
* any line not starting with a valid directive is also ignored silently

출처: https://beancount.io/ko/docs/Basics/syntax