メインコンテンツまでスキップ

「beancount」タグの記事が81件件あります

全てのタグを見る

Beancount における売掛金と買掛金の理解

· 約4分
Mike Thrift
Mike Thrift
Marketing Manager

皆さん、こんにちは!本日のブログでは、シンプルさとパワフルさで多くの人に愛されている複式簿記ツール Beancount の世界に迫ります。特に、重要な概念である 売掛金買掛金 の2つについて解説します。

これらの用語を正しく理解することは、Beancount(あるいは任意の複式簿記システム)を効果的に使う上で不可欠です。初心者の方でも安心してください。一つずつ丁寧に説明していきます。

売掛金と買掛金:基本

2023-05-30-receiveable-and-payable

会計において 「売掛金」「買掛金」 は、金銭の債権・債務を管理するための用語です。

  • 売掛金 は、他者が自分に対して支払うべき金額(受取債権)を指します。
  • 買掛金 は、自分が他者に対して支払うべき金額(支払債務)を指します。

例を見てみましょう。

  1. 売掛金(Accounts Receivable, A/R):書店を経営していて、顧客がクレジットで本を購入したとします。その本代金は顧客から受け取るべき「売掛金」になります。
  2. 買掛金(Accounts Payable, A/P):逆に、出版社から新刊を仕入れたが、まだ支払っていない場合、その未払金は「買掛金」になります。

Beancount では、これらは対応する勘定科目で管理されます。これにより、任意の時点で自分の財務状況を正確に把握できるのです。

Beancount で売掛金・買掛金を設定する

Beancount ファイルの構造は、シンプルでも複雑でも自由に設計できます。売掛金と買掛金を管理するには、資産(Assets)負債(Liabilities) の下にそれぞれ専用の勘定科目を作成すると良いでしょう。

1970-01-01 open Assets:AccountsReceivable
1970-01-01 open Liabilities:AccountsPayable

取引の記録

売掛金側(受取側)

勘定科目を作成したら、売掛金・買掛金に関わる取引を記録します。例を見てみましょう。

2023-05-29 * "Sold books to customer on credit"
Assets:AccountsReceivable 100 USD
Income:BookSales -100 USD

この取引では、顧客が 100 USD をクレジットで購入したため、売掛金 が 100 USD 増加し、同時に 売上 が -100 USD(収益の減少)として記録されます。実際に現金が入ってきていないので、バランスが保たれます。

顧客が支払ったときは次のように記録します。

2023-06-01 * "Received payment from customer"
Assets:Bank:Savings 100 USD
Assets:AccountsReceivable -100 USD

ここでは、銀行口座 に 100 USD が増え、売掛金 が同額減少します。

買掛金側(支払側)

買掛金も同様の原理ですが、符号が逆になります。

2023-05-30 * "Bought books from publisher on credit"
Liabilities:AccountsPayable 200 USD
Expenses:BookPurchases -200 USD

出版社からクレジットで本を仕入れたため、買掛金 が 200 USD 増加し、同時に 経費 が -200 USD として記録されます。

支払いが完了したら次のように記録します。

2023-06-02 * "Paid off debt to publisher"
Liabilities:AccountsPayable -200 USD
Assets:Bank:Checking 200 USD

まとめ

売掛金と買掛金は、あらゆる会計システムの核となる要素です。正確に追跡することで、財務状態を包括的に把握できます。

ここで紹介したのは出発点に過ぎません。Beancount はさらに高度な機能も備えています。本記事が概念の理解に役立ち、実務での活用の第一歩となれば幸いです。
それでは、楽しい会計ライフを!

Beancount元帳の分解: ビジネス会計のケーススタディ

· 約3分
Mike Thrift
Mike Thrift
Marketing Manager

本日のブログ記事では、ビジネス向けのBeancount元帳を分解し、このプレーンテキストの複式簿記システムの複雑さを理解できるようにします。

Beancount元帳の分解: ビジネス会計のケーススタディ

まずはコードから見ていきましょう:

2023-05-22-business-template

1970-01-01 open Assets:Bank:Mercury
1970-01-01 open Assets:Crypto

1970-01-01 open Equity:Bank:Chase

1970-01-01 open Income:Stripe
1970-01-01 open Income:Crypto:ETH

1970-01-01 open Expenses:COGS
1970-01-01 open Expenses:COGS:Contabo
1970-01-01 open Expenses:COGS:AmazonWebServices

1970-01-01 open Expenses:BusinessExpenses
1970-01-01 open Expenses:BusinessExpenses:ChatGPT

2023-05-14 * "CONTABO.COM" "Mercury Checking ••1234"
Expenses:COGS:Contabo 17.49 USD
Assets:Bank:Mercury -17.49 USD

2023-05-11 * "Amazon Web Services" "Mercury Checking ••1234"
Expenses:COGS:AmazonWebServices 14490.33 USD
Assets:Bank:Mercury -14490.33 USD

2023-03-01 * "STRIPE" "Mercury Checking ••1234"
Income:Stripe -21230.75 USD
Assets:Bank:Mercury 21230.75 USD

2023-05-18 * "customer_182734" "0x5190E84918FD67706A9DFDb337d5744dF4EE5f3f"
Assets:Crypto -19 ETH {1,856.20 USD}
Income:Crypto:ETH 19 ETH @@ 35267.8 USD

コードの理解

  1. 口座のオープン: コードは1970-01-01に一連の口座をオープンすることから始まります。これには資産口座(Assets:Bank:MercuryAssets:Crypto)、資本口座(Equity:Bank:Chase)、収益口座(Income:StripeIncome:Crypto:ETH)、および費用口座(Expenses:COGSExpenses:COGS:AmazonWebServicesExpenses:BusinessExpensesExpenses:BusinessExpenses:ChatGPT)が含まれます。

  2. 取引: 次に、2023-03-01 から 2023-05-18 の間に行われた一連の取引を記録します。

    • 2023-05-14 の取引は、Mercury Checking ••1234 から CONTABO.COM へ $17.49 の支払いを表しています。これは費用(Expenses:COGS:Contabo)として記録され、Assets:Bank:Mercury 口座からの同額の減少が対応します。

    • 同様に、2023-05-11 の取引は、同じ銀行口座から Amazon Web Services へ $14490.33 の支払いを表しています。これは Expenses:COGS:AmazonWebServices に記録されます。

    • 2023-03-01 の取引は、STRIPE からの収入が Mercury Checking ••1234 に入金され、合計 $21230.75 となります。これは収入(Income:Stripe)として記録され、銀行口座(Assets:Bank:Mercury)に加算されます。

    • 最後の取引(2023-05-18)は、顧客からの 19 ETH の暗号通貨取引を表しています。これは Assets:CryptoIncome:Crypto:ETH に記録されます。{1,856.20 USD} は取引時点の ETH の価格を示し、@@ 35267.8 USD は 19 ETH の取引総額を示しています。

すべての取引において、複式簿記の原則が維持されており、Assets = Liabilities + Equity の等式が常に成立することが保証されています。

最後に

この Beancount 元帳は、財務取引を追跡するためのシンプルでありながら堅牢なシステムを提供します。最後の取引で見られるように、Beancount は暗号通貨のような非伝統的資産も扱える柔軟性を持ち、デジタル化が進む金融環境における有用性を示しています。

この分解が、ベテランの会計士であれ、個人の財務管理を始めたばかりの初心者であれ、Beancount の構造と機能をより深く理解する手助けとなれば幸いです。次回のブログ記事では、さらに高度な Beancount の操作について掘り下げていきますので、お楽しみに。

Beancount チートシート

· 約2分
Mike Thrift
Mike Thrift
Marketing Manager

例の勘定名

Assets:US:BofA:Checking

cheatsheet-en

勘定タイプ

Assets          +
Liabilities -
Income -
Expenses +
Equity -

商品

CNY, EUR, CAD, AUD
GOOG, AAPL, RBF1005
HOME_MAYST, AIRMILES
HOURS

ディレクティブ

一般構文

YYYY-MM-DD <Directive> <Parameters...>

勘定の開設と閉鎖

2001-05-29 open Expenses:Restaurant
2001-05-29 open Assets:Checking USD,EUR ; Currency constraints

2015-04-23 close Assets:Checking

商品の宣言(オプション)

1998-07-22 commodity AAPL
name: "Apple Computer Inc."

価格

2015-04-30 price AAPL   125.15 CNY
2015-05-30 price AAPL 130.28 CNY

メモ

2013-03-20 note Assets:Checking "Called to ask about rebate"

ドキュメント

2013-03-20 document Assets:Checking "path/to/statement.pdf"

取引

2015-05-30 * "Some narration about this transaction"
Liabilities:CreditCard -101.23 CNY
Expenses:Restaurant 101.23 CNY

2015-05-30 ! "Cable Co" "Phone Bill" #tag ˆlink
id: "TW378743437" ; Meta-data
Expenses:Home:Phone 87.45 CNY
Assets:Checking ; You may leave one amount out

ポスティング

  ...    123.45 USD                             Simple
