본문으로 건너뛰기

언어 구문

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

메모 및 문서

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

중요 규칙

  • 모든 거래는 균형을 이루어야 합니다: 모든 분개의 가중치 합계는 0이어야 합니다. 분개의 가중치는 금액이거나, 다른 통화가 있을 때 비용({}) 또는 가격(@)을 해당 통화로 환산한 값입니다.
  • 계정은 사용 전에 개설되어야 합니다; 폐쇄된 계정은 분개를 받을 수 없습니다.
  • 잔액 확인은 지정된 통화만 확인하며, 상위 계정에 사용할 수 있고, 해당 날짜의 시작 시점에 평가됩니다 (따라서 당일 거래는 제외됩니다).
  • 가격 주석(@ 단위당, @@ 총액)은 균형 조정에 영향을 미칩니다: 분개의 가중치를 다른 통화로 설정합니다. -100 USD @ 1.25 CAD125 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