본문으로 건너뛰기

"원장" 태그로 연결된 2개 게시물개의 게시물이 있습니다.

모든 태그 보기

Beancount에서 빠르고 신뢰할 수 있는 월말 마감을 위한 10가지 실용 단계

· 약 6분
Mike Thrift
Mike Thrift
Marketing Manager

원장이 플레인 텍스트로 저장된다면, 월말 마감은 빠르고 감사 가능하게 할 수 있습니다. 이 과정은 스프레드시트와 계산기에 대한 급박한 뒤죽박죽이 될 필요가 없습니다. 이 가이드는 잔액(assertion), 스마트 가져오기, 경량 검증을 중심으로 Beancount와 그 웹 인터페이스인 Fava에 맞춘 깔끔하고 반복 가능한 프로세스를 정리합니다.

아래는 고통 없는 마감을 위한 체크리스트입니다:

2025-09-02-month-end-close

  1. 명세서를 수집하고 모든 원시 거래를 가져옵니다.
  2. 거래처, 설명, 메타데이터를 정규화합니다.
  3. balance 어설션을 사용해 현금, 은행, 신용 계정을 모두 조정합니다.
  4. 이체와 계정 간 이동을 맞춥니다.
  5. 투자 가격을 업데이트하고 평가액을 검증합니다.
  6. 원장에 영수증·청구서 등 문서를 첨부하거나 연결합니다.
  7. 손익 및 변동성 검사를 위해 쿼리와 대시보드를 실행합니다.
  8. 필요에 따라 발생액과 조정 항목을 기록합니다.
  9. 자동 검사를 통해 원장을 검증합니다.
  10. 커밋하고 태그를 붙인 뒤 월을 보관합니다.

1. 기본 규칙 설정 (그리고 재사용)

일관된 마감은 안정적인 기반에서 시작됩니다. 계정표와 핵심 Beancount 옵션은 중앙에서 선언하고 거의 변경하지 않아야 합니다. operating_currencydocuments 옵션과 같은 설정은 보고서와 가져오기가 매번 예측 가능하게 동작하도록 보장합니다.

팁: 옵션 파일을 “인프라”처럼 다루세요. 옵션을 변경하면 숫자 계산 방식이 바뀔 수 있습니다. Git에 신중히 버전 관리하세요.


2. 모든 것을 가져오고, 다시는 수동 입력하지 않기

데이터 가져오기를 자동화하는 것이 장부 마감 속도를 가장 크게 높이는 방법입니다. Beancount의 강력한 가져오기 도구와 커뮤니티가 만든 임포터를 활용해 은행 피드, 신용카드 CSV/OFX 파일, 증권 데이터, 급여 보고서를 끌어옵니다.

목표는 한 번의 명령으로 균형 잡힌 포스팅을 생성하고, 검토 후 커밋만 하면 되는 것입니다. 이렇게 하면 수동 입력이라는 오류와 지연의 주요 원천을 없앨 수 있습니다.


3. 거래처와 메타데이터 사전 정규화

깨끗한 데이터는 신뢰할 수 있는 데이터입니다. 가져오기 과정에서 거래처, 내러션, 태그를 표준화하면 검색, 규칙, 보고서가 매월 정확하게 유지됩니다.

Beancount 플러그인 시스템을 이용해 파일이 로드될 때 가벼운 변환과 검증을 추가할 수 있습니다. 이는 맞춤 일관성 검사를 강제하거나, 내장 noduplicates 플러그인을 사용해 중복 거래를 문제 발생 전에 표시하는 데 완벽합니다.


4. balance 어설션으로 조정

명세서가 있는 모든 계정(당좌, 저축, 신용카드)에 대해 Beancount의 balance 지시문을 사용해 마감 잔액을 선언합니다. 이 한 줄은 수동 눈대중 검사를 정확하고 자동화된 테스트로 바꿔줍니다.