... 10 GOOG {502.12 USD} With per-unit cost
... 10 GOOG {{5021.20 USD}} With total cost
... 10 GOOG {502.12 # 9.95 USD} With both costs
... 1000.00 USD @ 1.10 CAD With per-unit price
... 10 GOOG {502.12 USD} @ 1.10 CAD With cost & price
... 10 GOOG {502.12 USD, 2014-05-12} With date
! ... 123.45 USD ... With flag

残高アサーションとパディング

; Asserts the amount for only the given currency:
2015-06-01 balance Liabilities:CreditCard -634.30 CNY

; Automatic insertion of transaction to fulfill the following assertion:
2015-06-01pad Assets:Checking Equity:Opening-Balances

イベント

2015-06-01 event "location" "New York, USA"
2015-06-30 event "address" "123 May Street"

オプション

option "title" "My Personal Ledger"

その他

pushtag #trip-to-peru
...
poptag #trip-to-peru
; Comments begin with a semi-colon

Beancountで実現するプレーンテキスト会計の魔法

· 約6分
Mike Thrift
Mike Thrift
Marketing Manager

Discover the Magic of Plain Text Accounting with Beancount

Beancountで実現するプレーンテキスト会計の魔法を発見しよう

Beancount.io バナー

はじめに

2023-04-18-introduction-to-beancount

会計がもはや困難な作業でなくなる世界へようこそ。今回は、強力で柔軟、かつ直感的なプレーンテキスト会計ツール Beancount をご紹介します。Beancount は、財務を透明でシンプルに管理できるアプローチを提供し、あなたが資金をコントロールできるよう支援します。

本ガイドでは、Beancount の基本を解説し、コアコンセプトを説明し、シンプルでありながら強力な機能をご案内します。この記事を読み終える頃には、Beancount の全体像が把握でき、財務生活を整理・分析する準備が整っているはずです。

Beancount とは?

Beancount は、Martin Blais が作成したオープンソースのプレーンテキスト会計システムです。John Wiegley の Ledger システムに触発され、個人や小規模事業の財務をプレーンテキストファイルで管理できる堅牢で信頼性の高い手法を提供します。Beancount を使えば、収入・支出・投資などを簡単に追跡できます。

なぜ Beancount なのか?

プレーンテキスト会計は、従来のスプレッドシートや専用ソフトに比べて以下のような利点があります。

  • 透明性:Beancount のファイルは人間が読める形式なので、財務データの理解や監査が容易です。
  • 柔軟性:好きなテキストエディタやバージョン管理システムを使って、ニーズに合わせて自由にカスタマイズできます。
  • ポータビリティ:デバイスを問わずアクセス可能で、システム間の移行や他者との共有も簡単です。
  • 将来性:プレーンテキストは普遍的に互換性があるため、技術が変化してもデータは残ります。

Beancount のコアコンセプト

Beancount を効果的に使うには、以下の概念を理解することが重要です。

  • 取引 (Transactions):収入、支出、口座間の振替など、財務イベントはすべて取引として記録されます。
  • 勘定科目 (Accounts):取引は資産、負債、収益、費用などの勘定科目に紐づきます。
  • 複式簿記 (Double‑entry bookkeeping):Beancount は複式簿記を強制し、すべての取引が借方と貸方でバランスします。
  • ディレクティブ (Directives):取引の定義や勘定科目のオープンなど、さまざまな財務イベントを指示するための構文です。

Beancount の始め方

以下の手順で Beancount を使い始めましょう。

  • Beancount をインストール:お使いの OS 向けインストール手順に従ってインストールします。
  • Beancount ファイルを作成:拡張子 .beancount のテキストファイルを作ります(例:my_finances.beancount)。
  • 勘定科目を定義open ディレクティブで取引に使用する勘定科目を作成します。
  • 取引を記録txn ディレクティブで財務取引を記録します。

あるいは https://beancount.io にサインアップしてください。以下はプレーンテキスト会計の例です。

例 1:基本的な取引

2023-04-01 open Assets:Checking
2023-04-01 open Expenses:Groceries

2023-04-10 txn "Grocery Store" "Buying groceries"
Assets:Checking -50.00 USD
Expenses:Groceries 50.00 USD

この例では、Assets:CheckingExpenses:Groceries の 2 つの勘定科目をオープンしています。2023 年 4 月 10 日に、食料品購入(50)を取引として記録し、Assets:Checking50)を取引として記録し、`Assets:Checking` が 50 減少(借方)し、Expenses:Groceries が $50 増加(貸方)します。

例 2:収入と支出の取引

2023-04-01 open Assets:Checking
2023-04-01 open Income:Salary
2023-04-01 open Expenses:Rent

2023-04-05 txn "Employer" "Salary payment"
Assets:Checking 2000.00 USD
Income:Salary -2000.00 USD

2023-04-06 txn "Landlord" "Monthly rent payment"
Assets:Checking -1000.00 USD
Expenses:Rent 1000.00 USD

この例では、Assets:CheckingIncome:SalaryExpenses:Rent の 3 つの勘定科目をオープンしています。4 月 5 日に給与 2,000を記録し、Assets:Checking2,000 を記録し、`Assets:Checking` が 2,000 増加(貸方)し、Income:Salary2,000減少(借方)します。46日に家賃2,000 減少(借方)します。4 月 6 日に家賃 1,000 を支払い、Assets:Checking1,000減少(借方)し、Expenses:Rent1,000 減少(借方)し、`Expenses:Rent` が 1,000 増加(貸方)します。

例 3:口座間の振替

2023-04-01 open Assets:Checking
2023-04-01 open Assets:Savings

2023-04-15 txn "Bank" "Transfer from Checking to Savings"
Assets:Checking -500.00 USD
Assets:Savings 500.00 USD

この例では、Assets:CheckingAssets:Savings の 2 つの勘定科目をオープンしています。4 月 15 日に、チェック口座から貯蓄口座へ 500を振替える取引を記録し、Assets:Checking500 を振替える取引を記録し、`Assets:Checking` が 500 減少(借方)し、Assets:Savings が $500 増加(貸方)します。

これらの例は、Beancount の複式簿記システムの基本概念を示しています。取引を正しく記録することで、財務活動の正確な記録を保ち、レポートを生成して財務状況を把握できます。

レポートの生成とデータ分析

Beancount には、バランスシートや損益計算書などの財務レポートを生成する強力なツールが同梱されています。また、Web ベースの UI である Fava を使えば、財務データを視覚化・操作できます。https://beancount.io は MIT ライセンスの下、Fava をベースに構築されています。

結論

Beancount でプレーンテキスト会計の力とシンプルさを体感してください。コアコンセプトを理解し、本ガイドの手順に従えば、個人や小規模事業の財務管理を容易かつ正確に行えるようになります。Beancount に慣れたら、さらに高度な機能やカスタマイズを探求し、独自のニーズに合わせたシステムを構築できます。

支出の追跡、将来の計画、財務習慣の洞察など、何を目指すにせよ、Beancount は柔軟性と透明性を提供し、目標達成をサポートします。その使いやすさから、Beancount は財務管理の在り方を変革し、あなたが財務の未来をコントロールできるようになるでしょう。

さあ、プレーンテキスト会計の旅に出発しましょう。煩雑なスプレッドシートや複雑なソフトウェアにさようならを告げ、Beancount の世界へようこそ。楽しい会計ライフを!

カスタムリンクとクエリでBeancount体験を向上させる

· 約4分
Mike Thrift
Mike Thrift
Marketing Manager

Beancount は、開発者やファイナンス好きに愛される二重仕訳会計システムで、シンプルさが魅力です。しかし、Fava(Beancount のウェブインターフェース)で、より細かい制御や高速なナビゲーションを求めるユーザーには、カスタムサイドバーリンクと SQL クエリがワークフローを次のレベルへ引き上げます。

このガイドでは、以下を実現する方法を紹介します。

  • Fava のサイドバーにクイックアクセスリンクを追加する
  • 高度なフィルタリングと分析のために SQL クエリを使用する
  • 月次レビューや異常検知のためにワークフローをカスタマイズする

なぜ Fava をカスタマイズするのか?

Fava はすでに美しい Ledger 表示インターフェースですが、ジャーナルが大きくなるにつれて、ショートカットやスマートクエリの必要性も高まります。

解決できる課題

  • 時間範囲を何度も手動で指定する手間
  • ネストされた勘定科目を横断する取引のフィルタリング
  • マイナス残高や異常を迅速に検出したい

✨ カスタムサイドバーリンク

まずは、シンプルなサイドバーショートカットで日々の作業を改善しましょう。これらのリンクは Fava の左サイドバーに表示され、今月の取引や先月の収入といったフィルタビューへ直接ジャンプできます。

Beancount ファイルに以下の行を追加します。

2021-01-01 custom "fava-sidebar-link" "Current Month" "/jump?time=month"
2021-01-01 custom "fava-sidebar-link" "Last Month" "/jump?time=month-1"
2021-01-01 custom "fava-sidebar-link" "Clear All" "/jump?account=&time=&filter="

動作概要

  • Current Month:現在の月にフィルタされた取引ビューを開く
  • Last Month:前月に即座にジャンプ(月末レビューに最適)
  • Clear All:フィルタをリセットし、全エントリを再表示

これらのショートカットにより、手動で時間を入力する手間が省け、Fava の操作感がより流動的かつパーソナライズされます。

🔍 カスタム SQL クエリ

さらに深い洞察が必要な場合は、Fava の SQL インターフェースが非常に強力です。以下は、特定パターンにマッチする勘定科目の マイナス残高 をすべて抽出するクエリ例です。異常取引のフラグ付けに最適です。

SELECT account, units(sum(position)), sum(position)
WHERE number(units(position)) < 0
AND account '.*:BCM:.*'
AND date >= DATE(2021,12,9)
AND date < DATE(2022,1,9)

クエリの構成要素

  • account '.*:BCM:.*':名前に :BCM: を含む勘定科目をフィルタ
  • number(units(position)) < 0:マイナス残高(例:予算超過)を検出
  • 日付条件で 1 カ月間に絞り込み

活用例

  • 重複経費や誤った仕訳のエラー検出
  • 特定ベンダーやカテゴリの監査
  • 予算策定のための実用的インサイト抽出

🛠 プロのコツ:リンクとクエリを組み合わせる

Fava ではカスタムクエリへの直接リンクは作れませんが、以下の手順で月次レビュー習慣を構築できます。

  1. 「Current Month」リンクでレビューを開始
  2. 別ペインで保存済みクエリタブを開く
  3. まずフィルタを適用し、次にクエリで詳細分析

この組み合わせにより 異常を早期に捕捉 し、Ledger のクリーンさを維持 できます。

最後に

