모든 현금흐름표는 계정마다 한 번씩 내려지는 조용한 결정에 기반합니다. 이 계정이 설명하려는 현금의 일부인가, 아니면 영업, 투자, 재무 활동인가? 이 결정이 맞으면 현금흐름표는 돈이 실제로 어디로 갔는지 보여줍니다. 틀리면 현금흐름표는 자신 있게 잘못된 정보를 제공합니다.
지금까지 Beancount.io 현금흐름 보고서는 휴리스틱 — 계정의 루트 유형과 이름 기반 추측으로 어떤 자산이 현금인지 — 으로 이 결정을 대신했습니다. 대부분의 원장에서 추측은 대부분 맞았고, 나머지 경우에는 조용히 틀렸습니다. 잘못된 이름의 증권 계정은 잘못된 섹션에 들어갔습니다. 실질적으로 현금인 머니마켓 펀드는 이름에 그렇게 표시되지 않았다는 이유로 투자 활동에 위치했습니다.
오늘부터 분류를 명시적으로 지정할 수 있습니다. 계정의 open 지시문에 표준 beancount 메타데이터 한 줄이면 됩니다:
2000-01-01 open Assets:US:Brokerage
cash-flow-role: "investing"
2000-01-01 open Assets:US:Marcus:Savings
cash-flow-role: "cash"하나의 키, 네 가지 값 — cash, operating, investing, financing — 이것이 전체 구성입니다. 설정 페이지도, JSON 파일도, 보고서별 옵션 대화상자도 없습니다. 다음에 현금흐름 보고서를 로드하면 증권 계정의 흐름은 투자 활동 아래에 표시되고, 저축 계정은 현금흐름표가 설명하는 변동의 대상인 현금 풀에 합류하며, 다른 모든 계정은 이전과 똑같이 작동합니다.

각 역할의 의미
현금흐름표는 모든 계정을 두 가지 역할 중 하나로 분류하며, cash-flow-role은 한 단어로 두 질문에 모두 답합니다:
"cash"— 계정이 현금 및 현금성자산 풀에 속합니다. 현금 계정은 라인 항목으로 표시되지 않습니다. 현금흐름표는 이들의 합산 잔액의 변동을 설명하며, 두 현금 계정 간 이체는 서로 상쇄됩니다 — 당좌예금에서 저축예금으로 돈을 옮기는 것처럼."operating"/"investing"/"financing"— 계정은 현금이 아니며, 해당 활동 섹션 아래에 라인으로 기간 변동이 표시됩니다.
기본적으로 보고서는 이름에 Cash, Checking, Savings, 또는 Bank가 포함된 자산 계정을 현금성자산으로 취급합니다. 역할을 선언하면 양방향으로 이 규칙을 재정의합니다. cash-flow-role: "cash"는 이름 규칙이 놓친 계정 — 머니마켓 펀드, 스테이블코인 지갑 — 을 현금 풀에 포함시킵니다. 그리고 Assets:US:Bank:CD에 cash-flow-role: "investing"을 붙이면 한 줄로 두 가지 효과가 있습니다: CD를 현금에서 제외하고 동시에 투자로 분류합니다 — 이름이 현금 규칙에 맞았더라도 말입니다.
우리는 의도적으로 두 개가 아닌 하나의 키를 사용했습니다. "이 계정이 현금인가?"와 "어느 활동 섹션에 속하는가?"는 결코 독립적인 질문이 아니었습니다 — 계정은 현금 풀의 일부이거나 정확히 하나의 활동 섹션에 속합니다. 두 개의 키는 현금 계정에 활동 역할을 부여하는 등의 불가능한 상태를 허용했을 것입니다. 하나의 키는 불법 상태를 표현할 수 없게 만들며, 전체 사양이 트윗 하나에 들어갑니다.

선언한 분류는 모든 보기가 사용하는 분류입니다. 활동별 차트는 각 월의 영업, 투자, 재무 흐름을 쌓습니다. 계정의 역할을 변경하면 그 흐름은 차트의 올바른 레이어, 현금흐름표의 올바른 섹션, 그리고 내보내기의 올바른 라인으로 동시에 이동합니다.
선언이 추론을 이깁니다 — 그리고 보고서는 작업 내역을 보여줍니다
분류는 이제 엄격한 순서로 결정됩니다: 먼저 메타데이터, 그다음 내장 휴리스틱입니다. 그리고 보고서는 자신이 한 일을 정직하게 보여줍니다. 현금흐름표는 숫자를 만들 때 현금으로 취급한 계정을 정확히 나열하는 "이 보고서의 현금 및 현금성자산" 패널로 끝나며, 이를 조정합니다: 기초 현금, 기말 현금, 그리고 활동 섹션이 설명하는 순변동.