; 하루 시작 시점에 정확히 1234.56 USD 잔액을 선언
2025-09-01 balance Assets:Bank:Checking 1234.56 USD

잔액은 당일 시작에 확인되므로, 월말 명세서는 다음 달 첫째 날을 사용하면 가장 편리합니다. Beancount가 계산한 잔액이 어설션과 다르면 정확한 오류와 조사 시작 날짜를 알려줍니다. 항상 원본 거래를 먼저 수정하고, 어설션을 “강제”하지 마세요.


5. 계정 간 이체 맞추기

각 이체가 거래 양쪽에 모두 나타나는지 확인하세요. 예를 들어, 당좌 계좌에서 신용카드로 이체한 경우 두 계정 모두에 반영돼야 합니다. 일치하지 않는 이체는 흔한 조정 골칫거리입니다.

pad 지시문은 계정을 처음 설정할 때 과거 개시 잔액을 지정할 때만 사용합니다. 이는 설정 도구이며, 월말 차이를 메우기 위한 조정 수단이 아닙니다.


6. 투자 포지션과 가격 검증

순자산을 정확히 파악하려면 투자와 외화에 대한 최신 시장 가치를 반영해야 합니다. 마감일 기준으로 price 지시문을 사용해 이러한 값을 기록합니다.

2025-08-31 price VTI  290.14 USD
2025-08-31 price EUR 1.11 USD

많은 도구가 자동으로 가격을 가져올 수 있습니다. 가격을 업데이트한 뒤 대차대조표나 순자산 보고서를 다시 실행해 평가 변화를 확인하세요.


7. 영수증 및 원본 문서 연결

거래를 원본 문서와 연결해 깔끔한 감사 흔적을 유지하세요. 메인 Beancount 파일에 documents 옵션을 설정해 영수증·청구서 보관소를 지정합니다.

option "documents" "/path/to/Finance/Documents"

파일명을 날짜 기반(2025-08-13.vendor.receipt.pdf)으로 지정하면 Beancount와 Fava가 자동으로 발견하고 연결해 줍니다. 이렇게 하면 어떤 거래든 클릭 한 번으로 영수증을 확인할 수 있습니다.


8. Fava와 BQL로 월 검토

빠른 피드백 루프가 핵심입니다. Fava를 사용해 시각적으로 재무 상황을 점검하세요. 차트와 보고서는 카테고리별 지출 분석, 수입 추세 확인, 이상 징후 파악에 최적입니다.

보다 정밀한 검사는 **Beancount Query Language (BQL)**을 활용합니다. 예를 들어, 2025년 8월 전체 지출을 내림차순으로 정렬해 보여주는 쿼리는 다음과 같습니다:

SELECT
account,
ROUND(SUM(position), 2) AS total
WHERE
date >= 2025-08-01 AND date < 2025-09-01
AND account 'Expenses'
GROUP BY
account
ORDER BY
total DESC;

9. 발생액 및 조정 기록

발생주의 회계를 사용한다면, 월말 조정 항목을 명시적이고 날짜가 포함된 거래로 기록하세요. 여기에는 아직 청구되지 않은 공과금, 선불 비용의 상각, 수익 인식 등이 포함될 수 있습니다. 내러션을 간단하고 명확하게 작성해 향후 검토 시 이해하기 쉽게 하세요.


10. 검증, 태그 지정, 보관

월을 최종 확정하기 전에 구조적 무결성을 최종 점검합니다:

bean-check your-ledger.beancount

이 명령은 불균형, 미개설 계정 참조, 기타 일반 오류를 잡아냅니다. 표시된 문제를 모두 수정하세요.

모든 것이 정상이라면 Git 등 버전 관리 시스템에 커밋하고, close-2025-08 같은 명확한 메시지와 태그를 달아 저장합니다. 마지막으로 은행 명세서를 보관하고 월을 잠금 처리합니다.


적용 가능한 간단 마감 스크립트