Beancount はミニマル設計ですが、こうした小さな拡張で効率は飛躍的に向上します。予算の見直し、奇妙な残高のデバッグ、クリック数の削減など、カスタムリンクと SQL クエリは「パワー」を増し「摩擦」を減らします。

ボーナス:もし Fava のカスタムレポート を利用しているなら、個人のファイナンス習慣に合わせたダッシュボードも構築可能です。

さあ、コントロールを手に入れましょう!

まずは小さく始めてみてください。 「Current Month」リンクを追加し、次に自分だけのクエリを作成。将来の自分が感謝するはずです。

もっとこうしたヒントが欲しいですか? ニュースレターに登録するか、Beancount.io で他のレシピを探索してください。

Beancount における将来取引の予測

· 約1分
Mike Thrift
Mike Thrift
Marketing Manager

Beancount には将来の定期取引を予測するプラグインがあります。beancount.io での適用方法は?以下の内容をあなたの元帳ファイルに貼り付けてください。

; import the plugin
plugin "fava.plugins.forecast"

; add a monthly HOA fee
2022-05-30 # "HOA fee [MONTHLY]"
Expenses:Hoa 1024.00 USD
Assets:Checking -1024.00 USD

予測プラグインのスクリーンショット

2022-05-30-予測プラグイン

すると、純利益チャートに予測が表示されます。

予測プラグイン

上記のタグ [MONTHLY] は永遠に繰り返すことを意味します。さらに条件を設定したい場合は、[MONTHLY UNTIL 2022-06-01][MONTHLY REPEAT 5 TIMES][YEARLY REPEAT 5 TIMES]、または [WEEKLY SKIP 1 TIME REPEAT 5 TIMES] を試してください。

Beancountで請求書の作成と追跡

· 約7分
Mike Thrift
Mike Thrift
Marketing Manager

プレーンテキストテンプレート、繰り返し可能なワークフロー、そして「まだ支払われていないのは誰?」という単一クエリ


2022-02-12-crafting-tracking-invoices-with-beancount

請求書作成は、完了した仕事と待っている支払いの間に挟まれた面倒な作業に感じられることがあります。しかし、優れた請求書プロセスは健全なキャッシュフローの根幹です。請求書は二重の役割を果たします。クライアントに何をいつ支払うべきかを明確に伝えると同時に、会計システムに必要な確固たる事実を提供します。

専用の SaaS アプリは洗練された自動 PDF を送信できますが、月額料金がかかり、データがプロプライエタリなサイロにロックされがちです。Beancount を使った軽量なプレーンテキストアプローチは、強力な代替手段を提供します。各請求書を明確な会計エントリのセットに変換でき、バージョン管理、豊富なメタデータ、即時クエリのすべての利点を享受できます—サブスクリプションは不要です。


最低限必要な請求書(絶対に省いてはいけない項目)

帳簿に手を付ける前に、プロフェッショナルな請求書が必要です。フォーマットはシンプルでも、内容は正確でなければなりません。長年の中小企業の実務から借用したこれらの項目は交渉の余地がありません。

  • 販売者情報: 事業者名と所在地。
  • 顧客情報: 顧客名と(可能であれば)住所。
  • 請求書番号: 再利用されない一意の連番 ID。INV-045INV-044 の次です。
  • 発行日・支払期日: 請求書の発行日と支払期日を明記。
  • 明細項目: サービスまたは製品の明確な説明、数量、単価、合計金額。
  • 小計・税金・合計: 計算式を示し、顧客が容易に追跡できるように。
  • 任意の備考: 感謝の言葉、振込指示、顧客が提供した発注書番号など。

開始にあたって、これらすべての項目を含む編集可能なテンプレートを用意しました。スプレッドシート版は合計金額を自動計算します。

注: 請求書テンプレートは近日公開予定です!それまでの間は、上記項目を使って Google Docs、Word、Sheets、Excel、または任意の文書形式で独自に作成してください。


請求書を帳簿に記録する

クライアントに PDF 請求書を送付したら、Beancount に記録する必要があります。これは、収益が「発生した」時点で認識し、支払われた時点だけでなく、会計上重要なステップです。プロセスは 2 つの取引に分かれます。

1. 請求書を発行したとき:

総額を Income 勘定から Assets:AccountsReceivable に移す取引を作成します。これにより帳簿上にデジタル IOU が生成されます。

; 2025‑07‑21 Invoice #045  Web design sprint for Acme Corp.
2025-07-21 * "Acme Corp" "INV-045 Web design sprint"
Assets:AccountsReceivable 3500.00 USD ; due:2025-08-04
Income:Design:Web
invoice_id: "INV-045"
contact_email: "[email protected]"
link: "docs/invoices/2025-07-21_Acme_INV-045.pdf"

ここでは AccountsReceivable を借方、Income 勘定を貸方にしています。メタデータとして支払期日、固有の invoice_id、送付した PDF への直接 link: が含まれています。

2. クライアントが支払ったとき:

入金が銀行口座に届いたら、IOU を「決済」する第 2 の取引を記録します。AccountsReceivable からチェック口座へ金額を移動します。

2025-08-01 * "Acme Corp" "Payment INV-045"
Assets:Bank:Checking 3500.00 USD
Assets:AccountsReceivable
invoice_id: "INV-045"

Assets:AccountsReceivableINV-045 の残高はゼロになり、帳簿は完全にバランスします。

PDF を添付: link: メタデータキーは、Beancount のウェブインターフェースである Fava と組み合わせると特に威力を発揮します。Fava は取引ビューにクリック可能なリンクを直接表示し、元文書がワンクリックで参照できます。このワークフローは 2016 年の機能要望で既に提案されていました(GitHub)。


未回収請求書を一覧表示するクエリ

それでは、まだ支払われていないのは誰でしょうか?このシステムなら、メールやスプレッドシートを探し回る必要はありません。シンプルなクエリ一つで済みます。

open-invoices.sql という名前で以下を保存してください。

SELECT
meta('invoice_id') AS id,
payee,
narration,
date,
number(balance) AS outstanding
WHERE
account = "Assets:AccountsReceivable"
AND balance != 0
ORDER BY
date;

コマンドラインから実行します。

bean-query books.beancount open-invoices.sql

数秒で、未回収請求書の最新エイジングレポートが取得できます。請求書 ID、顧客、発行日、未払金額が一覧表示され、追加ソフトは不要です。


面倒な作業を自動化する

プレーンテキストの最大の魅力はスクリプト化です。このワークフローの手間のかかる部分を自動化できます。

  • テンプレート + Pandoc = PDF: 請求書テンプレートを Markdown で管理し、Python スクリプトで変数(顧客名、明細、請求書番号)を埋め込み、コマンドラインツール Pandoc で即座にプロフェッショナルな PDF に変換。
  • Git プレコミットフック: Ledger を Git 管理している場合、シンプルなプレコミットフックで保存前にチェックを実行。新しい invoice_id が一意であるか、取引の貸借がゼロになるか、link: で参照したファイルが実在するかを検証。
  • Cron ジョブ: 定期タスク(cron)で open-invoices.sql クエリを毎晩実行し、サマリーをメール送信。毎朝、誰にリマインドが必要かが一目で分かります。

現実的な注意点

Beancount は会計ツールであり、請求書 サービス ではありません。クライアントへの支払リマインダー送信やクレジットカード決済の自動処理は行いません。ワークフローは次の通りです。好きな方法(上記テンプレートなど)で請求書を作成・送付し、帳簿にエントリを記録します。

フリーランサーや小規模事業者にとって、この手作業は、完全に所有・管理できる、監査可能で無料の会計システムを手に入れるための小さな代価です(beancount.io)。


次のステップ

請求書管理を自分の手に取り戻す準備はできましたか?以下の手順で始めましょう。

  1. テンプレートをダウンロードし、次の実際の請求書を作成。連番の請求書番号を必ず使用。
  2. 送付した PDF を docs/invoices/ などの専用フォルダに保存し、Beancount 取引の link: メタデータで参照。
  3. open-invoices.sql クエリを保存し、週次の財務レビュー時に実行する習慣をつける。

プレーンテキスト会計は、洗練さやコントロールを犠牲にするものではありません。データベースが grep 可能になるだけです。シンプルなテンプレートと上記スニペットで、支払いをより早く受け取り、帳簿を完璧に保ちましょう。

Beancount の調整仕訳:月末のチューニング

· 約6分
Mike Thrift
Mike Thrift
Marketing Manager

会計は最後の売上が銀行に入金された時点で完了するわけではありません。事業の健全性を正確に把握するためには、月末のチューニングが必要です。各期間の締め時に adjusting entries(調整仕訳)を行い、収益と費用を適切な期間に配置し、貸借対照表の正確性を保ちます。

プレーンテキストの Beancount 元帳では、これらの重要な仕訳は透明性が高く、バージョン管理され、監査もしやすいため、面倒な作業が明確で繰り返し可能なプロセスへと変わります。

2022-01-25-Beancount-調整仕訳-月末チューニング


調整仕訳が重要な理由

これらの調整は健全な会計の基礎です。財務諸表の正確性と信頼性を確保します。

  • Accrual Accuracy(発生主義の正確性): 調整仕訳は発生主義会計のエンジンです。現金の受払時期に関わらず、収益や費用を実際に発生した期間へ移動させます。これは、現代会計の基礎を成す revenue-recognition(収益認識)matching principles(費用配分原則) を満たします(AccountingCoach.com)。

  • Reliable KPIs(信頼できるKPI): 主要業績評価指標は、その背後にあるデータの質に依存します。粗利益、純利益、キャッシュフロー予測などの指標は、繰延、発生、見積もりが正しく計上されて初めて正確な情報を提供します(Corporate Finance Institute)。

  • Clean Audit Trail(クリーンな監査証跡): 明示的な月末調整は、財務上の判断根拠を明確に記録します。これにより、監査人(および将来の自分)が何が変更され、なぜ変更されたかを容易に追跡でき、数値への信頼が高まります(Accountingverse)。