보고서는 또한 사용자가 선언한 분류와 추론된 분류를 구분하며, 이 구분은 CSV 및 Markdown 내보내기에도 반영됩니다: 전적으로 선언된 역할로 작성된 현금흐름표는 더 이상 "분류가 추론되었습니다"라는 공시 줄을 포함하지 않습니다. 그 시점에서 분류는 추론이 아니라 장부의 일부이기 때문입니다.
오타는 일반 텍스트 도구가 처리해야 하는 방식으로 처리됩니다. cash-flow-role: "invsting"은 조용히 수락되지도, 조용히 무시되지도 않습니다: 계정은 기본 휴리스틱으로 대체되고, 상태 패널이 이를 표시합니다 — "알 수 없는 cash-flow-role 값, 기본값 사용" — 그래서 실수가 로그에 묻히지 않고 눈에 보이는 곳에 표시됩니다.
아무것도 변경하지 않으면 아무것도 변경되지 않습니다
주석이 없는 계정은 이전과 동일한 공개 기본값을 사용합니다: 수익과 비용은 영업, 현금이 아닌 자산은 투자, 부채와 자본은 재무로 매핑되며, 이름이 일치하는 현금성자산이 현금 풀을 구성합니다. 기존 원장은 이 릴리스 전후로 동일하게 렌더링됩니다. 대부분의 사용자는 기본값이 잘못된 소수의 계정에만 주석을 달고 나머지는 신경 쓰지 않을 것입니다.
이식성도 그대로 유지됩니다. open 지시문의 메타데이터는 핵심 beancount 문법으로, 모든 v2/v3 도구가 파싱하고 이 특정 키를 찾지 않는 도구는 무시합니다. bean-check는 통과하고, Fava는 무시하며, 원장은 Beancount.io 외부에서도 완전히 사용 가능합니다.
현금에 대한 모든 보기가 서로 일치합니다
하나의 공유 해석기가 각 계정의 최종 역할을 생성하며, 모든 소비처가 이를 읽습니다:
- 현금흐름 보고서는 해석된 역할에서 활동 섹션과 최종 결과 — 현금 및 현금성자산 순변동 — 을 구성합니다.
- CSV, Markdown 및 인쇄 내보내기는 동일한 숫자를 전달하며, 휴리스틱이 실제로 사용된 경우에만 추론 분류 공시가 포함됩니다.
- 개요 Sankey 다이어그램은 동일한 선언을 읽으므로, 현금으로 표시한 계정은 더 이상 흐름 노드로 표시되지 않고, 선언한 활동 역할은 비수익 계정에 대해 존중됩니다.
- 계정 상태 패널은 선언된 계정을 더 이상 "미분류 자산"으로 나열하지 않습니다.

현금흐름표와 다이어그램이 현금에 대해 의견이 다를 수 없습니다. 의견이 달라질 수 있는 답이 하나뿐이기 때문입니다.
설정 페이지가 아닌 원장에 두는 이유
이것이 우리가 가장 강하게 느끼는 릴리스의 부분입니다. 우리는 설정 UI를 고려했지만 세 가지 이유로 거부했습니다:
- 원장이 진실의 원천입니다. 다른 곳에 있는 분류는 그것이 설명하는 장부와 불일치할 수 있습니다.
open지시문에 있는 분류는 계정과 함께 이동합니다 — 이름 변경, 저장소 이동, 파일을 읽는 모든 클라이언트를 통해. - 일반 텍스트는 diff, grep, 검토가 가능합니다. 원장을 git에 보관한다면 — 그리고 Beancount.io를 사용한다면 그럴 것입니다 — 분류 규칙은 이제
grep,diff,blame할 수 있고, 풀 리퀘스트에서 검토자가 볼 수 있습니다. 설정 페이지는 그 어떤 것도 할 수 없습니다. - 오프라인과 어디서나 작동합니다. 어떤 편집기로도 역할을 선언할 수 있습니다. 원장을 읽는 미래의 어떤 클라이언트든 클라이언트별 설정 동기화 없이 분류를 자동으로 얻습니다.
같은 이유로 분류는 의도적으로 날짜 적용이 아닙니다. 메타데이터는 계정의 본질을 설명하며, 이는 거의 변경되지 않습니다. 변경될 때는 open 지시문을 편집하면 git 기록이 무엇이 언제 변경되었는지 기록합니다. 그 기록 자체가 감사 추적입니다.
원장에서 사용해 보세요
이 기능은 현재 모든 원장에 배포되고 있습니다. 역할 선언은 텍스트 편집기만 있으면 됩니다:
- 계정의
open지시문이 있는 파일을 엽니다. - 그 아래 들여쓰기된 메타데이터 줄로
cash-flow-role: "cash"(또는"operating","investing","financing")를 추가합니다. - 현금흐름 보고서를 다시 로드합니다. 선언이 즉시 휴리스틱을 이깁니다.
기본 추측이 잘못된 계정부터 시작하세요 — 실제로 현금이 아닌 CD, 실제로 현금인 머니마켓 펀드, 투자 활동 아래에 깔끔하게 두고 싶은 증권 계정. 나머지는 그대로 두세요. 전체 사양 — 허용 값, 우선순위, 기본 분류 및 잘못된 값 처리 방법 — 은 현금흐름 역할 참조에 있습니다.
현금흐름 보고서는 모든 Beancount.io 원장의 일부로, 손익계산서와 대차대조표와 함께 제공됩니다. 이번 여름에 출시된 다른 기능 — 더 스마트한 가져오기, 작업 가능한 AI 어시스턴트, 재구축된 모바일 앱 — 에 대해 자세히 알아보려면 3.6 릴리스 노트를 확인하세요.
여러분의 장부는 이미 어떤 계정이 투자이고 어떤 것이 일상 지출인지 알고 있었습니다. 이제 현금흐름표도 알게 되었습니다.