대부분의 단계를 간단한 쉘 스크립트로 자동화할 수 있습니다. 이렇게 하면 마감이 하나의 반복 가능한 명령이 됩니다.

#!/usr/bin/env bash
set -euo pipefail

# Example: ./close.sh 2025-08
MONTH=${1:?Please provide a month in YYYY-MM format}
LEDGER= /finance/ledger.beancount

# 1. Import new transactions
echo "Importing transactions for $MONTH..."
make import MONTH="$MONTH"

# 2. Update market prices for the last day of the month
PRICE_DATE=$(date -d "$MONTH-01 +1 month -1 day" +%F)
echo "Fetching prices for $PRICE_DATE..."
make prices DATE="$PRICE_DATE"

# 3. Validate the entire ledger
echo "Running bean-check..."
bean-check "$LEDGER"

# 4. Generate a key report (e.g., expense breakdown)
echo "Generating expense report for $MONTH..."
bean-query "$LEDGER" -f txt "
SELECT account, SUM(position)
WHERE date >= '${MONTH}-01' AND date < '${MONTH}-01' + 1 month
AND account 'Expenses'
GROUP BY account ORDER BY SUM(position) DESC;
" > "reports/${MONTH}-expenses.txt"

# 5. Commit and tag the close in Git
echo "Committing and tagging the close..."
git -C /finance add .
git -C /finance commit -m "Close ${MONTH}"
git -C /finance tag "close-${MONTH}"

echo "Month ${MONTH} is closed and tagged."

왜 이렇게 작동하는가

이 프로세스가 빠르고 신뢰할 수 있는 이유는 몇 가지 핵심 원칙에 기반하기 때문입니다:

  • 어설션, 눈대중이 아니다: balance 지시문은 조정을 정확하고 자동화된 검사로 전환합니다.
  • 결정론적 입력: 자동 임포터와 정규화된 메타데이터 덕분에 원장이 재현 가능하고 일관됩니다.
  • 탐색 가능한 데이터: Fava와 BQL은 결과를 검증하고 이상치를 즉시 파고들 수 있는 강력한 도구를 제공합니다.
  • 감사 가능한 변경: 조정은 플레인 텍스트 저널 엔트리이므로 몇 년 뒤에도 쉽게 검토하고 이해할 수 있습니다.

좋은 월말 마감은 대부분 물류적인 작업입니다. Beancount와 함께라면 가져오기 → 어설션 → 가격 업데이트 → 쿼리 → 커밋이라는 짧은 스크립트형 의식으로 전환할 수 있습니다. 워크플로우를 안정적으로 유지하면 재무 상황이 복잡해져도 마감은 여전히 빠르게 진행됩니다.

S-코프 선출, Beancount 사용자를 위한 안내

· 약 6분
Mike Thrift
Mike Thrift
Marketing Manager

무엇이며, 언제 이득이 되는지, 그리고 원장을 어떻게 깔끔하게 모델링할 수 있는지 (예시 포함).

⚠️ 이 가이드는 미국 전용이며 교육 목적만을 위한 것입니다. 상황에 맞는 세무 전문가와 상담하세요.

TL;DR

  • S-코프는 IRS(내국세청)와 Form 2553을 통해 선택하는 세금 상태이며, 사업 이익이 소유주의 개인 세금 신고서로 직접 넘어갑니다. 주요 요건은 배당금이나 분배금을 받기 전에 소유자‑운영자에게 합리적인 W-2 급여를 지급해야 한다는 점입니다.
  • 마감일이 중요합니다: 기존 사업의 경우, S-코프 상태가 시작되길 원하는 과세 연도의 3번째 달 15일까지 신청해야 합니다. 예를 들어 2025년 달력 연도 선출이라면 2025년 3월 15일이 토요일이므로 실제 마감일은 다음 영업일인 2025년 3월 17일 월요일이 됩니다.
  • 왜 할까요? 가장 큰 매력은 자영업세 절감 가능성입니다. W-2 급여는 FICA 세금이 부과되지만, 분배금은 부과되지 않습니다. 다만, 급여 처리, 컴플라이언스, 일부 주에서는 추가 법인세 등 비용이 발생합니다.
  • Beancount에서는 급여와 분배금을 명확히 구분하는 것이 핵심입니다. 급여 부채를 추적하고, 2% 이상 주주에게 제공되는 건강보험에 대한 특수 회계 처리를 수행하며, 분배금을 자본 계정으로 명시적으로 기록해야 합니다.