6つの一般的なカテゴリ(Beancount スニペット付き)

ここでは、最も一般的な6つの調整仕訳タイプと、Beancount 元帳での記録例を示します。adj:"accrual" などのメタデータを使うことで、後から検索・分析しやすくしています。

1. 発生収益

これは、すでに獲得したがまだ請求も入金もされていない収益に対する仕訳です。

2025-07-31 * "Consulting—July hours"
Assets:AccountsReceivable 12000.00 USD
Income:Consulting
; adj:"accrual" period:"Jul-25"

2. 発生費用

これは、発生したがまだ支払われていない費用(例:来月届く光熱費請求書)に対する仕訳です。

2025-07-31 * "Attorney—July retainer"
Expenses:Legal 2500.00 USD
Liabilities:AccruedPayables
; adj:"accrual"

3. 繰延(未実現)収益

顧客から前払いで受領した場合に適用します。時間経過に伴い、収益の一部を実現時に認識します。

2025-07-31 * "Annual SaaS prepayment (recognize 1/12)"
Liabilities:UnearnedRevenue 833.33 USD
Income:SaaS
; adj:"deferral"

4. 前払(繰延)費用

費用を前払いで支払った場合(例:年間保険料)、毎月その一部を費用として計上します。

2025-07-31 * "Insurance—1 mo. expense from prepaid"
Expenses:Insurance 400.00 USD
Assets:PrepaidInsurance
; adj:"deferral"

5. 減価償却・償却

この仕訳は、長期資産(例:コンピュータや車両)の費用を耐用年数にわたって配分します。

2025-07-31 * "Mac Studio depreciation"
Expenses:Depreciation 1250.00 USD
Assets:Computers:AccumDepr
; asset_id:"MAC-03" adj:"estimate"

6. 貸倒引当金

回収できないと見込む売掛金の見積もりで、貸倒費用として計上します。

2025-07-31 * "Bad-debt provision (2% of A/R)"
Expenses:BadDebt 700.00 USD
Assets:AllowanceForBadDebt
; basis:"A/R" rate:0.02 adj:"estimate"

繰り返し可能なワークフロー

月末締めを効率的かつミスなく行うために、一定のワークフローを採用しましょう。

  • 別ファイルを使用する。 期間ごとのすべての調整仕訳を adjustments-2025-07.bean のように一つのファイルにまとめます。メイン元帳では include ディレクティブで最後にインポートし、最終レポート生成直前に調整が適用されるようにします。

  • メタデータを標準化する。 常に adj:"accrual|deferral|estimate"period:"Jul-25" のように一貫したキーと値を使用します。これにより、特定の調整タイプの検索やレビューが容易になります。

  • 事前チェックを実行する。 変更を Git にコミットする前に、調整ファイルに対して bean-check を実行し、タイプミスや不均衡な仕訳を検出します。

  • ワンラインのサニティチェックを行う。 以下のクエリで期間中のすべての調整が合計してバランスが取れていることを確認し、エラーが導入されていないことを保証します。

    bean-query main.bean "SELECT account, SUM(number) WHERE meta('adj') AND meta('period') = 'Jul-25' GROUP BY account"

クイックトラブルシューティングのヒント 🤔

  • Liabilities:UnearnedRevenue の残高が増えていませんか? 契約のマイルストーンを確認してください。提供している作業に対して収益認識が遅すぎる可能性があります。

  • Assets:PrepaidInsurance の残高がマイナスですか? 資産のスケジュールよりも早く費用計上している可能性があります。償却スケジュールを再確認してください。

  • 発生後に売掛金回転日数(DSO)が悪化していますか? 発生収益が根本的な回収問題を隠している可能性があります。このKPIを売掛金のエイジングレポートと組み合わせ、遅延顧客を早期に特定し、キャッシュフロー問題になる前に対処しましょう。


終わりに

調整仕訳は面倒に感じることもありますが、"前" と "後" の損益計算書を比較すると、その価値が一目瞭然です。差異はしばしば重要です。Beancount を使えば、これらの調整は小さく検索可能なパッチとなり、コードと同様に自動化・レビューが可能です。

月末の習慣を築けば、数値はエンジニアリングと同様に正確さを保ちます。

バランス調整、楽しんで!

Beancount.ioで個人財務管理を革新する

· 約4分
Mike Thrift
Mike Thrift
Marketing Manager

Beancounter(ビーンカウント利用者)は従来、コマンドラインツールやプライベートネットワーク上のセルフホストサーバーを使用し、コンピュータやモバイル上の汎用テキストエディタで操作していました。Beancount.io は、オープンソースの Android および iOS モバイルアプリと安全なクラウドを提供することで、元帳へのアクセスを指紋認証で数回タップするだけに簡素化します。

Beancount はテキストファイルで複式簿記を実現できるコンピュータ言語です。ファイルに金融取引を定義すれば、さまざまなレポートが自動生成されます。この言語の設計者である Martin Blais は、コマンドライン簿記には「高速、ポータブル、オープン、カスタマイズ可能」という多くの利点があると主張しています。

私たちもその主張に強く同意し、Beancount 言語がもたらすエンパワーメントを共有しています。そして、さらに多くの人にこの技術を届けたいと考えました。つまり、使いやすさを向上させ、より広い層にアクセスしやすくしなければなりません。

2022-01-08-いつでもどこでもBeancountクラウド元帳に即時アクセス

すべての人がコマンドライン好きというわけではありません。だからこそ私たちは Beancount.io を作りました――誰にでも使える個人財務管理ツールです。仕組みは次のとおりです。

重い作業を行う場合、Beancounter は引き続きコンピュータで https://beancount.io にアクセスしたり、Dropbox と同期したりして元帳を編集・閲覧できます。これによりコマンドラインツールの柔軟性を保ちつつ、クラウドベースソリューションのデバイス間アクセスも失われません。

日常的な軽作業、たとえば即座にエントリを追加したいときは、モバイルアプリで安全なクラウドに接続すれば完了です。

Mike Thrift(本製品のバックエンドエンジニア)は次のように語ります。

毎日、ノートパソコンを開いて bean ファイルに記録を入力するリマインダーを設定していました。Beancount.io を使うようになってからは、外出先で店頭で購入したときでも、必要なときにいつでも元帳を簡単に修正できるようになりました。

Facebook のソフトウェアエンジニア、Zhi Li は次のように語ります。

すべての Beancount ファイルを Beancount.io に移行しましたが、日常的な利用で完璧に動作しています。自動データバックアップなどの Pro 機能に課金していますが、サービス向上のためにさらにできることがあると感じています。

今すぐ https://beancount.io/sign-up/ でサインアップするか、iOS または Android アプリ をダウンロードしてください。登録プロセスは必要最小限の情報だけを収集するよう簡素化しており、サービス開始後すぐにエントリを追加できる空の元帳が自動で用意されます。

FAQ

Beancount.io は私の元帳データを第三者に販売しますか?

  • いいえ。データの安全性とプライバシーを最優先しており、元帳データを販売することは決してありません。

私のデータは安全ですか?

  • はい。メールと元帳は AES256 で、パスワードは BCrypt で、ネットワーク通信は SSL で保護しています。

私の元帳データはエンドツーエンドで暗号化されていますか?

  • いいえ。技術的制約により、プロダクションサーバーで元帳ファイルをインデックス化する際にメモリ上に復号する必要があります。そのため、チームメンバーからの直接アクセスは制限しています。Intel SGX や他のセキュリティボールトを利用できないのはコストが高いためです。

今後数年間、信頼できるサービスですか?

  • はい。Beancount.io は 2019 年 7 月 4 日にローンチしてから 2 年以上、安全かつ信頼性の高いサービスを提供し続けています。今後も継続して提供する理由は十分にあります。

新機能のリクエストやプロジェクトへのスポンサーは可能ですか?

QuickBooksからBeancountへの移行ガイド

· 約40分
Mike Thrift
Mike Thrift
Marketing Manager

ステージ1:QuickBooksからのデータエクスポート

5年分のデータを移行するには、まずQuickBooksの全レコードを利用可能な形式で取得することから始まります。QuickBooks DesktopとQuickBooks Onlineでは、エクスポートオプションが異なります。

2021-12-01-from-quickbooks-to-plain-text-a-migration-playbook

1.1 QuickBooks Desktopのエクスポートオプション

IIF (Intuit Interchange Format): QuickBooks Desktopでは、リスト(勘定科目表、顧客、ベンダーなど)を.IIFテキストファイルにエクスポートできます。QuickBooks Desktopで、[ファイル] → [ユーティリティ] → [エクスポート] → [IIFファイルへのリスト] に進み、必要なリスト(例:勘定科目表、顧客、ベンダー)を選択します。これにより、勘定科目名、タイプ、リストデータを含むテキストファイルが生成されます。IIFはプロプライエタリな形式ですが、プレーンテキストであり、比較的簡単に解析できます。これを使用して、Beancountでの参照用に勘定科目表と連絡先リストを取得します。

CSV経由の総勘定元帳/一般仕訳帳: 取引データについては、QuickBooks Desktopにはワンクリックでの完全なエクスポート機能はありませんが、レポートを使用できます。推奨される方法は、希望する期間の一般仕訳帳(すべての取引)をエクスポートすることです。QuickBooks Desktopで、[レポート] → [会計士と税務] → [一般仕訳帳] を開き、日付を最も古い取引から今日までに設定し、[エクスポート] → [Excel] をクリックします。レポートのヘッダー/フッターや空の列を削除した後、結果をCSVとして保存します。数値データがクリーンであることを確認してください:セントを含める(例:3ではなく3.00)、余分な引用符がない、通貨記号や二重の負号がCSVにないようにします。CSVには、日付、取引番号、名前、勘定科目、メモ、借方、貸方、残高(またはレポート形式によっては単一の金額列)などの列が必要です。

