이 문서는 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 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