2025-08-08-s-corp-election

S-코프 선출이란 무엇인가요?

핵심적으로, S-코프 선출은 사업체의 과세 방식을 변경해 달라는 요청을 IRS에 제출하는 것입니다. Form 2553을 제출함으로써 귀하의 법인 또는 LLC가 내부세법(IRC) Subchapter S에 따라 과세되도록 요청합니다. 이는 귀하의 사업을 “패스‑쓰루” 실체로 만들어, 소득·손실·공제·세액공제가 직접 주주의 개인 세금 신고서로 넘어가게 합니다. 이는 법인 형태 자체가 바뀌는 것이 아니라 세무 분류만 바뀌는 것입니다.

소유자‑운영자를 위한 핵심 효과

선출이 활성화되면 귀하의 역할은 두 가지로 나뉩니다: 주주직원이 동시에 됩니다.

이 구분은 매우 중요합니다. 노동에 대한 보상은 W‑2 급여 형태로 지급되어야 하며, 이는 사회보장세와 메디케어 등 표준 급여세가 적용됩니다. 남은 이익은 분배금 형태로 지급될 수 있으며, 일반적으로 자영업세가 부과되지 않습니다. IRS는 분배금을 받기 전에 합리적인 급여를 먼저 지급할 것을 강력히 요구합니다.

S-코프 상태를 선택해야 할까요?

S-코프 선출은 사업이 꾸준하고 의미 있는 이익을 창출할 때 검토할 가치가 있습니다. 일반적인 기준은 지속적인 사업 이익이 귀하의 역할에 대한 시장 수준 급여를 충분히 감당할 수 있고, 남은 금액이 새로운 행정 비용을 제하고도 분배금으로 의미 있게 활용될 수 있을 때입니다.

손익분기점은 상황마다 다르며 다음 요인에 따라 달라집니다:

  • 귀하의 “합리적인 급여”: 귀하의 기술·책임에 대해 업계에서 일반적으로 지급하는 급여 수준은 얼마인가? 이 금액은 W‑2 급여의 기준이 되며 IRS의 검토 대상입니다.
  • 주 세금 및 수수료: 주마다 규정이 다릅니다. 예를 들어 캘리포니아는 S‑코프 순이익에 1.5% 세금을 부과하고, 최소 연간 프랜차이즈 세금 $800을 부과합니다.
  • 추가 비용: 급여 서비스 이용료, 실업보험료, 복잡성 증가에 따른 회계·세무 준비 비용이 상승합니다.
  • QBI 공제(섹션 199A): S‑코프 선출은 적격 사업소득(QBI) 공제에 영향을 미칠 수 있습니다. 지급하는 W‑2 급여는 공제 한도를 충족시키는 데 도움이 되지만, 동시에 급여가 많을수록 공제 가능한 소득이 줄어듭니다.

마감일

  • 신규 사업: 선출을 원하는 과세 연도의 3번째 달 15일까지 신청해야 합니다.
  • 신규 사업: 선출을 원하는 과세 연도의 3번째 달 15일까지 신청해야 합니다.

Beancount에서의 핵심 실무

  • 급여와 분배금을 구분합니다.
  • 급여 부채(Liabilities:Payroll:*)와 급여 비용(Expenses:Payroll:*)을 별도 계정에 기록합니다.
  • 2% 이상 주주에게 제공되는 건강보험은 Expenses:Benefits:HealthInsurance에 비용으로 기록하고, 급여 시스템이 연간 보험료 전체를 W‑2 Box 1에 포함하도록 합니다.
  • 분배금은 원장(Equity:Distributions)에만 기록하고 급여 계정에는 절대 포함하지 않습니다.