ヒント: QuickBooks Desktop 2015以降では、検索ダイアログからも取引をエクスポートできます。[編集] → [検索] → [詳細] を使用し、日付範囲を5年間に設定してから、結果をCSVにエクスポートします。警告: 一部のバージョンではエクスポートが32,768行に制限されています。データ量が非常に多い場合は、切り捨てを避けるために年ごと(またはより小さなチャンクで)エクスポートし、後で結合してください。重複を避けるために、日付範囲が重ならないようにしてください。

その他のフォーマット (QBO/QFX/QIF): QuickBooks Desktopは.QBO (Web Connect) または.QFX/.OFXファイルを介して銀行取引をインポートできますが、QuickBooksからエクスポートする場合には一般的ではありません。銀行取引のみを抽出することが目的であれば、銀行からQBO/OFX形式で既に入手している可能性があります。ただし、完全な元帳のエクスポートのためには、IIFとCSVを使用してください。QuickBooks Desktopは、サードパーティ製ツールなしでは直接QIF (Quicken Interchange Format) にエクスポートできません。もしQIFを取得する方法を見つけた場合、一部の会計ツール(古いLedger 2.xなど)はQIFを読み取れましたが、我々のプロセスではCSVを扱う方が良いでしょう。

1.2 QuickBooks Onlineのエクスポートオプション

Excel/CSVへの統合エクスポート: QuickBooks Online (QBO) にはデータのエクスポートツールが用意されています。[設定] ⚙ → [ツール] → [データのエクスポート] に進みます。エクスポートダイアログで、[レポート] タブを使用してデータ(例:総勘定元帳または取引リスト)を選択し、[リスト] タブでリスト(勘定科目表など)を選択し、[すべての日付] を選んでExcelにエクスポートします。QuickBooks Onlineは、選択されたレポートとリスト(例:損益計算書、貸借対照表、総勘定元帳、顧客、ベンダー、勘定科目表など)の複数のExcelファイルを含むZIPをダウンロードします。その後、これらのExcelファイルをCSVに変換して処理できます。

取引詳細レポート: QBOのデフォルトのエクスポートに単一の総勘定元帳ファイルが含まれていない場合、手動で詳細レポートを実行できます:

  1. [レポート] に移動し、[勘定科目別取引詳細](または一部のQBOバージョンでは**[総勘定元帳]**)を検索します。
  2. [レポート期間] を5年間の全範囲に設定します。
  3. レポートオプションで、[グループ化] = [なし] に設定します(小計なしで個々の取引をリストするため)。
  4. 少なくとも次の列を含むように列をカスタマイズします:日付、取引タイプ、番号、名前(受取人/顧客)、メモ/説明、勘定科目、借方貸方(または単一の金額列)、および残高。クラスや場所を使用していた場合はそれらも含めます。
  5. レポートを実行し、[Excelにエクスポート] します。

これにより、すべての取引の詳細な元帳が生成されます。これをCSVとして保存します。各行は取引の1つの明細(仕訳)を表します。後で変換のために、取引ごとに行をグループ化する必要があります。

勘定科目表およびその他のリスト: QuickBooks Onlineでは、[会計] → [勘定科目表] → [一括処理] → [Excelにエクスポート] を介して勘定科目表をエクスポートできます。これを行って勘定科目名とタイプを取得します。同様に、メタデータ用に名前を転送したい場合は、顧客、ベンダーなどもエクスポートします。

QuickBooks Online API (オプション): プログラムによるアプローチとして、IntuitはQBOデータ用のREST APIを提供しています。上級ユーザーは、QuickBooks Onlineアプリケーションを作成し(開発者アカウントが必要)、APIを使用してデータをJSONで取得できます。たとえば、Accountエンドポイントで勘定科目表を、JournalEntryまたはGeneralLedgerレポートエンドポイントで取引を照会できます。python-quickbooksのようなPython SDKがAPIをラップしています。ただし、APIの使用にはOAuth認証が必要であり、自動化を好む場合を除き、一度きりの移行には過剰です。ほとんどの場合、CSV/Excelへの手動エクスポートの方が簡単でエラーが発生しにくいです。


ステージ2:データの変換とクリーンアップ

QuickBooksのデータをCSV(および/またはIIF)で取得したら、次のステップはそれをBeancountのプレーンテキスト元帳形式に変換することです。これには、エクスポートの解析、QuickBooksの勘定科目をBeancountの勘定科目表にマッピングし、取引をBeancountの構文にフォーマットすることが含まれます。

2.1 PythonによるQuickBooksエクスポートの解析

Pythonを使用することで、変換の正確性と再現性が保証されます。ここでは、2つの主要なタスクのためのスクリプトを概説します:勘定科目表のインポート取引の変換です。

勘定科目のインポートとマッピング: 取引を追加する前に、Beancountで勘定科目を設定することが重要です。QuickBooksの勘定科目にはタイプ(銀行、売掛金、費用など)があり、これらをBeancountの階層(資産、負債、収益、費用など)にマッピングします。たとえば、次のようなマッピングを使用できます:

# QuickBooksの勘定タイプからBeancountのルートカテゴリへのマッピング
AccountTypeMap = {
'BANK': 'Assets', # 資産
'CCARD': 'Liabilities', # 負債
'AR': 'Assets', # 売掛金を資産として
'AP': 'Liabilities', # 買掛金を負債として
'FIXASSET': 'Assets',
'OASSET': 'Assets', # その他資産
'OCASSET': 'Assets', # その他流動資産
'LTLIAB': 'Liabilities',# 長期負債
'OCLIAB': 'Liabilities',# その他流動負債
'EQUITY': 'Equity', # 純資産
'INC': 'Income', # 収益
'EXP': 'Expenses', # 費用
'EXINC': 'Income', # その他収益
'EXEXP': 'Expenses', # その他費用
}

QuickBooks DesktopのIIFエクスポートまたはQBOの勘定科目リストCSVを使用して、各勘定科目の名前とタイプを取得します。次に:

  • Beancount勘定科目名の作成: QuickBooksでは、サブ勘定を示すためにコロン(:)を使用することがあります(例:"流動資産:当座預金")。Beancountも階層に同じコロン表記を使用します。多くの場合、名前を直接再利用できます。QuickBooksの勘定科目名がカテゴリで始まらない場合は、マッピングされたカテゴリを先頭に追加します。たとえば、BANKタイプのQuickBooks勘定科目 "当座預金" は、Beancountでは Assets:当座預金 になります。EXP(費用)勘定の "食事代" は Expenses:食事代 になります。

  • 有効な名前の確保: Beancountを混乱させる可能性のある文字を削除または置換します。QuickBooksでは &/ などの文字が名前に使用できます。特殊文字を削除または置換する(例:&and に置き換える、スラッシュやスペースを削除する)のが賢明です。また、変換後、すべての勘定科目名が一意であることを確認してください。QuickBooksでは、異なる親の下で同じサブ勘定名が許可されている場合がありますが、Beancountでは完全な名前(親を含む)が一意でなければなりません。必要に応じて、名前を変更するか、区別するための修飾子を追加します。

  • 勘定開設の生成: Beancountでは、使用される各勘定は open ディレクティブで開設する必要があります。最初の取引より前の日付を選択できます(例:2019-2023のデータを移行する場合、すべての開設に 2018-12-31 またはそれ以前の日付を使用)。スクリプトは次のような行を書き出します: 2018-12-31 open Assets:Checking USD 2018-12-31 open Expenses:Meals USD 各勘定について(USDが主要通貨であると仮定)。各勘定に適切な通貨を使用してください(下記の多通貨に関する注意参照)。

取引の変換: 主な課題は、QuickBooksの取引エクスポート(CSV)をBeancountの仕訳に変換することです。各QuickBooks取引(請求書、支払手形、小切手、仕訳など)には複数の明細(行)があり、これらを単一のBeancount取引にグループ化する必要があります。

PythonのCSVリーダーを使用して、エクスポートされた行を反復処理し、明細を蓄積します:

import csv
from collections import defaultdict

