Beancount.io 명령줄 도구인 bea로 한 달치 장부를 처음부터 끝까지 마감해 보세요. 원장을 열고, 구매를 기록하고, 은행 내역을 가져오고, 3206.81 USD의 명세서 잔액과 조정하고, 그 달의 손익계산서와 대차대조표를 읽게 됩니다.
그 달은 2026년 8월이며, 원장은 당좌예금 1,250 USD로 시작합니다. 여기서 Python이나 쿼리를 작성하라고 요구하는 것은 없습니다.
아직 설치하지 않았다면 먼저 bea를 설치하세요: Beancount CLI 빠른 시작에서 Homebrew와 uv를 다룹니다. 로컬 장부 작성에는 Beancount.io 계정이 필요 없습니다.
빈 디렉터리에서 작업하세요. 시작하기 전에 두 입력 파일을 그 안에 다운로드하세요:
- first-month.csv — 3주차에 가져올 은행 내역입니다.
- rules.toml — 그 내역이 사용할 분류 규칙입니다.
모든 명령은 --file august/main.bean으로 원장을 지정하므로, 해당 디렉터리에서 원장으로 이동하지 않고도 명령을 실행할 수 있습니다.
1주차 — 장부 설정
원장을 만든 다음, 이번 달 템플릿에 없는 유일한 계정을 엽니다.
bea --no-input init august --currency USD --date 2026-08-01 \
--opening-balance "Assets:Checking 1250"
bea --file august/main.bean add open --date 2026-08-01 --account Expenses:Transport:Fuel -c USDinit는 14개 계정으로 august/main.bean을 작성하며, 여기에는 Expenses:Uncategorized가 포함됩니다. 가져오기는 분류할 수 없는 행을 여기에 둡니다.
2주차 — 일일 구매 기록
구매가 발생할 때마다 기록합니다. 날짜는 기본적으로 오늘로 설정되므로, 과거 날짜는 --date를 명시적으로 전달합니다.
bea --file august/main.bean add transaction "Coffee" --date 2026-08-03 \
--posting "Expenses:Dining 4.50" --posting "Assets:Checking"
bea --file august/main.bean add transaction "Weekly groceries" --date 2026-08-05 \
--posting "Expenses:Groceries 62.30" --posting "Assets:Checking"
bea --file august/main.bean add transaction --date 2026-08-07 --payee "Employer" \
--narration "August salary" --posting "Assets:Checking 2100" --posting "Income:Salary"각 추가는 파일이 교체되기 전에 전체 원장에 대해 확인됩니다. 두 번째 게시( posting)는 비워 두므로, Beancount가 균형 금액을 자동으로 채웁니다.
3주차 — 은행 내역 가져오기
8월 나머지 기간의 내역에는 세 개의 행이 있습니다:
Date,Payee,Amount
2026-08-10,Whole Foods,-28.40
2026-08-12,Shell,-35.00
2026-08-20,Mystery Shop,-9.99규칙 파일은 수취인(payee)을 계정에 매칭합니다. 규칙은 파일 순서대로 실행되며 첫 번째 일치가 우선합니다.
[[rule]]
match = "whole foods|trader joe|corner market"
account = "Expenses:Groceries"
[[rule]]
match = "shell|chevron|exxon"
account = "Expenses:Transport:Fuel"
[[rule]]
match = "salary|payroll|employer"
account = "Income:Salary"--csv로 내역의 열을 매핑하고, 결과를 미리 본 다음, --apply로 반복 실행하여 작성합니다.
bea --file august/main.bean import first-month.csv \
--csv date=Date,amount=Amount,payee=Payee --account Assets:Checking --rules rules.toml
bea --file august/main.bean import first-month.csv --apply미리 보기는 각 행에 대해 매칭된 규칙과 함께 한 줄씩 출력하고, 작성할 정확한 차이(diff)도 표시합니다. --apply 전에는 아무것도 작성되지 않습니다.
두 번째 명령에는 플래그가 필요 없습니다: 열 매핑, 계정, 규칙이 해당 파일에 대해 기억됩니다. 각 작성 항목에는 import-id 줄이 포함되므로, 같은 내역을 다시 가져오면 이미 원장에 있는 항목은 건너뜁니다.
두 행은 규칙에 매칭됩니다. 세 번째인 Mystery Shop은 아무것도 매칭되지 않으므로 Expenses:Uncategorized에 ! 플래그와 함께 게시됩니다 — 나중에 검토할 대기열입니다.
차변/대변 열 형식, 다른 통화, Python 임포터에 대해서는 CLI로 은행 내역 가져오기를 참조하세요.
4주차 — 명세서와 조정
8월 명세서는 당좌예금을 3206.81 USD로 마감합니다. 당신의 장부는 3209.81 USD입니다. 차이는 내역이 놓친 3.00 USD 은행 수수료입니다.
수수료를 기록한 다음, 명세서 잔액을 확인(assert)합니다. Beancount는 하루 시작 시점에 확인(assertion)을 검사하므로, 9월 1일 확인은 모든 8월 거래를 포함합니다.
bea --file august/main.bean add transaction "Bank fee" --date 2026-08-31 \
--posting "Expenses:Fees 3.00" --posting "Assets:Checking"
bea --file august/main.bean add balance --date 2026-09-01 --account Assets:Checking \
--amount "3206.81 USD"
bea --file august/main.bean list transaction --flag '!' --details대기열에는 한 건의 거래, 즉 Mystery Shop 행이 있습니다. --details는 해당 파일과 줄 번호를 출력합니다.
편집기에서 그 줄을 엽니다. Expenses:Uncategorized 게시를 실제로 속해 있는 계정 — 여기서는 Expenses:Dining — 으로 변경하고, 플래그를 !에서 *로 변경하여 검토되었음을 표시합니다. import-id 줄은 유지하여 반복 가져오기에서도 그 행이 건너뛰도록 합니다.
그런 다음 원장이 로드되고 대기열이 비어 있는지 확인합니다:
bea --file august/main.bean check
bea --file august/main.bean list transaction --flag '!' --details깨끗한 원장은 종료 코드 0입니다. 손상된 확인(assertion)이나 알 수 없는 계정은 0이 아닌 종료 코드와 함께 나열됩니다. 대기열은 이제 No transactions found.를 출력합니다.
그 달 읽기
bea --file august/main.bean report income-statement --time 2026-08
bea --file august/main.bean report balance-sheet
bea --file august/main.bean report income-statement --time month손익계산서는 2,100.00 USD 급여를 143.19 USD 지출과 상계하여 순이익 1,956.81 USD를 냅니다. 계정 잔액은 Beancount 부호로 출력되므로, 수입 줄은 음수입니다. 대차대조표는 당좌예금을 3,206.81 USD로 표시하며, 이는 조정한 명세서와 일치합니다.
--time 2026-08은 이 튜토리얼의 달을 고정합니다. --time month는 항상 현재 달을 의미하며, 장부가 최신 상태가 되면 사용하게 될 것입니다.
여기서 계속
- CLI로 은행 내역 가져오기 — 중복 검토, 다른 열 레이아웃, 반복 가져오기.
- bea로 장부 작성 자동화 — JSON 봉투, 종료 코드, 무인 실행.
- Beancount CLI 참조 — 모든 명령과 옵션.