S-코프 선출이란?

S-코프 선출은 사업체가 패스‑쓰루 과세 방식을 채택하도록 하는 절차이며, 이를 통해 소득이 직접 주주에게 이전됩니다. 이는 법인 형태 자체가 바뀌는 것이 아니라 세무 분류만 바뀌는 것입니다.

S-코프 선출 절차

1. Form 2553 제출

IRS에 Form 2553을 제출하여 S‑코프 선출을 신청합니다.

2. 합리적인 급여 지급

분배금을 받기 전에 합리적인 W‑2 급여를 지급해야 합니다.

3. 원장에 급여와 분배금 구분 기록

Beancount 원장에 Expenses:Payroll:WagesEquity:Distributions를 각각 사용해 구분합니다.

Beancount에서 급여와 분배금 구분하기

Beancount에서는 급여와 분배금을 명확히 구분하는 것이 중요합니다.

  • 급여는 Expenses:Payroll:Wages와 관련 부채(Liabilities:Payroll:*)에 기록합니다.
  • 분배금은 Equity:Distributions에 기록하고, 급여 계정에는 절대 포함하지 않습니다.
  • 2% 이상 주주에게 제공되는 건강보험은 Expenses:Benefits:HealthInsurance에 비용으로 기록하고, 연간 보험료 총액이 급여 시스템을 통해 W‑2 Box 1에 포함되도록 합니다.

모델링 예시

아래는 S‑코프를 운영하는 단일 주주‑직원 기업을 위한 Beancount 원장 예시입니다. 실제 금액은 상황에 맞게 조정하세요.

; 기본 원장 설정
2025-01-01 open Assets:Bank:Checking USD
2025-01-01 open Equity:ContributedCapital USD
2025-01-01 open Expenses:Payroll:Wages USD
2025-01-01 open Expenses:Payroll:EmployerTaxes:FICA USD
2025-01-01 open Expenses:Payroll:EmployerTaxes:Medicare USD
2025-01-01 open Liabilities:Payroll:Federal:FIT USD
2025-01-01 open Liabilities:Payroll:Federal:FICA USD
2025-01-01 open Liabilities:Payroll:Federal:Medicare USD
2025-01-01 open Liabilities:Payroll:State:Withholding USD
2025-01-01 open Equity:Distributions USD
2025-01-01 open Expenses:Benefits:HealthInsurance USD

; 급여 처리 예시
2025-01-31 * "Gusto" "1월 급여 — 주주‑직원"
Expenses:Payroll:Wages 8,333.33 USD
Expenses:Payroll:EmployerTaxes:FICA 516.67 USD
Expenses:Payroll:EmployerTaxes:Medicare 120.83 USD
Liabilities:Payroll:Federal:FIT -1,200.00 USD
Liabilities:Payroll:Federal:FICA -1,033.34 USD ; 직원 + 고용주
Liabilities:Payroll:Federal:Medicare -241.66 USD ; 직원 + 고용주
Liabilities:Payroll:State:Withholding -300.00 USD
Assets:Bank:Checking -6,195.83 USD

; 연방 급여세 입금 (EFTPS)
2025-02-15 * "EFTPS" "연방 급여세 입금 (FIT, FICA, Medicare)"
Liabilities:Payroll:Federal:FIT 1,200.00 USD
Liabilities:Payroll:Federal:FICA 1,033.34 USD
Liabilities:Payroll:Federal:Medicare 241.66 USD
Assets:Bank:Checking -2,475.00 USD

; 주 급여세 입금
2025-02-16 * "STATE DOR" "주 급여 원천징수"
Liabilities:Payroll:State:Withholding 300.00 USD
Assets:Bank:Checking -300.00 USD

