스타트업을 위한 Beancount 설정
실용적이고 복사하여 붙여넣기 할 수 있는 기본 설정으로 일반 텍스트로 스타트업 장부를 운영하세요. 시드 전 단계부터 시리즈 A까지 작동합니다. 이는 법률 또는 세금 자문이 아닙니다.
스타트업을 운영한다는 것은 여러 모자를 쓰는 것을 의미하며, 그중 가장 중요한 것 중 하나는 "부기 담당자"입니다. 비싼 소프트웨어나 전담 회계사를 고용하기 전에 정확하고 감사 가능하며 독점적인 생태계에 묶이지 않는 시스템이 필요합니다. 여기에 Beancount가 등장합니다: 오픈소스 기반의 일반 텍스트 회계 시스템입니다.
Beancount를 사용하면 재무 원장이 Git 저장소의 코드 옆에 텍스트 파일로 존재합니다. 버전 관리가 되고 투명하며 무한히 사용자 정의할 수 있습니다. 이 가이드는 설립부터 시리즈 A까지 스타트업 장부를 운영할 수 있는 완전하고 복사하여 붙여넣기 할 수 있는 설정을 제공하며, 건전한 발생주의 회계 원칙에 기반합니다.
1) 설정할 내용
이 가이드는 완전하고 전문가 수준의 회계 설정을 만드는 과정을 안내합니다. 완료하면 다음을 갖게 됩니다:
- Git으로 관리되는 단일 정보 원천 원장(
main.beancount)으로 회사 재무의 완전하고 감사 가능한 이력을 제공합니다. - 아름다운 보고서와 그래프를 위한 Fava. Fava는 Beancount용 웹 인터페이스로 텍스트 파일을 대화형 손익계산서, 대차대조표, 현금 흐름 분석으로 변환합니다.
- 나중에 추가할 수 있는 임포터 구조로 은행, 신용카드, PayPal, Stripe 계정에서 거래 입력을 자동화할 수 있습니다. 시스템을 배우기 위해 처음에는 수동으로 시작한 후 자동화합니다.
- 현대 스타트업을 위한 발생주의 기반 계정과목표로 이연 수익, 선급 비용, 급여 부채에 대한 기본 지원이 포함됩니다.
- 시드 파이낸싱을 위한 기본 요소로 SAFE(부채 또는 자본으로) 및 이자가 있는 전환사채 기록에 대한 명확한 예시가 포함됩니다.
2) 프로젝트 구조 (저장소에 그대로 추가)
회사의 Git 저장소 안에 다음 디렉토리 구조를 만들어 시작하세요. 이 구성은 원장을 깔끔하고 확장 가능하게 유지합니다.
/ledger
main.beancount
/includes
accounts.beancount
opening-balances.beancount
policies.beancount
/documents
/bank
/invoices
/receipts
/importers # 선택 사항; CSV 자동 수집을 추가할 때 사용
bank_importer.py
card_importer.pymain.beancount: 모든 것을 통합하는 중앙 파일입니다./includes: 계정과목표, 개시 잔액, 회계 정책을 보관합니다./documents: 감사 추적을 위해 은행 명세서, 송장, 영수증 PDF를 저장하는 장소입니다./importers: 향후 은행 CSV를 파싱하는 Python 스크립트가 위치할 곳입니다.
3) 최소한의 합리적인 main.beancount
이것은 원장의 진입점입니다. 몇 가지 전역 옵션을 설정하고 다른 구성 요소 파일을 포함합니다. 이 내용을 ledger/main.beancount에 복사하고 제목을 사용자 지정하세요.
option "title" "Acme, Inc. Ledger"
option "operating_currency" "USD"
option "documents" "ledger/documents"
include "includes/accounts.beancount"
include "includes/opening-balances.beancount"
include "includes/policies.beancount"
; 나중에 임포터를 추가하면 여기에 플러그인 줄을 추가합니다.
; plugin "beancount.plugins.implicit_prices"4) 스타터 계정과목표 (발생주의 우선)
계정과목표는 회사의 재무 거래에 대한 완전한 범주 목록입니다. 이 스타터 템플릿은 현금 기준 회계보다 회사 상태를 훨씬 정확하게 보여주는 발생주의 회계를 위해 설계되었습니다.
이것을 includes/accounts.beancount에 넣으세요. 지금 필요 없는 계정은 자유롭게 제거하세요.
; --- 자산 ---
1970-01-01 open Assets:Bank:Checking USD
1970-01-01 open Assets:Bank:Savings USD
1970-01-01 open Assets:AR USD ; 매출채권
1970-01-01 open Assets:Prepaid:Software USD
1970-01-01 open Assets:Prepaid:Insurance USD
1970-01-01 open Assets:Deposits USD ; 보증금
1970-01-01 open Assets:Equipment USD
1970-01-01 open Assets:Intangibles USD
1970-01-01 open Assets:Crypto:BTC BTC
1970-01-01 open Assets:Other
; --- 부채 ---
1970-01-01 open Liabilities:AP USD ; 매입채무
1970-01-01 open Liabilities:CreditCard:Corporate USD
1970-01-01 open Liabilities:DeferredRevenue USD
1970-01-01 open Liabilities:Payroll:Withholding USD
1970-01-01 open Liabilities:Payroll:EmployerTaxes USD
1970-01-01 open Liabilities:SalesTax:CA USD
1970-01-01 open Liabilities:SAFE USD
1970-01-01 open Liabilities:NotesPayable USD
1970-01-01 open Liabilities:Other
; --- 자본 ---
1970-01-01 open Equity:CommonStock USD
1970-01-01 open Equity:APIC USD ; 추가 납입 자본
1970-01-01 open Equity:SAFE USD ; SAFE를 자본으로 분류하는 경우
1970-01-01 open Equity:RetainedEarnings USD
1970-01-01 open Equity:OpeningBalances USD
; --- 수익 (음수 잔액) ---
1970-01-01 open Income:Revenue:SaaS USD
1970-01-01 open Income:Revenue:Services USD
1970-01-01 open Income:Other USD
; --- 비용 ---
1970-01-01 open Expenses:COGS USD
1970-01-01 open Expenses:Payroll:Wages USD
1970-01-01 open Expenses:Payroll:EmployerTaxes USD
1970-01-01 open Expenses:Benefits USD
1970-01-01 open Expenses:Contractors USD
1970-01-01 open Expenses:Software:Subscriptions USD
1970-01-01 open Expenses:Cloud USD
1970-01-01 open Expenses:Rent USD
1970-01-01 open Expenses:Meals USD
1970-01-01 open Expenses:Travel USD
1970-01-01 open Expenses:Marketing USD
1970-01-01 open Expenses:Legal USD
1970-01-01 open Expenses:Accounting USD
1970-01-01 open Expenses:Insurance USD
1970-01-01 open Expenses:BankFees USD
1970-01-01 open Expenses:Taxes:Income USD
1970-01-01 open Expenses:Taxes:Sales USD
1970-01-01 open Expenses:Other USD참고
- 수익 계정은 음수입니다. 이는 복식부기에서 대변을 나타내기 때문입니다. 걱정하지 마세요. Fava는 보고서에서 부호를 자동으로 반전시키므로 손익계산서에 수익이 양수로 표시됩니다.
- 좁고 목적이 분명한 범주로 시작하세요. 나중에 새 계정을 추가하는 것이 지나치게 세분화된 계정과목표를 정리하는 것보다 훨씬 쉽습니다.
5) 개시 잔액 (첫날)
원장의 첫 거래는 무대를 설정합니다. 추적을 시작한 날의 계정 초기 상태를 기록합니다. 이 거래를 includes/opening-balances.beancount에 넣고 날짜와 금액을 실제 시작 위치에 맞게 조정하세요.
2025-01-01 * "개시 잔액"
Assets:Bank:Checking 5,000.00 USD
Liabilities:CreditCard:Corporate -500.00 USD
Equity:OpeningBalances -4,500.00 USD이 항목은 회사가 은행에 $5,000과 신용카드 잔액 $500으로 시작했음을 기록합니다. Equity:OpeningBalances 계정은 복식부기 요구 사항인 거래가 0으로 균형을 맞추도록 보장하는 특수 계정입니다.
6) 일반적인 스타트업 거래 (복사-붙여넣기)
초기 스타트업에서 가장 흔한 재무 이벤트에 대한 레시피입니다. 복사하고 붙여넣고 자신의 용도에 맞게 조정하세요.
창업자 주식 매입 (단순, 통화 전용)
창업자가 액면가로 초기 주식을 매입하면 현금이 회사로 들어오고 자본으로 기록됩니다. 자본 테이블(Carta, Pulley 또는 스프레드시트)은 주식 수의 정보 원천이며 원장은 달러만 기록합니다.
2025-01-05 * "액면가 창업자 주식 매입"
Assets:Bank:Checking 800.00 USD
Equity:CommonStock -0.80 USD
Equity:APIC -799.20 USD
; 8,000,000 보통주 @ $0.0001 — 수는 원장 외부에서 관리(선택 사항) 주식을 상품으로 추적
원장에서 발행 주식 수를 추적하려면 주식을 "상품"으로 정의할 수 있습니다. 이는 더 복잡하지만 원장 내에서 더 완전한 기록을 제공합니다.
2025-01-05 commodity ACME
name: "Acme, Inc. 보통주"
2025-01-05 * "창업자 주식 발행"
Assets:Bank:Checking 800.00 USD
Equity:APIC -799.20 USD
Equity:CommonStock -8,000,000 ACME {0.0001 USD}SAFE 현금 유입 (분류 선택)
SAFE(미래 지분에 대한 간단한 계약)는 부채 또는 자본의 한 형태("메자닌 자본")로 처리할 수 있습니다. 회계사와 상의하여 올바른 접근 방식을 선택하고 일관성을 유지하세요.
; (A) 자본 분류 (메자닌)
2025-02-01 * "포스트머니 SAFE — SeedFund"
Assets:Bank:Checking 500,000.00 USD
Equity:SAFE -500,000.00 USD
; (B) 부채 분류 (전환 시까지)
2025-02-01 * "포스트머니 SAFE — SeedFund"
Assets:Bank:Checking 500,000.00 USD
Liabilities:SAFE -500,000.00 USD가격이 정해진 라운드가 종료되면 마감 문서에 따라 SAFE 잔액을 우선주와 추가 납입 자본으로 재분류합니다.
이자가 발생하는 전환사채
SAFE와 달리 전환사채는 이자가 발생하는 명백한 부채입니다. 초기 현금을 기록한 다음 이자 비용을 주기적으로(예: 분기별) 기록합니다.
2025-03-01 * "전환사채 — 연 6%"
Assets:Bank:Checking 250,000.00 USD
Liabilities:NotesPayable -250,000.00 USD
2025-06-30 * "2분기 전환사채 이자 발생"
Expenses:Interest 3,750.00 USD
Liabilities:NotesPayable -3,750.00 USD
; 250,000 * 6% * 0.25 = 3,750연간 SaaS 판매 (이연 수익 + 월별 인식)
이것은 발생주의 회계의 초석입니다. 고객이 1년을 선불로 지불하면 모든 수익을 한 번에 인식하지 않습니다. 부채(DeferredRevenue)로 기록하고 매월 1/12씩 인식합니다.
2025-03-10 * "연간 구독 — AcmeCo — INV-001"
Assets:AR 1,200.00 USD
Liabilities:DeferredRevenue -1,200.00 USD
narration: "SaaS 연간 선불"
2025-03-20 * "INV-001 결제"
Assets:Bank:Checking 1,200.00 USD
Assets:AR -1,200.00 USD
; 1/12 인식 (매월 반복 또는 스크립트화)
2025-04-01 * "수익 인식 1/12 — INV-001"
Liabilities:DeferredRevenue 100.00 USD
Income:Revenue:SaaS -100.00 USD선급 비용 및 상각
이것은 이연 수익의 반대입니다. 서비스(연간 소프트웨어나 보험 등)를 선불로 지불하면 자산(Prepaid)으로 기록하고 매월 일부를 "상각"하거나 비용 처리합니다.
2025-03-01 * "연간 소프트웨어 선불"
Assets:Prepaid:Software 1,200.00 USD
Assets:Bank:Checking -1,200.00 USD
2025-04-01 * "선불 상각 1/12"
Expenses:Software:Subscriptions 100.00 USD
Assets:Prepaid:Software -100.00 USD급여 (순 현금, 원천징수 + 고용주 세금 포함)
급여 항목에는 여러 부분이 있습니다: 총 임금 비용, 고용주 세금 비용, 직원에게 지급된 순 현금, 정부에 납부해야 하는 원천징수 세금에 대한 부채입니다.
2025-04-15 * "급여 — 4월 15일"
Expenses:Payroll:Wages 15,000.00 USD
Expenses:Payroll:EmployerTaxes 1,200.00 USD
Liabilities:Payroll:Withholding -4,000.00 USD
Assets:Bank:Checking -12,200.00 USD판매세 징수 및 납부 (캘리포니아 예시)
판매세를 징수할 때 그것은 당신의 돈이 아닙니다. 주에 납부해야 할 부채입니다. 판매 시 부채를 기록하고 세금을 납부할 때 정리합니다.
2025-05-10 * "송장 #123 — CA 과세"
Assets:AR 1,088.75 USD
Income:Revenue:SaaS -999.00 USD
Liabilities:SalesTax:CA -89.75 USD
2025-06-05 * "#123 결제"
Assets:Bank:Checking 1,088.75 USD
Assets:AR -1,088.75 USD
2025-07-20 * "2분기 CA 판매세 납부"
Liabilities:SalesTax:CA 89.75 USD
Assets:Bank:Checking -89.75 USD외환 및 암호화폐 (가벼운 처리)
Beancount는 여러 통화를 기본적으로 처리합니다. price 지시문을 사용하여 환율을 기록하고 특정 거래에는 {} 비용 구문을 사용하세요.
2025-03-01 price EUR 1.0832 USD
2025-03-02 * "AWS EU 청구"
Expenses:Cloud 90.00 EUR
Liabilities:CreditCard:Corporate -90.00 EUR
2025-03-05 * "테스트용 BTC 구매"
Assets:Crypto:BTC 0.0200 BTC {3400.00 USD}
Assets:Bank:Checking -3,400.00 USD7) Fava 사용하기 (한 명령으로 보고서)
Fava는 Beancount 데이터를 생생하게 만드는 훌륭한 웹 인터페이스입니다. 이는 꼼꼼한 데이터 입력에 대한 보상입니다.
- 설치:
$ pip install fava - 실행:
$ fava ledger/main.beancount - 유용한 보기: 손익계산서, 대차대조표, 분개장 (계정/태그 필터링용), 쿼리 (사용자 정의 SQL 유사 쿼리용).
빠른 Fava 필터:
account:DeferredRevenue: 이연 수익 계정의 모든 활동을 표시합니다.tag:#invoice-001: 특정 송장과 관련된 거래에 태그를 지정하고 필터링합니다.from:2025-01-01 to:2025-12-31: 특정 회계 기간에 집중합니다.
8) 월 결산 체크리스트 (15–45분)
매월 말에 이 체크리스트를 실행하여 장부가 정확하고 최신 상태인지 확인하세요. 이 규율은 세금 신고와 투자자 실사를 쉽게 만듭니다.
- 은행/신용카드: 모든 거래를 가져오거나 수동으로 입력합니다. 명세서와 잔액을 대조합니다.
- AR/AP: 발행된 모든 송장과 받은 청구서를 입력하고 결제된 항목을 정리로 표시합니다.
- 수익: 모든 선불 계약에 대한 월별 수익 인식 항목을 입력합니다.
- 선급 비용: 모든 선급 비용의
1/12(또는 적절한 비율)을 상각합니다. - 급여: 급여 제공자 보고서에서 분개 항목을 기록합니다.
- 판매세: 해당 월의 판매세 부채를 기록합니다.
- 시드 금융 상품: 전환사채에 대한 이자를 발생시킵니다.
- 건전성 확인:
- 손익계산서의 수익이 예상 MRR/ARR과 대략 일치합니까?
- 소진율과 런웨이가 재무 계획과 일치합니까?
$ bean-check가 오류 없이 실행됩니까? Fava의 보고서가 올바르게 보입니까?
- Git에 커밋 간결하고 일관된 메시지로 (예:
close: 2025-04).
9) 메타데이터 및 문서 (감사를 쉽게)
원장은 스스로 문서화되어야 합니다. 메타데이터를 사용하고 원본 문서에 연결하여 완벽한 감사 추적을 만드세요. 미래의 당신(과 회계사)이 감사할 것입니다.
- 거래에
payee:,narration:,invoice:,customer:, 또는link:같은 메타데이터를 추가하여 명확성을 높입니다. - 원본 PDF(송장, 영수증, 은행 명세서)를
ledger/documents/폴더에 첨부하고document:메타데이터 태그로 연결합니다. - 태그(
#payroll,#saas,#vendor-aws,#invoice-001)를 사용하여 쉽게 필터링하고 분석합니다.
예시:
2025-03-10 * "연간 구독 — AcmeCo" #saas #invoice-001
payee: "AcmeCo"
invoice: "INV-001"
document: "documents/invoices/INV-001.pdf"
Assets:AR 1,200.00 USD
Liabilities:DeferredRevenue -1,200.00 USD10) 나중에 임포트 (시간이 있을 때)
처음 한두 달은 거래를 수동으로 입력하는 것으로 시작하세요. 이것이 시스템과 자신의 지출 패턴을 배우는 가장 좋은 방법입니다. 익숙해지면 간단한 Python 임포터를 작성하여 프로세스를 자동화하고 수고를 줄일 수 있습니다.
일반적인 임포터 작업 순서:
- 은행 CSV →
Assets:Bank:Checking - 신용카드 CSV →
Liabilities:CreditCard:Corporate - Stripe/PayPal 지급 보고서 → 수익 및 현금 매핑
임포터를 /ledger/importers에 보관하고 생성된 거래를 다른 코드 변경처럼 검토하세요.
11) 정책 (includes/policies.beancount에 넣기)
이 파일은 일관성을 위해 회계 결정을 문서화하는 곳입니다. 간단한 텍스트 파일이지만 규율을 유지하는 데 중요합니다.
- 발생주의 기준; SaaS 수익을 비례하여 인식합니다.
- 기능 통화는 USD입니다; 외환은 일일 환율 또는 거래 환율로 기록합니다.
- 자본화 기준 (예:
$2,500이상의 항목은Assets:Equipment가 되고, 그 외에는 즉시 비용 처리). - 여행/식대: 업무 목적이
narration필드에 문서화되어야 합니다. - 자본 기록: 통화 전용 또는 주식 상품 방법 중 어느 것을 사용하는지 명시합니다.
- SAFE/전환사채: 선택한 분류(부채 또는 자본)를 문서화합니다.
policies.beancount 예시:
; 정책: 발생주의 기준, 수익은 이연되어 월별 인식.
; 정책: USD 기능 통화. 외환 손익은 비용/가격 데이터에서 파생.
; 정책: $2,500 이상의 유형 자산은 3년 정액법 감가상각으로 자본화.
; 정책: SAFE는 가격이 정해진 라운드에서 전환될 때까지 부채로 기록.12) 빠른 문제 해결
- 분개장에서 수익이 음수로 보임: 정상입니다! 수익은 대변입니다. Fava 보고서는 양수로 표시합니다.
- 잔액이 0이 되지 않음: 불완전한 거래가 있을 가능성이 높습니다. 거래의 분개는 합이 0이어야 합니다. Fava의 분개장 보기에서 원인을 찾으세요. 임시 조치로
Equity:Suspense계정에 균형 분개를 추가하여 파일을 유효하게 만든 다음 근본 원인을 조사하고 수정하세요. - 외환 불일치: 관련 날짜에 대한
price지시문이 있는지 또는 운영 통화로 비용 기준을 지정했는지 확인하세요(예:90.00 EUR {97.49 USD}).
13) 원장 외부에서 추적할 사항 (링크 유지)
Beancount는 재무 거래를 위한 것이지만 일부는 전용 시스템에서 관리하는 것이 좋습니다. 핵심은 원장에서 연결하는 것입니다.
- 자본 테이블: Carta, Pulley 또는 스프레드시트를 사용하세요. Beancount의 파이낸싱 거래에서 서명된 마감 문서에 연결하세요.
- 이사회 동의서, 지분 계획, 409A 보고서: 안전한 장소에 보관하고 관련 지분 거래에
link:메타데이터를 추가하세요. - 세금 신고서: 최종 PDF를 보관하고 연말 결산 거래에서 연결하세요.
복사 준비 완료 스타터 파일 (올인원)
포함 구조로 확장하기 전에 단일 파일로 시작하려면 위 섹션의 파일 내용을 하나의 큰 main.beancount에 붙여넣으면 됩니다. 원장이 성장함에 따라 나중에 리팩터링할 수 있습니다.
이 프레임워크는 스타트업 재무를 위한 견고하고 확장 가능한 기반을 제공합니다. 장부를 버전 관리 아래 일반 텍스트로 유지함으로써 비교할 수 없는 투명성과 통제력을 얻고, 첫날부터 재무 규율을 갖춘 회사를 만들 수 있습니다.