# QuickBooksの一般仕訳帳CSVからすべての行を読み込む
rows = []
with open('quickbooks_exported_journal.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for line in reader:
rows.append(line)

# 取引ごとに行をグループ化する('取引番号'が取引を識別すると仮定)
transactions = defaultdict(list)
for line in rows:
trans_id = line.get('Trans #') or line.get('Transaction ID') or line.get('Num')
transactions[trans_id].append(line)

これで transactions は、各キーが取引ID/番号で、値がその取引の明細リストである辞書になります。次に、各グループをBeancountに変換します:

def format_date(qb_date):
# QuickBooksの日付は "12/31/2019" のような形式
m, d, y = qb_date.split('/')
return f"{y}-{int(m):02d}-{int(d):02d}"

output_lines = []
for trans_id, splits in transactions.items():
# 必要に応じて明細を行の順序でソート(通常は順序通りに出力される)
splits = sorted(splits, key=lambda x: x.get('Line') or 0)
first = splits[0]
date = format_date(first['Date'])
payee = first.get('Name', "").strip()
memo = first.get('Memo', "").strip()
# 取引ヘッダー
output_lines.append(f"{date} * \"{payee}\" \"{memo}\"")
if first.get('Num'): # 参照番号があれば含める
output_lines.append(f" number: \"{first['Num']}\"")
# 各明細/仕訳をループ処理
for split in splits:
acct_name = split['Account'].strip()
# QuickBooks勘定科目名をBeancount勘定にマッピング(上記のマッピングを使用)
beancount_acct = account_map.get(acct_name, acct_name)
# 符号付きの金額を決定
amount = split.get('Amount') or ""
debit = split.get('Debit') or ""
credit = split.get('Credit') or ""
if amount:
# 一部のエクスポートは単一の金額列を持つ(貸方は負)
amt_str = amount
else:
# 借方/貸方が別の列の場合
amt_str = debit if debit else f"-{credit}"
# 安全のために数値のカンマを削除
amt_str = amt_str.replace(",", "")
# 通貨を追加
currency = split.get('Currency') or "USD"
amt_str = f"{amt_str} {currency}"
# 明細のメモ/説明
line_memo = split.get('Memo', "").strip()
comment = f" ; {line_memo}" if line_memo else ""
output_lines.append(f" {beancount_acct:<40} {amt_str}{comment}")
# 取引の終わり – 空行
output_lines.append("")

このスクリプトのロジックは次のことを行います:

  • 日付をBeancount用のYYYY-MM-DD形式にフォーマットします。
  • 受取人(名前)とメモを取引の説明に使用します。例: 2020-05-01 * "ACME Corp" "請求書の支払い" (受取人がない場合、QuickBooksの取引タイプを使用するか、受取人を空の引用符で囲むことができます)。
  • 参照番号(小切手番号、請求書番号など)がある場合は、numberメタデータを追加します。
  • 各明細行を反復処理します:
    • account_map辞書を使用して、QuickBooksの勘定科目名をBeancountの勘定にマッピングします(勘定科目表のステップで作成)。
    • 金額を決定します。エクスポートによっては、単一の金額列(正/負の値)または別々の借方と貸方列がある場合があります。上記のコードは両方のケースを処理します。貸方がBeancountの負の金額として表されることを確認します(Beancountでは、仕訳ごとに1つの符号付き数値が使用されるため)。
    • 通貨を付加します(別の通貨列がない限りUSDと仮定)。
    • 勘定、金額、および行メモのコメントを含むBeancountの仕訳行を書き込みます。例: Assets:Checking 500.00 USD ; 預金 Income:Sales -500.00 USD ; 預金 これは$500の預金(収益から当座預金へ)を反映しています。
  • すべての明細をリストした後、空行が取引を区切ります。

多通貨の処理: QuickBooksデータに複数の通貨が含まれる場合、各仕訳に通貨コードを含めます(上記参照)。外貨建ての勘定がその通貨で開設されていることを確認してください。たとえば、EURの銀行口座がある場合、open Assets:Bank:Checking EUR を生成し、その勘定での取引はEURを使用します。Beancountは多通貨元帳をサポートし、暗黙的な換算を追跡しますが、レポートで基本通貨への換算が必要な場合は、為替レートの価格エントリを追加する必要があるかもしれません。また、Beancountファイルの先頭で主要な運用通貨を宣言することをお勧めします(例:option "operating_currency" "USD")。

変換の実行: Pythonスクリプトを(例えばqb_to_beancount.pyとして)保存し、エクスポートされたファイルに対して実行します。すべての勘定と取引を含む.beancountファイルが生成されるはずです。

2.2 特殊ケースの処理とデータクリーンアップ

変換中、これらの一般的な問題とその対処法に注意してください:

  • 互換性のない勘定科目名: QuickBooksには、Beancountの階層的な名前と競合する勘定科目名がある場合があります。たとえば、QuickBooksには2つの異なる親勘定があり、それぞれに "保険" という名前のサブ勘定があるかもしれません。Beancountでは、Expenses:Insurance は一意でなければなりません。これを解決するには、エクスポート前に一方の名前を変更する(例:「保険-車両」vs「保険-健康」)か、スクリプトで一意のBeancount勘定にマッピングします。一貫した命名規則(特殊文字なし、階層の使用)は頭痛の種を減らします。必要であれば、再マッピングファイルアプローチを使用します:古い名前→新しいBeancount名のCSVまたは辞書を保持し、変換中に適用します(我々のサンプルコードはaccount_mapを使用し、ファイルから上書きを読み込むことができます)。

  • 日付とフォーマット: すべての日付が一貫してフォーマットされていることを確認してください。上記のスクリプトはM/D/YをISO形式に正規化します。また、5年間の期間が年度末をまたぐ場合、会計年度と暦年の問題に注意してください。Beancountは会計年度の境界を気にしませんが、後で便宜上、ファイルを年ごとに分割したい場合があります。

  • 数値の精度: QuickBooksは通貨をセント単位で処理するため、セント単位での作業は通常問題ありません。理想的には、すべての金額がCSVで小数点以下2桁を持つべきです。もし金額が整数に変換された(小数点なし)場合や、カンマ/括弧(負の場合)がある場合は、スクリプトでクリーンアップします(カンマを削除し、(100.00)-100.00 に変換するなど)。指示に従って正しく行われたCSVエクスポートは、これらのフォーマットの問題を既に回避しているはずです。

  • 負の金額と符号: QuickBooksのレポートでは、負の値を -100.00(100.00)、または特定のExcelエクスポートでは --100.00 として表示することがあります。クリーンアップステップでこれを処理する必要があります。各取引の借方と貸方がゼロになるようにバランスが取れていることを確認してください。Beancountはこれを強制します(バランスが取れていない場合、インポート時にエラーをスローします)。

  • 重複した取引: 取引をバッチで(例:年ごとや勘定ごと)エクスポートする必要があった場合、重複しないようにマージするように注意してください。ある年の最初の取引が前のバッチの最後の取引でもないことを確認するなど。境界で誤っていくつかの取引を重複させてしまうのは簡単です。重複が疑われる場合は、最終的なBeancountの仕訳を日付でソートし、同一のエントリを探すか、Beancountの一意の取引タグを使用して検出できます。戦略の1つは、QuickBooksの取引番号をメタデータとして含め(例:取引番号や請求書番号をtxnタグやquickbooks_idメタデータとして使用)、それらのIDの重複がないことを確認することです。

  • 不均衡な明細 / 未決算勘定: QuickBooksには、QuickBooksが自動的に「期首残高純資産」または「利益剰余金」勘定に調整した不均衡を持つ取引のような奇妙なケースがあるかもしれません。たとえば、期首勘定残高を設定する際、QuickBooksはしばしば差額を純資産勘定に記録します。これらはエクスポートされた取引に現れます。Beancountは明示的なバランスを要求します。QuickBooksを反映させるために、期首残高用の純資産勘定(一般的にEquity:Opening-Balances)を導入する必要があるかもしれません。元帳の初日にすべての勘定の期首残高を設定する期首残高仕訳を持つのが良い習慣です(ステージ5参照)。

  • 多通貨の特殊ケース: 多通貨を使用する場合、QuickBooksのエクスポートはすべての金額を現地通貨またはネイティブ通貨でリストするかもしれません。理想的には、各勘定のネイティブ通貨でデータを取得します(QuickBooks Onlineのレポートは通常これを行います)。Beancountでは、各仕訳は通貨を持ちます。QuickBooksが為替レートまたは現地通貨への換算を提供した場合、それらを無視してBeancountの価格エントリに依存することができます。QuickBooksが為替レートをエクスポートしなかった場合、評価を一致させるために主要な日付に手動で価格レコードを追加したい場合があります(例:Beancountのpriceディレクティブを使用)。ただし、元帳の基本的な整合性のためには、取引が元の通貨でバランスが取れていれば十分です。未実現損益は、同じレポートが必要でない限り、明示的に記録する必要はありません。

  • 売掛金 / 買掛金: QuickBooksは、プレーンテキスト元帳には完全には引き継がれない請求書や支払手形の詳細(支払期日、支払状況など)を追跡します。ARおよびAP取引(ARを増加させる請求書、ARを減少させる支払いなど)は取得できますが、請求書ドキュメントや請求書ごとの顧客残高は取得できません。その結果、移行後、BeancountのARおよびAP勘定の残高が、QuickBooksの未処理の顧客/ベンダー残高と一致することを確認する必要があります。請求書を追跡する必要がある場合は、Beancountのメタデータを使用できます(例:invoiceタグやリンクを含める)。QuickBooksの請求書番号はNumまたはMemoフィールドに入っているはずです。我々のスクリプトはNumを取引メタデータのnumber: "..."として保持します。

  • 非アクティブまたは閉鎖された勘定: IIFエクスポートには非アクティブな勘定が含まれる場合があります(含めるように選択した場合)。これらをインポートしても問題ありません(取引がなく、本当に非アクティブであれば残高はゼロになります)。最後の取引日の後にcloseディレクティブを使用してBeancountで閉鎖済みとしてマークできます。これにより、元帳が整理されます。例: 2023-12-31 close Expenses:OldAccount ; 移行後に閉鎖 これはオプションであり、主に整理のためです。

上記のようにデータを慎重にクリーンアップし、マッピングすることで、QuickBooksのデータを構造的に反映したBeancount元帳ファイルができます。次のステップは、それがQuickBooksを数値的にも反映していることを確認することです。


ステージ3:データの検証と照合

検証は、会計データ移行における重要な段階です。Beancount元帳がQuickBooksの帳簿とセント単位で一致することを確認する必要があります。いくつかの戦略とツールを使用できます:

3.1 試算表の照合

試算表レポートは、すべての勘定の期末残高(借方と貸方、または正/負で示される)をリストし、合計はゼロになるはずです。両方のシステムで同じ日付の試算表を実行することは、全体的な精度を最も迅速に確認する方法です。

  • QuickBooksで: 最終年の最終日(例:2023年12月31日)の試算表レポートを実行します。このレポートは各勘定の残高を示します。それをエクスポートするか、主要な数値をメモします。

  • Beancountで: Beancountのレポートを使用して試算表を生成します。簡単な方法はコマンドライン経由です:

    bean-report migrated.beancount balances

    balancesレポートは、すべての勘定とその残高をリストする試算表です。Fava(BeancountのWebインターフェース)でファイルを開き、残高または貸借対照表セクションを見ることもできます。Beancountの各勘定残高は、QuickBooksの試算表と一致する必要があります。たとえば、QuickBooksが*売掛金 = 5,000を示している場合、BeancountAssets:AccountsReceivable勘定は5,000*を示している場合、Beancountの`Assets:AccountsReceivable`勘定は5,000(借方)になるはずです。*売上収益 = 200,000の場合、BeancountIncome:Sales勘定は200,000*の場合、Beancountの`Income:Sales`勘定は200,000(貸方、クレジットを負として表示する試算表を使用している場合は-200,000と表示される可能性があります)を示すはずです。

食い違いがある場合は、特定します:

  • 勘定全体が欠落しているか、余分にあるかを確認します(勘定を忘れたか、移行期間前に既に閉鎖されていたものを含めてしまったか?)。
  • 残高が間違っている場合は、さらに詳しく調べます:QuickBooksでは、その勘定のクイックレポートまたは元帳詳細を実行でき、それをBeancountのその勘定のレジスタ(bean-report migrated.beancount register -a AccountName)と比較できます。差異は、取引の欠落や重複から生じることがあります。

また、Beancountの試算表ですべての勘定の合計がゼロであることを確認します(合計がゼロまたは非常にゼロに近い値として出力されるはずです)。Beancountは複式簿記を強制するため、ゼロでない不均衡がある場合、資産から負債と純資産を引いたものがゼロにならなかったことを意味し、問題を示しています(QuickBooksも通常はこれを許可しませんが、一部のデータが省略された場合に発生する可能性があります)。

3.2 勘定残高の比較

試算表以外に、特定の財務諸表を比較できます:

  • 貸借対照表: QuickBooksで最終日の貸借対照表を実行し、Beancountの貸借対照表(bean-report migrated.beancount balsheet)を実行します。これは試算表に似ていますが、資産、負債、純資産で整理されています。カテゴリごとの数値が一致する必要があります。より詳細なチェックのために、主要な勘定の合計を比較します:現金、売掛金、固定資産、買掛金、純資産など。

  • 損益計算書: QuickBooksとBeancount(期間全体の損益計算書はbean-report migrated.beancount income)で5年間の期間(または年ごと)の損益計算書を実行します。Beancountの純利益は、各期間でQuickBooksの純利益と等しくなければなりません。5年間すべてを移行した場合、累積純利益が一致する必要があります。また、個々の収益と費用の合計を比較して、カテゴリが省略または重複していないことを確認できます。

  • ランダムな取引のサンプリング: ランダムにいくつかの取引(特に各年から、および各主要勘定から)を選び、それらが正しく移行されたかを確認します。たとえば、QuickBooksで3年前の請求書を見つけ、その金額やメモをBeancountファイルで検索します(すべての取引はテキストなので、.beancountファイルをテキストエディタで開くか、検索ツールを使用できます)。日付、金額、勘定が一致することを確認します。これは、日付形式の問題や誤ってマッピングされた勘定を検出するのに役立ちます。

3.3 自動整合性チェック

Beancount自身の検証ツールを活用します:

  • bean-check: bean-check migrated.beancount を実行します。これによりファイルが解析され、構文エラーやバランスエラーが報告されます。スクリプトが未開設の勘定やバランスの取れていない取引などを見逃した場合、bean-checkがそれを指摘します。クリーンなパス(出力なし)は、ファイルが少なくとも内部的に一貫していることを意味します。

  • 残高アサーション: 追加のチェックとして、元帳に主要な勘定の明示的な残高アサーションを追加できます。たとえば、特定の日付の銀行口座の残高がわかっている場合は、次のような行を追加します: 2023-12-31 balance Assets:Bank:Checking 10000.00 USD bean-checkは、その日付の元帳で残高が実際に$10,000であることを確認します。これはオプションですが、重要度の高い勘定に役立ちます。QuickBooksの期末残高(例:各年末)を取得し、Beancountファイルでアサートすることができます。アサーションが失敗すると、Beancountは差額を報告します。

  • 試算表のロールフォワード: 必要であれば、期間ごとのチェックを行うことができます。各年について、純変動を比較します。たとえば、QuickBooks 2020の純利益とBeancount 2020の純利益を比較し、各年が純資産に正しくクローズされたことを確認します(QuickBooksは毎年、純利益を自動的に利益剰余金に繰り越します。Beancountでは累積純資産のみが表示されます)。差異が見つかった場合は、特定の年のデータに問題があることを示している可能性があります。

  • 取引数と重複: QuickBooksとBeancountの取引数を数えます。QuickBooksは直接のカウントを簡単には表示しませんが、CSVの行を数えることで推定できます(取引ヘッダー vs 明細)。Beancountでは、ファイル内のtxnまたは* "の出現回数を数えるのが手っ取り早い方法です。これらはQuickBooksの数と等しいか、わずかに多くなるはずです(期首残高取引や調整を追加した場合)。大きな食い違いは、何かが省略されたか重複した可能性があることを意味します。メタデータで一意のIDを使用することで、重複が疑われる場合に、Beancountファイル内で同じ小切手番号や請求書番号が2回出現していないか検索できます。

  • 照合ステータス: スクリプトにQuickBooksの「照合済み」ステータスに基づいてrec: "y"または"n"のメタデータを含めました(例のrecなど)。これはBeancountの標準機能ではありませんが(BeancountはLedgerのように「照合済み/保留中」を追跡しません)、便利なメタデータになる可能性があります。QuickBooksで照合されたすべての取引が存在することを確認できます。最終的に、Beancountで銀行口座を再照合する(明細書を使用)ことが、何も欠けていないことの最終的な証明になる可能性があります。

これらの検証を行うことで、移行がデータを保持したという信頼が生まれます。この段階に時間をかけてください。数ヶ月後に帳簿に依存するようになってから異常を修正するよりも、今修正する方が簡単です。検証が失敗した場合の一般的な問題:勘定の期首残高の欠落、範囲外の日付の取引、または仕訳の符号の反転。これらはすべて、特定されれば修正可能です。


ステージ4:Beancount台帳への統合

クリーンアップと検証の後、データをBeancount元帳の構造に正式化する時が来ました。「統合」とは、元帳ファイルを完成させ、監査可能性のためにバージョン管理システムに登録することを意味します。

4.1 台帳ファイルと設定の整理

Beancount元帳ファイルをどのように構成するかを決定します。5年分のデータの場合、すべてを1つのファイルに保持するか、年またはカテゴリごとに分割することができます。一般的で明確な構造は次のとおりです:

  • メイン元帳ファイル: 例:ledger.beancount – これは他のファイルをincludeできるエントリポイントです。グローバルオプションを含み、年次ファイルをインクルードすることができます。
  • 勘定科目ファイル: 勘定科目表と期首残高を定義します。例:accounts.beancountには、すべてのopenディレクティブ(スクリプトによって生成)が含まれます。商品(通貨)もここでリストできます。
  • 取引ファイル: 年ごとに1つ、例:2019.beancount2020.beancountなど、その年の取引を含みます。これにより、各ファイルが管理可能なサイズに保たれ、必要に応じて1年に集中できます。あるいは、エンティティや勘定ごとに分割することもできますが、時間による分割は財務データにとって簡単です。

メインファイルの例:

option "title" "私のビジネス元帳"
option "operating_currency" "USD"

include "accounts.beancount"
include "2019.beancount"
include "2020.beancount"
...
include "2023.beancount"

このようにして、レポートを実行するとすべてのデータが集計されますが、秩序は維持されます。

Beancountは複数のファイルを必要としません(1つの大きなファイルでもかまいません)が、上記の構造は明瞭さとバージョン管理を向上させます。Beancountのベストプラクティスに従い、明確なセクションヘッダーを使用し、関連するエントリを論理的にグループ化することが良いでしょう。

4.2 開始残高と純資産の設定

移行が絶対的なゼロからの開始でない場合、期首残高を処理する必要があります。2つのシナリオがあります:

  • ゼロから始まる帳簿: 5年間の期間が会社の設立時に始まる場合(例:2019年1月にQuickBooksを使い始め、初期の純資産を除いてすべての勘定がゼロだった場合)、別の期首残高取引は必要ないかもしれません。2019年の最初の取引(銀行口座への初期資金調達など)が自然に期首残高を設定します。初期資本以前の利益剰余金が純資産取引を通じて計上されていることを確認してください。

  • 途中からの帳簿(部分的な履歴): QuickBooksを以前から使用しており、2019年が中間点である場合、2019年1月1日時点で各勘定には繰越残高がありました。QuickBooksではそれらが期首残高または利益剰余金として記録されていたでしょう。Beancountでは、開始日の前日に期首残高仕訳を作成するのが一般的です:

    • すべての期首金額の合計を相殺するために、Equity:Opening-Balances(または同様の)という名前の純資産勘定を使用します。
    • 例:2018年12月31日時点で、現金が10,000、売掛金が10,000、売掛金が5,000、買掛金が3,000(貸方)だった場合、次のような取引を記述します:20181231"期首残高"Assets:Cash10000.00USDAssets:AccountsReceivable5000.00USDLiabilities:AccountsPayable3000.00USDEquity:OpeningBalances12000.00USDこれにより、OpeningBalancesには仕訳をバランスさせる負の合計(–3,000(貸方)だった場合、次のような取引を記述します: `2018-12-31 * "期首残高"` ` Assets:Cash 10000.00 USD ` ` Assets:AccountsReceivable 5000.00 USD ` ` Liabilities:AccountsPayable -3000.00 USD ` ` Equity:Opening-Balances -12000.00 USD ` これにより、`Opening-Balances`には仕訳をバランスさせる負の合計(–12k)が残ります。これで、すべての資産/負債勘定は2019年を正しい残高で開始します。これは、QuickBooksの「利益剰余金」や繰越残高を反映するはずです。
    • あるいは、Beancountのpadおよびbalanceディレクティブを使用します:各勘定について、Opening-Balancesからpadし、残高をアサートできます。これはより自動化された方法です。例: 2018-12-31 pad Assets:Cash Equity:Opening-Balances 2018-12-31 balance Assets:Cash 10000.00 USD これはBeancountに、その日付で現金が10000 USDになるように必要な仕訳(Opening-Balancesへ)を挿入するように指示します。これを各勘定に対して行います。結果は似ていますが、最初の方法のように明示的な取引を記述するのも簡単です。
  • 利益剰余金: QuickBooksは「利益剰余金」取引を明示的にエクスポートせず、単に計算します。移行後、Equity:RetainedEarningsを作成しなかった場合、それがゼロであることに気づくかもしれません。Beancountでは、利益剰余金は単に前年度の利益です。利益剰余金勘定を作成し、毎新年の初日に前年度の利益をそれに振り替えるか、単に純資産をすべての収益/費用の合計とすることができます(これはレポートの純資産セクションに表示されます)。透明性を高めるために、一部のユーザーは毎年クロージングエントリを記録します。これはオプションであり、主に表示のためです。すべての取引を移行したため、各年の利益は年ごとのレポートを実行すれば自然に累積されます。

  • 比較チェック: 期首残高を設定した後、開始日の貸借対照表を実行して、すべてが正しいことを確認します(それらの期首残高と期首純資産がゼロになるはずです)。

4.3 最終処理とバージョン管理

データがBeancount形式になり、構造化された今、ファイルをバージョン管理リポジトリ(例:git)にコミットするのが賢明です。元帳の各変更を追跡でき、すべての修正の監査証跡が得られます。これはプレーンテキスト会計の重要な利点です。たとえば、QuickBooksでは変更を簡単に比較できないかもしれませんが、Beancountでは行ごとに差分を確認できます。一部のユーザーが指摘するように、Beancountでは透明性が得られ、必要に応じて変更を元に戻すことができます。各仕訳は変更履歴にリンクできます。

この初期移行のコミットにv1.0などのタグを付けることを検討してください。そうすれば、それがQuickBooksからインポートされた時点の帳簿の状態を表していることがわかります。将来的には、新しい取引を直接Beancountに入力する(または銀行明細書からインポートするなど)ことになり、通常のソフトウェア開発プラクティス(毎月または毎日コミットする、実験のためにブランチを使用するなど)を使用できます。

Favaやその他のツールの設定: FavaはBeancountのWebインターフェースで、レポートを簡単に表示できます。コミット後、fava ledger.beancountを実行して財務諸表を閲覧し、QuickBooksのレポートと最後の比較を行います。UIでは小さな違いをより簡単に見つけられるかもしれません(たとえば、ゼロであるべき勘定に小さな残高が表示されている場合は、クロージングエントリの欠落や見逃された取引を示しています)。

命名規則と一貫性: これで完全にコントロールできるようになったので、一貫性を確保してください:

  • すべての勘定は明確な名前を持ち、大文字のカテゴリ名(Assets、Liabilitiesなど)で始まる必要があります。奇妙に見えるもの(例:QuickBooksの大文字/小文字の不一致によるAssets:assets:SomeAccount)があれば、勘定科目ファイルで名前を変更し、取引を更新します(ファイル内での簡単な検索/置換、またはBeancountのbean-formatやエディタのマルチカーソルを使用できます)。
  • 商品シンボル(通貨コード)は一貫している必要があります。USDには、どこでもUSDを使用します($US$ではありません)。その他には、標準コード(EUR、GBPなど)を使用します。この一貫性は、価格検索やBeancountのレポートにとって重要です。
  • 作成された可能性のある一時的またはダミーの勘定を削除します(たとえば、スクリプトで未知の勘定のプレースホルダとしてExpenses:Miscellaneousを使用した場合、すべての勘定を正しくマッピングしてそれらを排除するようにしてください)。

QuickBooksの終了: この時点で、QuickBooksと一致するBeancountの並行した帳簿があるはずです。一部の人は、何も見逃していないことを確認するために、短期間両方のシステムを並行して実行することを選択します。しかし、検証がしっかりしていれば、QuickBooksの帳簿を「閉じる」ことができます:

  • 企業環境の場合、QuickBooksのすべてのソースドキュメント(請求書、支払手形、領収書)を記録用にエクスポートすることを検討してください。これらは手動で添付しない限りBeancountには存在しません。
  • QuickBooksデータのバックアップ(会社ファイルとエクスポートファイルの両方)を保存します。
  • 将来的には、Beancount元帳を主要な記録システムとして維持します。

データをBeancount元帳に統合することで、移行プロセスは完了しました。最終ステップは、監査を行い、財務諸表の一貫性を証明し、自分自身(および利害関係者や監査人)に移行が成功したことを納得させることです。


ステージ5:移行後の監査と例

移行の成功を説明するために、財務諸表の移行前後の比較と、可能であれば取引の差分を準備します。これにより、帳簿が一貫していることの証拠が提供されます。

5.1 財務諸表の確認

QuickBooksとBeancountの両方から同じ日付の主要な財務レポートを作成し、比較します:

  • 2023年12月31日の貸借対照表: 資産、負債、純資産の合計を行ごとに比較します。これらは一致するはずです。たとえば、QuickBooksが総資産 = 150,000および総負債+純資産=150,000**および**総負債 + 純資産 = 150,000を示した場合、Beancountの貸借対照表も同じ合計を示すはずです。勘定の構成を少し変えた場合(いくつかのサブ勘定を統合したなど)、比較で調整するか、合計が等しいことを確認するために次のレベルまでドリルダウンします。

  • 2019年–2023年の損益計算書: 各年(または全期間)の総収益、総費用、および純利益が同一であることを確認します。QuickBooksがレポートで丸め処理を行った場合、わずかな差異が生じる可能性がありますが、取引は通常セント単位まで正確に記録されるため、純利益は正確であるはずです。いずれかの年の結果が異なる場合は、その年のデータを詳しく調べます。それはしばしば、その期間の仕訳の欠落または重複の指標です。

  • 試算表の差分: 可能であれば、各勘定とQuickBooks対Beancountの残高をリストしたスプレッドシートを作成します。一致することを期待しているので、これはすべてゼロの差分列になるかもしれません。これは本質的に、我々が議論した試算表のクロスチェックですが、それを書き留めることは文書化に役立ちます。

5.2 比較例(移行前 vs 移行後)

以下は、データの一貫性を示すサンプルの抜粋です。2023年12月31日のQuickBooksの試算表が次のようであったとします:

勘定科目QuickBooks残高 (2023年12月31日)
資産
Assets:Bank:Checking$12,500.00 (借方)
Assets:AccountsReceivable$3,200.00 (借方)
負債
Liabilities:CreditCard$-1,200.00 (貸方)
Liabilities:LoansPayable$-5,000.00 (貸方)
純資産
Equity:Opening-Balances$-7,500.00 (貸方)
Equity:RetainedEarnings$-2,000.00 (貸方)
Equity:CurrentYearProfit$0.00

Beancountでは、2023年までのすべての取引をインポートして記録した後、bean-report balances(試算表)は次のように出力されます:

勘定科目Beancount残高 (2023年12月31日)
Assets
Assets:Bank:Checking12,500.00 USD (借方)
Assets:AccountsReceivable3,200.00 USD (借方)
Liabilities
Liabilities:CreditCard-1,200.00 USD (貸方)
Liabilities:LoansPayable-5,000.00 USD (貸方)
Equity
Equity:Opening-Balances-7,500.00 USD (貸方)
Equity:RetainedEarnings-2,000.00 USD (貸方)
Equity:Profit (2019-2023)0.00 USD

(注意:純資産セクションは異なる構成にすることができます。重要なのは合計が一致することです。ここで、Beancountの「利益(2019-2023)」は、当期利益/利益剰余金の複合的な役割を果たし、利益が利益剰余金にクローズされたためゼロを示しています。)

示されているように、各勘定はセント単位で一致しています。借方の合計は、両側で貸方の合計と等しくなります。

さらに、2023年の損益計算書を実行すると:

  • QuickBooks: 収益 50,000、費用50,000、費用 48,000、純利益 $2,000。
  • Beancount: 収益 50,000、費用50,000、費用 48,000、純利益 $2,000(その後、利益剰余金にクローズされたか、年末の貸借対照表の純資産の下に表示されます)。

必要であれば取引の差分を作成できますが、QuickBooksのデータは元帳形式ではないため、レポートに依存する方が効果的です。QuickBooksのCSVとBeancountの取引を両方とも日付でソートし、最終チェックとして主要なフィールドを比較することができます(これはExcelまたはスクリプトで行うことができます)。ただし、以前の検証に自信があるため、財務諸表のチェックで通常は十分です。

5.3 監査のヒント

  • 監査人や利害関係者が保証を必要とする場合は、移行前後の財務諸表を並べて提示します。Beancountの透明性は、実際には監査を簡素化できます。なぜなら、財務諸表の各数値を元の仕訳まで迅速に追跡できるからです(特にFavaのドリルダウン機能を使用)。
  • QuickBooksのバックアップとエクスポートされたCSVを監査証跡の一部として保持します。移行中に行われた調整を文書化します(例:「一貫性のために勘定XをYに改名」または「明確化のために取引Zを2つの仕訳に分割」など、そのような変更を行った場合)。
  • 将来的には、Beancountで定期的なチェックを実施します。たとえば、銀行口座の月次照合とその期末残高のアサーションは、データの問題や入力エラーを検出するのに役立ちます。移行は良い基盤を提供します。新しいシステムで規律を維持することで、継続的な精度が保証されます。

最後に、移行の完了を祝いましょう:あなたはQuickBooksからBeancountへの5年間の会計データの転送に成功しました。データは現在、軽量でバージョン管理された、完全な複式簿記の整合性を持つテキスト形式になっています。データをエクスポートし、Pythonスクリプトで変換し、試算表とレポートを通じて整合性を検証し、整理されたBeancount元帳に統合しました。この包括的なプロセスにより、Beancount元帳が5年間の期間にわたってQuickBooksの帳簿の正確で忠実な複製であることが保証され、将来の簡素化された会計への道が開かれます。