; 2% 이상 주주를 위한 건강보험 (W‑2 포함 처리)
2025-02-01 * "BlueCross" "주주 건강보험 (W‑2 포함은 급여 시스템에서 처리)"
Expenses:Benefits:HealthInsurance 600.00 USD ; w2: "true"
Assets:Bank:Checking -600.00 USD

; 급여가 아닌 소유자 분배금
2025-03-31 * "Owner Distribution" "1분기 분배금"
Equity:Distributions 20,000.00 USD
Assets:Bank:Checking -20,000.00 USD

모델링 팁

  • 분배금은 급여 계정에 절대 포함하지 않기
  • #payroll, #distribution 같은 태그를 활용해 Fava에서 손쉽게 필터링
  • 연방·주 세금 적립을 위한 별도 은행 서브계정을 고려

S-코프 선출 절차 요약

  1. Form 2553을 작성해 IRS에 제출
  2. 합리적인 W‑2 급여를 설정하고 급여 서비스를 이용해 급여와 세금을 처리
  3. 분배금을 Equity:Distributions에 기록하고, 원장(Assets:Bank:*)에서 차감

코드 블록 설명 (한국어 주석)

; 기본 원장 설정
2025-01-01 open Assets:Bank:Checking USD
2025-01-01 open Equity:ContributedCapital USD
2025-01-01 open Expenses:Payroll:Wages USD
2025-01-01 open Expenses:Payroll:EmployerTaxes:FICA USD
2025-01-01 open Expenses:Payroll:EmployerTaxes:Medicare USD
2025-01-01 open Liabilities:Payroll:Federal:FIT USD
2025-01-01 open Liabilities:Payroll:Federal:FICA USD
2025-01-01 open Liabilities:Payroll:Federal:Medicare USD
2025-01-01 open Liabilities:Payroll:State:Withholding USD
2025-01-01 open Equity:Distributions USD
2025-01-01 open Expenses:Benefits:HealthInsurance USD

; 급여 처리 예시
2025-01-31 * "Gusto" "1월 급여 — 주주‑직원"
Expenses:Payroll:Wages 8,333.33 USD
Expenses:Payroll:EmployerTaxes:FICA 516.67 USD
Expenses:Payroll:EmployerTaxes:Medicare 120.83 USD
Liabilities:Payroll:Federal:FIT -1,200.00 USD
Liabilities:Payroll:Federal:FICA -1,033.34 USD ; 직원 + 고용주
Liabilities:Payroll:Federal:Medicare -241.66 USD ; 직원 + 고용주
Liabilities:Payroll:State:Withholding -300.00 USD
Assets:Bank:Checking -6,195.83 USD

; 연방 급여세 입금 (EFTPS)
2025-02-15 * "EFTPS" "연방 급여세 입금 (FIT, FICA, Medicare)"
Liabilities:Payroll:Federal:FIT 1,200.00 USD
Liabilities:Payroll:Federal:FICA 1,033.34 USD
Liabilities:Payroll:Federal:Medicare 241.66 USD
Assets:Bank:Checking -2,475.00 USD

; 주 급여세 입금
2025-02-16 * "STATE DOR" "주 급여 원천징수"
Liabilities:Payroll:State:Withholding 300.00 USD
Assets:Bank:Checking -300.00 USD

; 2% 이상 주주를 위한 건강보험 (W‑2 포함은 급여 시스템에서 처리)
2025-02-01 * "BlueCross" "주주 건강보험 (W‑2 포함은 급여 시스템에서 처리)"
Expenses:Benefits:HealthInsurance 600.00 USD ; w2: "true"
Assets:Bank:Checking -600.00 USD

; 소유자 분배금 (급여 아님)
2025-03-31 * "Owner Distribution" "1분기 분배금"
Equity:Distributions 20,000.00 USD
Assets:Bank:Checking -20,000.00 USD