Skip to main content

18 posts tagged with "financial management"

View all tags

Accumulated Depreciation (for Beancount): A Practical, Plain‑Text Guide

· 10 min read
Mike Thrift
Mike Thrift
Marketing Manager

If you track fixed assets in your accounting—laptops, cameras, machinery, or even office furniture—your books need to reflect their declining value. This involves two key concepts: depreciation (the expense) and its running total, accumulated depreciation. This guide explains both in plain language and then shows you exactly how to model them in Beancount with copy-pasteable examples, including powerful automation options.


2025-08-23-accumulated-depreciation

What is accumulated depreciation?

Accumulated depreciation is the total amount of depreciation that has been recorded against an asset since the day it was put into service. Think of it as a running tally. It’s not a new kind of expense—it's just the to-date sum of all past depreciation charges for that asset.

In financial statements, you’ll see accumulated depreciation paired with the asset’s original price. This allows anyone reading your books to see both the historical cost (what you paid for it) and the net book value (what it's currently worth on your books).

A crucial detail is that accumulated depreciation is a contra-asset account. This might sound complex, but it's a simple idea:

  • It's an "asset" account, so it lives in the Assets section of your chart of accounts.
  • However, it carries a credit balance (a negative value in Beancount's asset accounts), which reduces the value of the related fixed asset.

Where does it appear on the balance sheet?

Accumulated depreciation typically appears on the balance sheet directly underneath the fixed asset it relates to. For example:

Equipment: Computers$3,000.00
Less: Accumulated Depreciation($1,000.00)
Equipment: Computers, Net$2,000.00

Many financial statements simplify this by showing a single line item like “Property, plant & equipment, net”. This single number represents the total historical cost of all assets minus their total accumulated depreciation, giving you the final net book value.


How do you calculate depreciation?

There are several methods for calculating depreciation. The one you choose determines how much expense you record each period, which in turn adds to the accumulated depreciation total. Two common families of methods are:

  • Straight-Line (SL): This is the simplest and most common method for bookkeeping purposes. You expense an equal amount of the asset's value in each period of its useful life. For example, a 3,000laptopwitha36month(3year)usefullifewouldbedepreciatedat3,000 laptop with a 36-month (3-year) useful life would be depreciated at 83.33 per month.
  • Tax Methods (e.g., MACRS in the U.S.): For tax purposes, governments often define specific accelerated schedules. In the U.S., the Modified Accelerated Cost Recovery System (MACRS) allows you to take larger depreciation deductions in the earlier years of an asset's life. Beancount can easily handle these schedules—you just need to calculate the amounts according to the official tables (like those in IRS Publication 946) and generate the corresponding journal entries.

Formula (Straight-Line)

Periodic Depreciation = fractextCosttextSalvageValuetextUsefulLife\\frac{\\text{Cost} - \\text{Salvage Value}}{\\text{Useful Life}}

Accumulated Depreciation (at date t) = sum(textPeriodicDepreciationuptot)\\sum (\\text{Periodic Depreciation up to } t)

Salvage value is the estimated residual value of an asset at the end of its useful life. For simplicity, it's often assumed to be zero.


The Beancount Way: Model Cost and Accumulated Depreciation

To properly track fixed assets in Beancount while preserving their original cost, you’ll use a pair of asset accounts for each category, plus an expense account.

  • Assets:Equipment:Computers:Cost (to hold the historical cost)
  • Assets:Equipment:Computers:AccumDep (the contra-asset, which will be credited over time)
  • Expenses:Depreciation:Computers (to record the periodic expense)

This structure mirrors standard accounting practice and is the recommended approach for managing fixed-asset depreciation in Beancount.


Option A: Manual Straight-Line Entries

This is the most direct method. You control every entry, which is great for understanding the mechanics.

1. Open the necessary accounts

2025-01-01 open Assets:Bank:Checking
2025-01-01 open Assets:Equipment:Computers:Cost
2025-01-01 open Assets:Equipment:Computers:AccumDep
2025-01-01 open Expenses:Depreciation:Computers

2. Record the purchase (at historical cost)

When you buy the asset, you debit the Cost account.

2025-01-20 * "Purchase MacBook Pro"
Assets:Equipment:Computers:Cost 3000.00 USD
Assets:Bank:Checking -3000.00 USD

3. Record monthly depreciation

Each month, you'll record the depreciation expense. For a 3,000assetover36months,themonthlydepreciationis3,000 asset over 36 months, the monthly depreciation is 3000 \div 36 = 83.3383.33.

The transaction involves debiting the expense account and crediting the contra-asset account.

2025-02-28 * "Monthly depreciation - MacBook Pro (SL 36mo)"
Expenses:Depreciation:Computers 83.33 USD
Assets:Equipment:Computers:AccumDep -83.33 USD ; This is the credit to the contra-asset

You would repeat this entry every month for 36 months. The balance in Assets:Equipment:Computers:AccumDep will grow more negative over time, reducing the asset's net book value.

Quick Check: You can easily check the net book value in Fava's Balance Sheet or by running a quick query:

bean-query myledger.bean "SELECT account, SUM(position) WHERE account ~ 'Assets:Equipment:Computers:(Cost|AccumDep)' GROUP BY account"

The sum of the balances of these two accounts is your net book value.


Option B: Automate with Fava’s amortize Plugin

If you use Fava (the popular web interface for Beancount) and your depreciation is a fixed amount each month, you can automate it.

First, enable the plugin at the top of your Beancount file:

plugin "fava.plugins.amortize_over"

Next, create a single transaction that defines the entire depreciation schedule.

; 1. Record the initial purchase as usual
2025-01-20 * "Purchase MacBook Pro"
Assets:Equipment:Computers:Cost 3000.00 USD
Assets:Bank:Checking -3000.00 USD

; 2. Set up the depreciation schedule
2025-01-20 * "Depreciation schedule - MacBook Pro"
amortize_months: 36
Expenses:Depreciation:Computers 3000.00 USD
Assets:Equipment:Computers:AccumDep -3000.00 USD

The plugin will see this transaction and automatically generate virtual postings for $83.33 each month for 36 months. These entries don't get written to your .bean file but appear in all reports. This is perfect for straight-line depreciation but won't work for irregular schedules like MACRS.


Option C: Generate Periodic Entries with a Third-Party Plugin

If you prefer to have real, non-virtual transactions written into your files but still want automation, a periodic entry generator is a great choice. One of the most popular is beancount-periodic by Dallas Lu. This plugin can be configured to create dated postings on your behalf, giving you the control of manual entries with the convenience of automation.


Viewing Results: Cost, Accumulated Depreciation, and Net Book Value

No matter which method you choose, your Balance Sheet will show both the Cost and AccumDep accounts under your Assets. The sum of these two is your net book value. This presentation—showing the gross cost less the accumulated depreciation—is exactly what accountants and financial analysts expect to see. It provides full transparency into the age and value of your assets.


Disposing of an Asset (Sell, Scrap, or Retire)

When an asset reaches the end of its life, you either sell it, scrap it, or retire it. To remove it from your books, you must:

  1. Remove its historical cost.
  2. Remove its associated accumulated depreciation.
  3. Record any cash received.
  4. Record any resulting gain or loss (the difference between cash received and the net book value).

Example: Selling an Asset for a Gain

Let's say you sell the MacBook Pro on June 15, 2027.

  • Original Cost: $3,000
  • Accumulated Depreciation at time of sale: -$2,500
  • Net Book Value: 3,0003,000 - 2,500 = $500
  • You sell it for: $800
  • Gain on Sale: 800(proceeds)800 (proceeds) - 500 (net book value) = $300

Here is the Beancount transaction to record the disposal:

2027-06-15 * "Sell MacBook Pro"
Assets:Bank:Checking 800.00 USD ; Cash received
Assets:Equipment:Computers:AccumDep 2500.00 USD ; Debit to zero out the contra-asset
Assets:Equipment:Computers:Cost -3000.00 USD ; Credit to remove the original cost
Income:Gains:AssetDisposals -300.00 USD ; Credit to record the gain

If the proceeds had been only 400(alossof400 (a loss of 100), you would post the difference to an Expenses:Losses:AssetDisposals account with a positive amount (a debit).


FAQ (Fast)

  • Is accumulated depreciation an asset or a liability? Neither. It’s a contra-asset. It's located in the assets section of your balance sheet but has a credit balance, which reduces the total asset value.

  • Do I ever post directly to the Cost account after purchase? Generally, no. The purpose of the contra-asset account is to preserve the original historical cost. All reductions in value due to depreciation should be posted to ...:AccumDep.

  • Can I use Beancount for MACRS (tax) schedules? Yes. You'll need to calculate the depreciation amounts for each period using the tables in IRS Publication 946. Then, you can record those amounts using manual entries or a periodic plugin. The Fava amortize plugin is not suitable for this, as MACRS amounts are not equal each month.

  • What about Section 179 expensing? Section 179 allows you to expense the full cost of qualifying property in the year you place it in service, instead of depreciating it over time. This is an election you make for tax purposes. In Beancount, this would simply be a debit to an expense account instead of a fixed asset account at the time of purchase.


Common Pitfalls (and How to Avoid Them)

  • Posting depreciation directly against the Cost account.
    • Fix: Always credit the ...:AccumDep contra-asset account. This preserves the historical cost, which is important for financial reporting.
  • Forgetting to remove Accumulated Depreciation on disposal.
    • Fix: When you sell or scrap an asset, your journal entry must include a debit to ...:AccumDep to clear its balance for that asset.
  • Mixing up bookkeeping and tax depreciation schedules.
    • Fix: Your internal management books often use straight-line for simplicity, while your tax filings may require MACRS. Keep these purposes separate and document your policy.
  • Expecting the Fava amortize plugin to handle non-equal schedules.
    • Fix: Remember that this plugin is designed only for equal monthly splits. For any other pattern, use manual postings or a more flexible periodic plugin.

Copy-Paste Template

Here is a complete template you can adapt for your own ledger.

option "title" "My Business Ledger"
plugin "fava.plugins.amortize_over" ; Remove if not using Fava automation

; --- Accounts ---
2025-01-01 open Assets:Bank:Checking
2025-01-01 open Assets:Equipment:Computers:Cost
2025-01-01 open Assets:Equipment:Computers:AccumDep
2025-01-01 open Expenses:Depreciation:Computers
2025-01-01 open Income:Gains:AssetDisposals
2025-01-01 open Expenses:Losses:AssetDisposals

; --- Purchase at historical cost ---
2025-01-20 * "Purchase MacBook Pro"
Assets:Equipment:Computers:Cost 3000.00 USD
Assets:Bank:Checking -3000.00 USD

; --- Choose ONE depreciation approach ---

; (A) Manual monthly posting
2025-02-28 * "Monthly depreciation - MacBook Pro (SL 36mo)"
Expenses:Depreciation:Computers 83.33 USD
Assets:Equipment:Computers:AccumDep -83.33 USD

; (B) Fava automation (for 36 equal monthly splits)
2025-01-20 * "Depreciation schedule - MacBook Pro"
amortize_months: 36
Expenses:Depreciation:Computers 3000.00 USD
Assets:Equipment:Computers:AccumDep -3000.00 USD

; --- Sale example (edit numbers for your actual sale) ---
2027-06-15 * "Sell MacBook Pro"
Assets:Bank:Checking 800.00 USD
Assets:Equipment:Computers:AccumDep 2500.00 USD
Assets:Equipment:Computers:Cost -3000.00 USD
Income:Gains:AssetDisposals -300.00 USD

TL;DR

  • Keep asset Cost and AccumDep in separate accounts to preserve historical cost.
  • Record depreciation with a debit to Expenses:Depreciation:... and a credit to Assets:...:AccumDep.
  • Automate equal monthly depreciation with the Fava amortize plugin or generate dated entries with a periodic plugin.
  • When disposing of an asset, you must remove both its Cost and its AccumDep from the books and record the resulting gain or loss.

Sources & Further Reading

What is Accounts Payable? A Beancount-Friendly Guide for Tracking Vendor Bills in Plain Text

· 8 min read
Mike Thrift
Mike Thrift
Marketing Manager

Accounts payable (AP) is the money your business owes to its suppliers for goods or services you’ve already received but haven't paid for yet. In the world of accounting, AP is classified as a current liability on your balance sheet—an amount typically due within the next year, and often within 30 to 60 days.

This concept is central to accrual accounting, where you record the expense and the corresponding liability the moment a bill arrives, not when you actually send the cash. This guide will show you how to manage the entire AP workflow cleanly and efficiently using the plain-text accounting tool, Beancount.

2025-08-20-what-is-accounts-payable


Quick Summary

Before we dive into the details, let's cover the essentials:

  • Accounts Payable (AP) represents your short-term debts to vendors. You'll find it under the Liabilities section of your balance sheet.
  • Accrual vs. Cash: AP is a concept that exists only if you keep your books on an accrual basis. Beancount fully supports accrual workflows, and its web interface, Fava, will display your liabilities correctly.
  • AP vs. AR: It's simple: Payables are what you owe, while Receivables (AR) are what others owe you.

Where AP Lives in Beancount (and Fava)

To start tracking AP, you first need to declare an account for it in your ledger. A standard convention is:

Liabilities:AccountsPayable

You can optionally create subaccounts for major vendors (e.g., Liabilities:AccountsPayable:ForestPaintSupply).

In Fava, this account will appear on your Balance Sheet under Liabilities. You can click on it to drill down and see a list of all open and paid items, giving you a clear view of your obligations. You can even see this in action in Fava's public example ledger, which includes a Liabilities:AccountsPayable account.


Beancount Building Blocks You’ll Use

A robust AP workflow in Beancount relies on a few core features:

  1. Accounts: You'll primarily use your Liabilities:AccountsPayable account, a cash account like Assets:Bank:Checking, and your various expense accounts (e.g., Expenses:Supplies).
  2. Metadata: You can attach key-value data to any transaction. For AP, you'll use metadata like invoice:, due:, terms:, and document:. Fava even recognizes the document: key and will automatically create a clickable link to the attached file if you configure a documents folder.
  3. Tags & Links: Use #tags (like #ap) for easy filtering and ^links (like ^INV-10455) to programmatically tie a bill and its subsequent payment together. This creates a clear, auditable trail.
  4. Queries (BQL): Beancount's SQL-like query language (BQL) allows you to run powerful reports, like listing all open payables sorted by due date, directly from the command line with bean-query or on Fava's "Query" page.

Core AP Workflow in Beancount

Managing AP in your ledger involves two or three key steps: recording the bill, paying it, and sometimes handling partial payments or discounts.

1) Record the Vendor Bill (This Creates the Liability)

First, you book the expense and create the payable when the invoice arrives.

; Optionally set your documents folder in your main Beancount file:
option "documents" "documents"

2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
terms: "2/10, n/30"
document: "invoices/2025-08-05-forest-paint-INV-10455.pdf"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USD

This single entry accomplishes two critical things:

  1. It immediately recognizes the $500 expense in the correct period (August).
  2. It creates a corresponding $500 liability, showing that you owe money to Forest Paint Supply.

The ^INV-10455 link is a unique identifier that lets you attach the same link to the payment later, keeping the bill and payment transactions logically connected.

2) Pay the Bill (This Clears the Liability)

When you pay the invoice, you create a transaction that moves money from your bank account to clear the liability.

a) Standard Payment (No Discount):

2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USD

This entry reduces your AP balance by $500 and your checking account balance by the same amount. The liability is now cleared.

b) Early-Payment Discount (e.g., "2/10, n/30"):

If the terms are "2/10, n/30", you can take a 2% discount if you pay within 10 days. For our 500invoice,thatsa500 invoice, that's a 10 discount. Here are two acceptable ways to record it—just pick one method and be consistent.

; Option 1: Record the discount as other income (a contra-expense effect)
2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -490.00 USD
Income:Discounts:Payables -10.00 USD

; Option 2: Reduce the original expense directly
2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -490.00 USD
Expenses:Supplies:Paint -10.00 USD

In both cases, you clear the full 500liability,reduceyourbankbalancebythe500 liability, reduce your bank balance by the 490 you actually paid, and account for the $10 benefit.

3) Handling Partial Payments

Beancount's linking feature makes tracking partial payments simple and clean.

; Invoice for $1,200
2025-08-10 * "Acme Parts" "INV-9001" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Expenses:Parts 1200.00 USD
Liabilities:AccountsPayable -1200.00 USD

; First payment of $400
2025-08-20 * "Acme Parts" "Payment INV-9001 (1/3)" ^INV-9001
Liabilities:AccountsPayable 400.00 USD
Assets:Bank:Checking -400.00 USD

; Final payment of $800
2025-09-05 * "Acme Parts" "Payment INV-9001 (final)" ^INV-9001
Liabilities:AccountsPayable 800.00 USD
Assets:Bank:Checking -800.00 USD

By using the ^INV-9001 link on all three transactions, you can easily filter your journal to see the complete history of this specific bill and its associated payments.


Helpful Queries (BQL)

You can run these queries in Fava’s “Query” tab or from the command line with bean-query.

Tip: The any_meta() function is incredibly useful for pulling metadata fields like invoice: and document: into your query results.

Open AP by Vendor (Balance View):

This query sums up the current outstanding balance you owe to each supplier.

SELECT payee, COST(SUM(position)) AS amount
WHERE account ~ "^Liabilities:AccountsPayable"
GROUP BY payee
ORDER BY payee;

Open AP by Invoice + Due Date:

Get a tidy list of every open bill, sorted by its due date, to help you prioritize payments.

SELECT payee,
any_meta('invoice') AS invoice,
any_meta('due') AS due,
COST(SUM(position)) AS amount
WHERE account ~ "^Liabilities:AccountsPayable"
GROUP BY payee, invoice, due
ORDER BY due, payee;

List Bills with Attached PDFs:

This query finds all your bills and shows the path to the linked document.

SELECT date, payee, any_meta('invoice') AS invoice, any_meta('document') AS file
WHERE account ~ "^Liabilities:AccountsPayable"
ORDER BY date DESC;

Where to See AP in Fava

  • Balance Sheet: Navigate to Balance SheetLiabilitiesAccountsPayable to see the total balance and drill down into the transaction details.
  • Journal: Filter the journal by account:Liabilities:AccountsPayable or a specific link like ^INV-xxxx to see a bill's complete lifecycle.
  • Documents Sidebar: If you use the document: metadata and set the option "documents" directive, you'll see a list of linked documents in the sidebar.

AP Aging, Turnover, and Cash-Flow Awareness

  • Aging Schedule: This report groups your open invoices by how long they’ve been outstanding (e.g., 1–30 days, 31–60 days, 60+ days). In Beancount, the most practical approach is to run the "Open AP by Invoice + Due Date" query above, export the results as a CSV, and bucket them in a spreadsheet or a small Python script.
  • AP Turnover Ratio: This is a quick health check on how fast you pay your vendors. The formula is Total Supplier Purchases ÷ Average AP. A related metric, Days Payable Outstanding (DPO), is roughly 365 ÷ Turnover Ratio.
  • If You Can’t Pay on Time: AP is meant for short-term debt. If a vendor agrees to formal, longer-term repayment, you should reclassify the debt out of AP and into a note payable.
2025-10-01 * "Helix Industries" "Convert overdue AP to 12-month note" ^INV-1110
Liabilities:AccountsPayable 2000.00 USD
Liabilities:NotesPayable -2000.00 USD

Best Practices for AP in a Plain-Text Ledger

  • Go Paperless: Store invoice PDFs in your documents folder and link them with the document: metadata key.
  • Use Links Consistently: Put the unique invoice number in a ^link on both the bill and all associated payment entries.
  • Keep Metadata Tidy: Consistently using invoice:, due:, and terms: improves search, queries, and financial reviews.
  • Accrual All the Way: If you want useful AP reporting, commit to keeping your books on an accrual basis. Beancount and Fava handle this beautifully.

Copy-Paste Starter: Vendor Bill + Payment

; ---- Bill ----
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
document: "invoices/2025-08-05-forest-paint-INV-10455.pdf"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USD

; ---- Payment (no discount) ----
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USD

This guide is for educational purposes and does not constitute tax, legal, or financial advice.

References & Further Reading:

Accounting Outsourcing: How to Hand Off Your Financial Tasks (for Beancount Users)

· 12 min read
Mike Thrift
Mike Thrift
Marketing Manager

If your ledger lives in plain text, you already value clarity, control, and reproducibility. Outsourcing your accounting doesn’t have to compromise any of that. On the contrary, when done right, it transforms your Beancount setup into a reliable, documented workflow run by specialists—while you retain full ownership of the data, the repository, and the rules.

This is a practical guide for Beancount users on what to outsource, what to keep in-house, how to structure deliverables, and how to evaluate providers. It’s about delegating the mechanical work without ever giving up control.

2025-08-19-accounting-outsourcing-how-to-hand-off-your-financial-tasks


Who This Is For

This guide is for you if you fit one of these profiles:

  • Solo founders, indie hackers, and consultants who use Beancount and want to reclaim time spent on the mechanical parts of accounting to focus on building your product or serving clients.
  • Finance-savvy engineers who demand tight controls, versioned history, and full auditability but don't want to spend their weekends importing bank statements and reconciling accounts themselves.
  • Organizations migrating from an all-in-one vendor who are now prioritizing data custody and reproducibility. Recent, abrupt shutdowns of accounting platforms like Bench have underscored a critical lesson: exit plans and open formats are not optional. (TechCrunch, KSV Advisory Report)

Beancount, Briefly

For the uninitiated, the Beancount ecosystem is built on a few core components that make it powerful for this kind of workflow:

  • Beancount: At its heart, it's a double-entry accounting language specified in plain text. You write human-readable ledger files, commit them to a Git repository, and use a compiler to validate them and generate financial reports. (GitHub)
  • Fava: This is the elegant web interface for Beancount. Fava reads your ledger file and gives you interactive balance sheets, income statements, trends, filters, and a powerful SQL-like query language to inspect your data. (Fava Demo)
  • beangulp: The modern framework for automating data ingestion. Evolved from Beancount's original importer, beangulp provides the tools to write robust importers that can parse CSV, OFX, QFX, and even PDF statements, turning raw bank data into structured Beancount entries. (GitHub)

A successful outsourcing relationship should preserve and enhance these strengths: version control, a human-readable history, strict validation, and the composability of your tools.


What to Outsource vs. What to Keep

The key to effective delegation is a clear division of labor. Here’s how to draw the line between tactical execution and strategic ownership.

Great Candidates to Outsource

These tasks are typically repetitive, rule-based, and time-consuming—perfect for a specialist.

  • Statement Collection & Importing: Downloading monthly statements, normalizing various file formats (CSV, OFX, PDF), and running your beangulp importers. This includes maintaining the importer rules as financial institutions inevitably change their statement formats.
  • Categorization Assistance: Building heuristics and declarative rules to categorize transactions. They can optionally use tools like smart_importer to predict postings based on historical data, but the final review always remains with a human.
  • Reconciliation & Integrity Checks: The meticulous work of posting balance assertions to match your statements, investigating discrepancies, and ensuring the ledger remains error-free.
  • Attachments & Document Hygiene: Fetching invoices and receipts, linking them to transactions with metadata, and archiving the source documents in a tidy, reproducible directory tree.
  • Month-End Close & Reporting: Preparing the standard suite of reports (P&L, Balance Sheet, Statement of Cash Flows) and providing Fava views or exports for your management updates.
  • AR/AP Ops & Payroll Prep: Preparing bills for payment, generating invoices, chasing collections, and staging payroll files for your final review and approval.
  • Tax Package Prep: At the end of the year, producing a clean trial balance, supporting schedules, and all the necessary files for your CPA or tax advisor.

Keep In-House (You Own the Intent and Risk)

These responsibilities are strategic and define the financial backbone of your business. They belong to you.

  • Chart of Accounts Design: The structure and naming conventions of your accounts reflect how you think about your business. This is your financial map.
  • Core Accounting Policies: Decisions on entity structure, revenue recognition, and capitalization policies have long-term financial and legal implications.
  • Final Approvals: You must retain the final say on all cash movements, including payments, payroll runs, and significant journal entries.
  • Strategic Finance: Forecasting, budgeting, and defining what "good" looks like for your business are fundamental owner responsibilities.

The Beancount-Native Outsourcing Workflow

Here’s what a structured, Git-based collaboration looks like in practice.

1) Repository Layout (Example)

Your repository is the single source of truth. A well-organized structure makes the process transparent and maintainable.

/ledger
main.beancount # Main ledger file, includes others
accounts/ # Chart of Accounts definition
includes/ # Monthly or yearly transaction files
prices/ # Price directives for commodities/stocks
metadata/ # Custom metadata declarations
plugins/ # Custom Beancount plugins
documents/ # Bank statements, receipts, invoices
/importers # beangulp importers + rules
config.yaml
bank_x.py
card_y.py
/scripts
import.sh # Orchestration script for importers
close_month.py # Month-end validation and reporting script
/reports
monthly/
year_end/
/ops
runbook.md # How to run the system
checklist.md # Procedural checklists (e.g., month-end)
controls.md # Documentation of financial controls

2) The Weekly Cycle

Routine work should follow a predictable rhythm, culminating in a clear deliverable for your review.

  1. Ingest: Your provider pulls statements and runs the beangulp importers to stage new transactions.
  2. Categorize: They apply categorization rules and, if used, smart_importer suggestions. This is followed by a human review to correct any ambiguities.
  3. Reconcile: They add balance assertions to match statement totals and investigate any differences. The use of pad directives should be rare and always require a clear explanation.
  4. Document: Relevant documents (receipts, invoices) are attached to transactions.
  5. Commit & Propose: The changes are committed with descriptive messages and a pull request is opened for your review, allowing you to see the exact diff of what changed in your books.

3) The Month-End Close (Minimum Viable)

Closing the books is a critical checkpoint to ensure accuracy and produce reliable reports.

  • Update price directives for any foreign currency or market-based securities.
  • Review outstanding items: accounts receivable, accounts payable, accruals, prepaid expenses, and loans.
  • Validate that all balance assertions pass and there are no other failing checks.
  • Tag the commit with the closing period (e.g., 2025-08-close) and export the standard reports.
  • Publish a Fava snapshot or provide a secure URL for the period.

4) The Year-End Package

The culmination of the year's work is a tidy, auditable package for your tax preparer. This includes a final trial balance, supporting schedules for key accounts (like fixed assets or inventory), and a reproducible script to regenerate every artifact directly from the Git repository.


Security & Access (Non-Negotiables)

A professional workflow prioritizes security and your ownership of the data.

  • Data Custody First: You own the private Git repository. Your provider should work from a fork and submit pull requests. They should never host the only copy of your ledger.
  • Bank Access: Provide read-only access whenever possible. If you must use an aggregator service, create isolated credentials and have a clear process for revoking them.
  • Secrets & Encryption: Use tools like GPG or age to encrypt sensitive documents at rest. Enforce multi-factor authentication on all services. Operate on the principle of least privilege.
  • Fava Access: You should self-host Fava or run it locally (fava ledger.beancount) and share access for review sessions via a secure tunnel or VPN. Avoid exposing it directly to the public internet.
  • Exit Plan: Insist on a "pull the cord" playbook. This should include escrow or guaranteed handoff of all scripts, configurations, and documentation. As recent events show, vendors can disappear overnight; your financial records must not be stranded with them.

What “Good” Deliverables Look Like (Every Month)

At the end of each month, you should receive two things: a technical artifact and a business summary.

1. A Clean Pull Request Containing:

  • All imported and reviewed transactions for the period.
  • A diff of any new or modified importer rules.
  • Commit messages that summarize key assumptions or manual adjustments.
  • A 100% green status on all balance assertions, with a log showing each account has been reconciled.
  • Links in the Beancount file to all attached documents, plus a report of any missing documents.
  • Updated price directives for investments or foreign currencies.

2. A Management Pack Containing:

  • Standard reports: P&L, Balance Sheet, and Statement of Cash Flows.
  • Key metrics like cash runway and budget vs. actual variance highlights.
  • Direct links to pre-filtered Fava views for deeper, interactive analysis.

Provider Types (And When They Fit)

Not all providers are the same. Match the provider to your stage and complexity.

  • Beancount-Savvy Bookkeeper: Perfect for handling the core workflow: steady importing, categorization, reconciliations, and preparing month-end report packs.
  • Boutique Accounting Firm: A good fit if you need additional services like managing AR/AP, payroll coordination, multi-entity consolidation, or tax preparation support.
  • Fractional Controller/CFO: The right choice when you need strategic oversight. They help design accounting policies, build financial forecasts, prepare board-ready reporting, and design internal controls.

Engagements are typically structured with a monthly retainer for routine work and an hourly rate for ad-hoc projects.


Interview Questions for Beancount Outsourcing

When vetting a potential provider, ask specific, technical questions to gauge their expertise.

  • Which beangulp importers have you personally built or maintained? Can you show me anonymized examples?
  • Will you deliver reproducible scripts and a runbook, or just the final output files?
  • How do you enforce data integrity in your process? (Look for answers involving balance assertions, review checklists, and maybe even CI/CD linting).
  • Do you use smart_importer? If so, what is your process for reviewing and overriding its predictions?
  • How do you propose we structure the Git workflow (e.g., branching strategy, PR templates, commit message conventions)?
  • What is your exit plan? What does the data handback process look like to ensure there is zero lock-in?
  • How do you run Fava in a secure way for client review sessions?

A Simple Statement of Work (SoW) You Can Copy-Paste

Use this as a starting point for your engagement agreement.

Scope of Work

- Weekly transaction imports via beangulp; includes rules maintenance for all connected financial institutions.
- Human-reviewed transaction categorization. Use of smart_importer for suggestions is permitted, but entries will not be auto-committed without review.
- Weekly reconciliations against statements, enforced with `balance` assertions. Variance notes will be provided for any unreconciled differences greater than $X.
- Document collection for all significant transactions; attachment hygiene and a monthly missing-documents report.
- Month-end close process, including price updates, accruals checklist, and delivery of Fava report links.
- Year-end package preparation, including a trial balance and supporting schedules for CPA review.

Deliverables

- A monthly pull request tagged "<YYYY-MM>-close" with all checks passing.
- Updates to the `/ops` folder, including diffs for `runbook.md` and `controls.md`.
- Final reports archived in `/reports/monthly` with a summary changelog.

Access & Security

- All work will be performed in the client-owned private Git repository. Vendor access is granted via a dedicated user, and all changes will be submitted via pull requests.
- Credentials will be scoped to read-only access where possible. Multi-factor authentication is required on all shared services.
- Sensitive documents will be stored using client-provided encryption keys and will be purged from vendor systems upon termination.

SLA & Cadence

- A weekly PR with reconciled transactions will be submitted every <Day of Week>.
- The month-end closing PR will be submitted by business day <N> of the following month.
- Standard response time for inquiries is <X> business hours; critical issue response is <Y> hours.

Exit Clause

- Upon termination, the vendor will hand back the complete repository, all scripts, documentation, and a map of all credentials used within <Z> business days. A 2-hour turnover call is included.

Tips That Save Hours (And Future Pain)

  • Name accounts for reconciliation. Structure your account names to include the institution and the last four digits of the account number (e.g., Assets:Bank:Chase:Checking:1234). This makes debugging trivial.
  • Assert balances at statement boundaries. Treat each bank statement as a verifiable checkpoint. A balance directive at the end of each statement period ensures errors are caught early and contained.
  • Automate price updates. Use Beancount's tools to fetch market prices automatically and record them with price directives. This is essential for accurate investment and foreign exchange reporting.
  • Keep rules declarative. Favor writing small, testable beangulp importers over building complex, ad-hoc scripts. Declarative rules are easier to maintain and debug.
  • Review with Fava, approve in Git. Use Fava's powerful interface to explore the changes and understand their impact. But the final approval happens by reviewing the diff in a Git pull request. Never let your books become a "black box."

Frequently Used Tools in This Stack

  • Beancount: Core engine and language documentation. (Docs)
  • beangulp: The standard for building importers. (GitHub)
  • smart_importer: Machine learning-aided predictions for categorization. (GitHub)
  • Fava: The indispensable web interface for visualizing your ledger. (Website)

The Bottom Line

Outsourcing for Beancount users isn’t about “giving up control.” It is the opposite. It’s about codifying your financial processes so that a specialist can execute them reliably on your behalf. You keep the repository, the scripts, the assertions, and the fundamental ability to regenerate any report from scratch. You delegate the work, not the ownership.

Accounting Solutions: The Top 7 Ways to Get Your Accounting Done

· 8 min read
Mike Thrift
Mike Thrift
Marketing Manager

Whether you’re running a side hustle from your laptop or scaling a fast-growing startup, you have a few reliable paths to keeping clean, accurate books. But which one is right for you? The best solution depends on your budget, your technical comfort, and how much control you want over your financial data.

Here’s a clear-eyed guide to the seven most common accounting options—what they’re good at, where they struggle, and when a modern solution like Beancount.io is the perfect fit.

2025-08-16-accounting-solutions-the-top-7-ways-to-get-your-accounting-done


1) Excel

This is often the first stop on the accounting journey for its sheer simplicity and universal availability.

  • Good for: Builders and DIY founders who love total control and already know their way around a spreadsheet.
  • Pros: The barrier to entry is practically zero, and thousands of free templates are available online. Its flexibility allows you to build custom financial models and track unique workflows that off-the-shelf software can't handle.
  • Cons: The biggest drawback is the immense manual workload. Every transaction must be entered and reconciled by hand, which is a massive time sink. Worse, it’s dangerously easy to introduce silent formula errors or typos with no guardrails to catch them. Collaboration and maintaining a clear audit trail are clunky without rigorous discipline.
  • Best if… you want a quick, no-frills start for a very simple business and you are exceptionally meticulous.

2) Google Sheets

The cloud-native cousin of Excel, Google Sheets offers the same core functionality with a collaborative twist.

  • Good for: Teams that need simple, shared spreadsheets for tracking income and expenses.
  • Pros: Built-in cloud backups and dead-simple sharing are the main advantages. You can work from any device with a web browser, making it accessible for teams on the go.
  • Cons: It suffers from the same fundamental flaws as Excel: a heavy manual workload and a high risk of user error. You may also run into compatibility quirks with certain templates and add-ons designed for the Microsoft ecosystem.
  • Best if… your team already runs on Google Workspace and you’re willing to accept the trade-offs of a manual system.

3) QuickBooks Online

For decades, QuickBooks has been the default choice for small businesses looking for dedicated accounting software.

  • Good for: Small businesses that want a "classic" SMB software experience with a large ecosystem of integrations.
  • Pros: Its signature feature is bank feeds, which automatically pull in transactions from your bank and credit card accounts, drastically reducing manual data entry. It provides a wide range of financial reports out of the box and is supported by a massive community of accountants and app developers.
  • Cons: While transactions are imported automatically, the system still requires your weekly attention to categorize expenses and reconcile accounts correctly. The interface can have a steep learning curve, and the cost can grow with add-on features. Most importantly, it creates vendor lock-in, making it difficult to export your financial history if you ever decide to leave.
  • Notes & Sources: As QuickBooks promotes, automated bank feeds are a core feature, but you’ll still be responsible for the review and categorization needed to keep your books accurate.

4) Xero

A popular, modern alternative to QuickBooks, Xero offers similar capabilities with a focus on clean design and user experience.

  • Good for: Business owners who prefer a more modern UI but need the same core capabilities as QuickBooks Online.
  • Pros: Xero also has robust bank feeds and powerful reconciliation tools that make matching transactions straightforward. Its clean design is often praised by users, and a large number of accountants are fluent in the platform.
  • Cons: The lower-priced tiers can have feature gaps (like limits on invoices or bills) that push you toward more expensive plans, and add-ons increase the total cost. And just like QBO, it faces the same "you still do the work" reality when it comes to the final categorization and review.
  • Notes & Sources: According to Xero, its automated bank feeds connect to thousands of financial institutions worldwide to power its core reconciliation workflows.

5) Accountants (CPAs)

Certified Public Accountants are highly trained financial experts who provide strategic advice, tax planning, and compliance services.

  • Good for: Tax strategy, navigating complex financial situations, handling audits, and getting one-off advisory.
  • Pros: A good CPA provides expert guidance on critical decisions like entity structure, tax optimization, and complex accounting treatments. Their oversight significantly reduces your risk on high-stakes financial matters.
  • Cons: Hiring a CPA firm for day-to-day bookkeeping is prohibitively expensive for most small businesses. To be effective, they still need you to provide timely, organized financial records.
  • What’s the difference from bookkeepers? In short, bookkeepers record and organize historical transactions, while accountants and CPAs interpret, report, and advise based on that data. (Investopedia, Intuit)

6) Traditional Bookkeepers

A bookkeeper is a professional responsible for the weekly or monthly task of recording and reconciling your financial transactions.

  • Good for: Business owners who want a dedicated person handling the weekly grind of bookkeeping.
  • Pros: Human oversight greatly reduces common categorization errors that software alone can miss. At the end of each month, they produce a clean set of financial statements for you to review.
  • Cons: This option is costlier than DIY software, with monthly retainers often starting in the hundreds of dollars. The turnaround time for reports and answers depends on your bookkeeper's availability and process.
  • Reality Check: For many small businesses, the combination of a great bookkeeper for weekly tasks and periodic CPA support for tax and strategy is a durable and effective combo. (Pioneer Accounting Group)

7) Beancount.io (Plain-Text Accounting, Supercharged)

This modern approach combines the control of spreadsheets with the automation of software and the precision of double-entry accounting.

  • Good for: Developers, finance pros, and detail-oriented founders who demand precision, transparency, and automation without black boxes.
  • What it is: Beancount.io is a platform built on the open-source Beancount methodology. Your entire financial ledger lives as human-readable plain text, which the platform transforms into real-time analysis, hosted Fava dashboards, and AI-assisted workflows.
  • Why teams choose it:
    • Scriptable & Auditable: Version-control your books with Git. Every single change is reviewable in a diff, just like code.
    • Hosted Fava UI: Instantly generate income statements, balance sheets, and interactive charts directly from your text-based ledger. No manual report building.
    • AI Assistance: Speed up transaction categorization and anomaly detection while keeping humans in the loop for final approval.
    • True Portability: Your core data is a simple text file. You can export it anytime. There is zero vendor lock-in.
  • Tradeoffs: There is a learning curve if you’ve never used double-entry accounting in a plain-text format. It's best suited for those who value absolute accuracy and control over the illusion of "push-button" convenience.

Prefer pure open source and self-hosting?

You can always run the Beancount open-source engine on your own machine and use Fava as the web UI. It’s incredibly powerful and free, but you will be responsible for managing the setup, backups, and data integrations yourself. Beancount.io handles all of that for you.


Quick Comparison (At a Glance)

SolutionYour Time InvestmentAutomation LevelHuman HelpData Control
ExcelHighLowNoneMedium
Google SheetsHighLowNoneMedium
QuickBooks OnlineMediumMedium-HighOptionalLow
XeroMediumMedium-HighOptionalLow
Accountants (CPAs)LowN/AHigh (Advisory)Medium
Traditional BookkeepersLowN/AHigh (Weekly)Medium
Beancount.ioLow-MediumHighOptionalHigh

How to Choose

  • Want maximum control, auditability, and developer-grade workflows? Choose Beancount.io. You get hosted Fava dashboards, AI assistance, and the freedom of plain-text portability.
  • Want someone to “just handle it”? Hire a bookkeeper and keep a CPA on call for taxes and strategic questions.
  • Comfortable in traditional SMB software ecosystems? QuickBooks or Xero are fine choices—just be sure to budget time each week to review and reconcile your transactions.
  • Just testing the waters on a tight budget? Spreadsheets can work for a short time. Treat them as a stepping stone to a real system, not the final destination.

Why Plain-Text Accounting is Having a Moment

Plain-text accounting (PTA) tools like Beancount are gaining traction because they emphasize reproducibility, version control, and transparency. These are values that resonate deeply with engineers, data scientists, and finance pros. If you believe your company's books should be as clear and reviewable as your code, you’re in the right place. (plaintextaccounting.org)

Ready to see your ledger come alive?

Spin up a free Beancount.io workspace, import a small sample of last month’s transactions, and open the hosted Fava dashboard. You'll see your income statement and balance sheet appear instantly—then you can refine your categories with AI assistance.

Beancount.io vs. Traditional Accounting Software: Which One Fits You Best?

· 7 min read
Mike Thrift
Mike Thrift
Marketing Manager

For decades, the world of business accounting has been dominated by a familiar cast of closed, GUI-based systems like QuickBooks, Xero, and FreshBooks. They have set the standard, offering ease-of-use and visual workflows that cater to non-technical users. But for developers, power users, and anyone who values absolute transparency and control, a radically different approach has emerged: Beancount.io.

This article provides a direct comparison of Beancount.io with traditional accounting software. We'll break down their core differences in philosophy, flexibility, cost, and long-term maintainability to help you decide which system truly fits your needs.

2025-08-08-beancount-io-vs-traditional-accounting-software

1. Philosophy and Workflow

The most fundamental difference between these two approaches lies in their core philosophy.

Beancount.io Beancount.io is built on the philosophy of plain-text accounting. At its heart, every single financial transaction is an entry in a simple text file. This "accounting as code" model prioritizes human-readable, version-controllable records. Your financial data lives in a timeless, open format that you own completely—it can never be locked away by a vendor. This workflow is designed for users who are comfortable with code editors, version control systems like Git, and command-line tools.

Traditional Software Traditional accounting platforms are GUI-based and form-driven. You enter data using wizards, dropdown menus, and visual forms. This approach prioritizes immediacy and accessibility, making it easy for non-technical users to get started without a steep learning curve. However, your data is stored in a proprietary format or a cloud database, often requiring complex export and import procedures if you ever decide to migrate to another service.

Verdict: If you prioritize full control, data ownership, transparency, and automation, Beancount.io is the clear winner. If you need a "click and go" interface with a minimal learning curve, traditional software will feel more natural.

2. Flexibility and Customization

How well can the software adapt to your specific needs?

Beancount.io Being 100% scriptable is Beancount.io’s superpower. It integrates seamlessly with Python, allowing you to connect to any API, automate data fetching from bank feeds, programmatically tag transactions based on complex rules, and generate custom reports tailored to your exact specifications. Your ability to extend and customize is practically infinite, free from any vendor-imposed limitations.

Traditional Software These platforms offer a curated selection of integrations with popular tools like PayPal, Stripe, and various payroll services. While convenient, you are operating within the vendor's walled garden. Customization is limited to what the platform allows, and advanced reporting or automation often requires upgrading to a higher-tier plan or purchasing third-party add-ons. You can work with their APIs, but you'll always be bound by their ecosystem's rules and rate limits.

Verdict: Beancount.io provides unmatched flexibility for developers and technical users. Traditional tools are better suited for standard, plug-and-play workflows with popular business applications.

3. Collaboration and Transparency

How you work with others and audit your records differs significantly.

Beancount.io Collaboration on Beancount.io is managed through Git. This makes every change to your financial ledger completely transparent and auditable. You can see who changed what, when, and why—just like a code review workflow. This is ideal for distributed teams that already embrace tools like GitHub or GitLab. Furthermore, there are no hidden calculations; every number in a report can be traced back to the exact line-item entry in your ledger file, ensuring complete auditability.

Traditional Software Collaboration is handled through built-in user roles and permissions. You can invite your accountant, bookkeeper, or business partners to access the books directly through the web interface. This is highly effective for businesses that follow a traditional model of financial oversight. The downside is that some internal operations, like tax calculations or automated balance adjustments, can be opaque "black boxes," making it difficult to independently verify the logic.

Verdict: Beancount.io is perfect for teams that value granular auditability and code-style collaboration. Traditional systems are more accountant-friendly for real-time, shared GUI access.

4. Cost and Ownership

The financial models and the concept of data ownership are worlds apart.

Beancount.io The core Beancount software is open-source and free. You only pay for the value-added services of Beancount.io, which include hosting, intelligent automation, and premium features. There are no per-seat licensing fees, so you can scale your team without incurring extra costs. Most importantly, there is zero vendor lock-in. Your data is a collection of text files that you can move, edit, or store anywhere, anytime.

Traditional Software These services operate on a subscription model, typically billed monthly or yearly. Pricing is often tiered based on features, and you may face per-user or per-company fees that scale with your organization. This creates a dependency; if you stop paying, you risk losing access to your data and the software's functionality. This vendor lock-in is a significant long-term risk.

Verdict: Beancount.io is significantly more cost-effective in the long run, especially for technical teams that value data sovereignty. Traditional software offers predictable subscription costs but creates long-term dependency.

5. Learning Curve and Adoption

How quickly can you get up and running?

Beancount.io The learning curve is undeniably steeper. Adopting this system requires comfort with text-based editing, understanding basic syntax, and familiarity with tools like Git. However, the initial investment pays off. Once mastered, Beancount enables incredibly fast, repeatable workflows and provides a much deeper, foundational understanding of your financial picture.

Traditional Software These platforms are designed for non-technical business owners and offer minimal onboarding friction. You can be up and running, sending invoices and categorizing expenses, within minutes. That said, learning the more advanced features, such as custom report building or setting up multi-entity accounting, still requires a significant time investment.

Verdict: Beancount.io is the right choice if you're willing to invest time in learning a powerful system. Traditional software is faster to start with for non-technical users who need immediate results.

Side-by-Side Comparison

FeatureBeancount.ioTraditional Accounting Software
Core PhilosophyAccounting as code; plain-text ledgerGUI-based; form-driven
Data FormatOpen (Plain Text)Proprietary (Database)
Data Ownership100% user-owned and portableVendor-controlled; potential lock-in
FlexibilityInfinite; fully scriptable with PythonLimited to vendor's ecosystem & APIs
CollaborationGit-based; transparent change historyRole-based user permissions
TransparencyFully auditable; no hidden calculationsSome calculations can be opaque
Cost ModelOpen-source core; pay for hosting/automationMonthly/annual subscription (SaaS)
Learning CurveSteeper for non-technical usersLow; designed for quick start
Ideal UserDevelopers, power users, data analystsSMB owners, non-technical teams

When to Choose Each

The decision ultimately comes down to your team's skills, priorities, and workflow.

Choose Beancount.io if you:

  • Are a developer, data analyst, or technically-inclined power user.
  • Value absolute transparency, control, and long-term data portability above all else.
  • Want to fully automate your accounting and integrate it deeply into your custom workflows.
  • Are comfortable treating your financial records with the same rigor as source code.

Choose Traditional Accounting Software if you:

  • Want a quick-start, visual interface without any technical setup.
  • Need to provide immediate, accountant-friendly access with minimal training.
  • Prefer a managed, hosted solution where the vendor handles all updates and compliance.
  • Your integration needs are met by popular, off-the-shelf apps.

Final Thoughts

Beancount.io isn’t trying to be a better QuickBooks—it’s a fundamentally different way of thinking. It represents accounting as code. For technical professionals, this shift offers the same leap forward that version control with Git brought to software development: complete transparency, perfect reproducibility, and ultimate control.

At the same time, traditional accounting software continues to win on out-of-the-box ease-of-use and ready-made integrations for non-technical teams. The right choice isn't about which is "better" overall, but which is the perfect fit for your workflow, your priorities, and the degree of control you demand over your financial data.

Beyond Pass-Through: The Complete S-Corp Tax Guide for Beancount Users (2025)

· 7 min read
Mike Thrift
Mike Thrift
Marketing Manager

You formed an S-corp to keep your business lean and tax-efficient. But while the "pass-through" concept sounds simple, the reality involves payroll taxes, potential entity-level charges, and crucial state-by-state differences.

Here’s how the taxes actually work for an S-corp in 2025—and how to keep a clean, audit-proof record in Beancount.

2025-07-26-s-corp-tax-guide-for-beancount-users


What Gets Taxed (and Where)

The core of the S-corp structure is how it handles profit. It's a three-part system: pass-through income, entity-level taxes, and payroll taxes.

  • Pass-Through at the Federal Level: An S-corp generally pays no federal income tax on its ordinary business profit. Instead, that profit (along with other tax items like credits and deductions) flows through to the shareholders via a Schedule K-1. Shareholders report this income on their personal tax returns, whether or not they actually took the cash out of the business. Crucially, this K-1 profit is not subject to self-employment tax.
  • But... Entity-Level Taxes Can Apply: The "no corporate tax" rule isn't absolute. In specific cases, an S-corp may owe tax directly. The most common triggers are the built-in gains (BIG) tax (for recent C-corp conversions) and the excess net passive income tax.
  • Payroll Taxes Are Real: This is the most important rule for shareholder-employees. If you work in your business, you must be paid reasonable compensation as W-2 wages before you take any tax-favored distributions. These wages are subject to FICA (Social Security & Medicare) and income tax withholding, just like any other employee's pay.

Payroll, at a Glance (2025) payroll

For any shareholder-employee, you'll be running payroll and filing standard payroll tax forms, including quarterly Form 941 (for income tax withholding and FICA) and annual Form 940 (for federal unemployment tax, or FUTA).

The key 2025 rates are:

  • Social Security (OASDI): The wage base is $176,100. The tax rate is 6.2% for the employee and 6.2% for the employer on wages up to this cap.
  • Medicare: There is no wage cap. The rate is 1.45% for the employee and 1.45% for the employer on all wages.
  • Additional Medicare Tax: A 0.9% tax is withheld from an employee's wages that exceed $200,000 in a year. There is no employer match for this portion.

Entity-Level Taxes You Might See

While less common, you must be aware of taxes the S-corp itself might owe.

  • Built-in Gains (BIG) Tax: If you converted your business from a C-corp to an S-corp, you face a 5-year recognition period. If you sell appreciated assets that the company held during its C-corp days within this window, the S-corp itself will owe a corporate-rate tax on those gains. This is calculated on Schedule D of Form 1120-S.
  • Excess Net Passive Income Tax: This applies if your S-corp has accumulated earnings & profits (AE&P) from a prior life as a C-corp and its passive income (like rents, royalties, and interest) exceeds 25% of its gross receipts.
  • Quarterly Estimates for These Taxes: If you expect the total of BIG tax, passive income tax, and certain other recapture taxes to be $500 or more, the S-corp must make quarterly estimated payments. For 2025, the calendar-year due dates are April 15, June 16, September 15, and December 15.

State & Local Gotchas 🗺️

Never assume federal rules apply at the state or city level. Tax treatment varies widely.

  • California: S-corps must pay an $800 minimum franchise tax each year, plus a 1.5% tax on net income.
  • New York City: NYC does not recognize the S-corp election. A federal S-corp is generally subject to the full NYC General Corporation Tax.
  • Elective Pass-Through Entity (PTE) Taxes: As a workaround to the federal $10,000 SALT deduction cap, many states now allow S-corps to elect to pay state income tax at the entity level. The rules are complex and shifting—talk to your CPA before making a PTE election.

What the Owners Pay

As a shareholder, your personal tax picture is directly linked to the S-corp's performance.

  • K-1 Income on Your 1040: You will report the income, losses, deductions, and credits passed through to you on your Schedule K-1 on your personal Form 1040.
  • Quarterly Estimated Taxes: Since your K-1 income doesn't have taxes withheld, you will likely need to make personal quarterly estimated tax payments to the IRS using Form 1040-ES to avoid underpayment penalties.
  • The QBI Deduction (Section 199A): Your pass-through income may qualify for the valuable Qualified Business Income (QBI) deduction, which can be up to 20% of your business income. At higher income levels, this deduction can be limited by the amount of W-2 wages the S-corp pays—making your "reasonable compensation" figure even more important.

Baseline Filing & Forms

At a minimum, your annual compliance will include:

  • Form 1120-S: The S-corporation income tax return.
  • Schedule K-1: For each shareholder.
  • Payroll Forms: Quarterly 941s, annual 940, and W-2s/W-3s for employees.
  • Form 1099-NEC: For payments of $600 or more to most independent contractors.

Beancount: Map It So You Never Wonder “Where Did That Go?”

A clear chart of accounts is essential for tracking these moving parts.

Starter Accounts

Assets:Bank:Operating
Assets:PrepaidTax:Federal ; For S-corp level estimated payments
Expenses:Payroll:Wages
Expenses:Payroll:Employer:SocialSecurity
Expenses:Payroll:Employer:Medicare
Expenses:Payroll:Employer:FUTA
Expenses:Tax:Federal:S-Corp ; For BIG/passive income tax expense
Liabilities:Payroll:Withholding:{Federal,SocialSecurity,Medicare}
Equity:Distributions

Transaction Examples

Run Payroll (Company side + withholdings)

2025-02-28 * "Payroll - February"
Assets:Bank:Operating -10350.00 USD
Expenses:Payroll:Wages 12500.00 USD
Expenses:Payroll:Employer:SocialSecurity 775.00 USD
Expenses:Payroll:Employer:Medicare 181.25 USD
Liabilities:Payroll:Withholding:Federal -3000.00 USD
Liabilities:Payroll:Withholding:SocialSecurity -775.00 USD
Liabilities:Payroll:Withholding:Medicare -181.25 USD

Owner Distribution (Non-wage)

2025-03-10 * "Shareholder distribution"
Assets:Bank:Operating -5000.00 USD
Equity:Distributions 5000.00 USD

Corporate-Level Estimated Tax (If applicable)

2025-04-15 * "1120-S entity-level estimate (BIG/passive tax)"
Assets:Bank:Operating -1200.00 USD
Assets:PrepaidTax:Federal 1200.00 USD

Marking Key Filing Dates

2026-03-15 note "E-filed 2025 Form 1120-S; furnished K-1s to all shareholders."

Sanity Checks (bean-query)

Use queries to ensure your records are sound.

Wages vs. Distributions YTD (Reasonable Comp Reality Check)

SELECT account, SUM(position)
WHERE (account ~ "Expenses:Payroll:Wages" OR account ~ "Equity:Distributions")
AND year = 2025
GROUP BY account;

Did We Record the K-1 Handoff?

SELECT date, narration WHERE narration ~ "K-1";

Practical Tips (So the IRS Doesn’t Call) ✅

  1. Document "Reasonable Compensation." Keep a simple memo with your job duties, time allocation, and links to market salary data. Pay this amount via formal W-2 payroll.
  2. Separate Wages and Distributions Cleanly. Never mix them. Your Beancount ledger should make the distinction obvious.
  3. Watch State Rules. Be aware of minimum taxes (like in CA) or S-corp non-recognition (like in NYC).
  4. Revisit Estimates. If your income changes significantly mid-year, adjust both your personal 1040-ES and any S-corp level estimated payments.

This guide provides general information, not tax advice. Every business situation is different. Always consult with a qualified CPA for guidance specific to your circumstances.

Thriving in a Slow-Growth Economy — with Beancount

· 6 min read
Mike Thrift
Mike Thrift
Marketing Manager

The economic tea leaves are in, and they're not exactly screaming "boom." As of July 2025, the latest figures paint a picture of an economy that has decidedly cooled its jets. Let's look at the data.

The Macro Backdrop (July 2025)

2025-07-05-thriving-in-a-slow-growth-economy-with-beancount

  • Inflation: After years of volatility, U.S. consumer prices have settled but remain a factor, running at +2.7+2.7% year-over-year as of June 2025 (Bureau of Labor Statistics, Trading Economics). While down from post-pandemic highs, this rate still erodes purchasing power and puts pressure on margins.
  • Growth: The long expansion has officially ended. Real GDP slipped by an annualized rate of 0.3-0.3% to 0.5-0.5% in the first quarter of 2025, signaling a contraction (Bureau of Economic Analysis, Trading Economics).

A tepid economy isn't a crisis—it's a clarion call. It demands sharper visibility into your cash flow, a ruthless approach to costs, and a clear-eyed view of opportunities. This is where plain-text accounting, specifically with Beancount, becomes a strategic advantage. It gives you complete control over your financial data, without the SaaS lock-in or ever-rising subscription fees of commercial software.


Five High-Leverage Levers (and How Beancount Makes Them Easy)

In a slow-growth environment, small, intelligent actions have an outsized impact. Here are five strategies you can implement immediately with a Beancount ledger.

StrategyHow to Execute in Beancount
Keep books currentAutomate ingestion. Run bean-extract nightly, or schedule a GitHub Action that fetches bank feeds and commits new transactions to your ledger. Real-time data means no surprises.
Monitor cash flowQuery weekly. Track your net monthly flow with a simple query. Save it as a favorite in Fava, Beancount's web interface, for one-click access: SELECT year, month, SUM(convert(position, 'USD')) WHERE account ~ 'Income:Expenses' GROUP BY year, month
Diversify revenueIsolate experiments. Test a new product or service by creating a dedicated income account, like Income:Consulting:SideHustle, and tagging all related transactions with #pilot-project. This makes calculating ROI trivial.
Trim fat fastSurface big spenders. Need to make cuts? This query instantly shows your top 10 expense categories, pointing you directly to where you can save the most: bean-query main.bean "SELECT account, SUM(number) WHERE account =~ '^Expenses' GROUP BY account ORDER BY SUM DESC LIMIT 10"
Re-invest intelligentlyRing-fence profits. At the end of each month, calculate your net profit and programmatically sweep a portion to a dedicated account. This isn't just saving; it's explicitly allocating capital for future growth or opportunities.

Automate the Busywork, Guard Your Time

Your most valuable asset is your time, which should be spent on analysis, not data entry. Beancount’s plain-text nature makes automation a first-class citizen.

  • Helper Scripts: The Beancount ecosystem is rich with community-built tools. Price fetchers can pull daily market values for your investments. Importers for services like PayPal, Stripe, or Splitwise can parse statements and append formatted entries to your ledger while you sleep.
  • Pre-commit Hooks: If you store your ledger in Git (and you should), you can use a pre-commit hook to run bean-check on every change. This simple script lints your file, catching typos and balancing errors before they ever get committed to your main branch.
  • Git = Audit Trail: Every commit is a story. git blame shows you who changed a transaction and when. git log provides a complete, immutable history of your financial decisions. It's the most robust audit trail imaginable.

Build Financial Resilience

A slow economy rewards the prepared. Use Beancount to build a financial fortress that can withstand uncertainty.

  • Emergency Buffer: Make saving non-negotiable. After calculating your monthly profit, create a standing transaction to move a fixed percentage (e.g., 10%) to a dedicated emergency fund.

    ; Assuming July profit was $4,500. 10% = $450.
    2025-07-31 * "Monthly Profit Sweep" "Move 10% of profit to emergency fund"
    Expenses:ProfitSweep 450.00 USD
    Assets:Savings:Emergency

    This isn't an expense in the traditional sense, but booking it this way "hides" the cash from your operating accounts, making it less tempting to spend.

  • Scenario Modeling: What happens if revenue drops 15%? Or if your costs increase by 5%? With a plain-text ledger, you don't need complex software to find out. Just copy your entire ledger file to a scenarios/ directory, tweak the numbers, and run a report.

    # See the impact on your bottom line in seconds
    bean-report scenarios/pessimistic_q3.bean income_statement

Double-Click on Niche Data

Beancount's flexibility allows you to track anything. Use metadata to enrich your transactions with business context.

2025-07-15 * "The Meow-Box" "Monthly Cat-Toy Subscription"
Income:Subscriptions -19.99 USD
Assets:Bank:Checking
; market: "Pet-DTC"
; customer-id: "CUST-86753"

With this data embedded directly in your ledger, you can ask sophisticated questions. A simple bean-query can now reveal the total revenue, churn, or lifetime value for your "Pet-DTC" market segment:

bean-query my-ledger.beancount "SELECT SUM(convert(position, 'USD')) WHERE meta('market') = 'Pet-DTC'"

Your Next Steps

Reading about it is one thing; doing it is another. Here’s how to get started this week:

  1. Import Your 2024 Backlog: Get your historical data from 2024 into Beancount. This will make your 2025 reports and year-over-year comparisons truly apples-to-apples.
  2. Schedule Two Standing Queries: Save the cash-flow and top-10-expenses queries. Set a calendar reminder to run and review them every Friday. Make it a ritual.
  3. Allocate 10% of Profit: Implement the profit sweep. Start with 10% and commit to moving that capital to a separate reinvestment or emergency account each month. Revisit the ratio quarterly.

Slow growth rewards those who see their numbers clearly, act decisively, and build robust systems. With a text ledger, a handful of scripts, and the playbook above, you’ll do more than just survive the downturn—you’ll use it as an opportunity to compound your financial strength.

A Guide to Choosing the Right Tax Advisor

· 6 min read
Mengjia Kong
Mengjia Kong
IRS Enrolled Agent

Meticulous financial records are the foundation of financial clarity and stress-free tax seasons. For those dealing with more than just a simple W-2, preparing for tax filing, strategic planning, and ensuring compliance can be a significant challenge. This guide will help you determine when to hire a tax advisor and how to select the best expert to complement your financial management system.

Why You Might Need a Tax Advisor

2025-06-28-a-guide-to-choosing-the-right-tax-advisor

Even with diligent tracking, modern finances can quickly become complex. A professional can be invaluable in several key areas:

  • Mitigating Risks from Complex Situations Self-employment income, digital asset trading, international transactions, or equity in a private company can make your tax filings incredibly complicated. A professional advisor minimizes errors and reduces the risk of costly penalties.
  • Uncovering Tax-Saving Opportunities Expert insight is necessary to fully leverage deductions, tax deferrals, and tax-advantaged accounts like a Solo 401(k) or SEP IRA. An advisor can identify opportunities you might have missed.
  • Saving Valuable Time Your time is better spent building your business, writing code, or creating content than deciphering thousands of pages of tax code. Outsourcing complex tax matters allows you to focus on what you do best.

Common Types of Tax Advisors and When to Hire Them

RoleTypical ExpertiseWhen to Consider Hiring
CPA (Certified Public Accountant)Tax return preparation and planning, IRS representation, bookkeeping, business acquisitions, financial statement compliance, audit opinions.When forming or restructuring a business, requiring GAAP-compliant financials, or needing comprehensive business financial services.
Enrolled Agent (EA)Tax return preparation and planning, IRS representation. Specializes exclusively in tax matters.When you receive a notice from the IRS, need focused tax expertise, or want a cost-effective solution for personal or small business tax needs.
Tax AttorneyTax return preparation and planning, IRS representation, tax litigation, multi-state/international tax law, complex compliance issues.When facing potential tax litigation, designing complex equity compensation plans, navigating major asset acquisitions, or dealing with criminal tax matters.

Important Note: Only CPAs, Enrolled Agents, and Tax Attorneys can represent clients before the IRS. While anyone can prepare tax returns, these three credentials are the only ones that allow professionals to represent you in IRS proceedings. Tax attorneys have the additional privilege of representing clients in tax court litigation.

Pro Tip: If you frequently trade digital assets or have foreign transactions, seek an advisor with specific experience in cryptocurrency or international tax law.

Five Criteria for Evaluating and Selecting an Advisor

  1. Domain Expertise Verify that the advisor has experience with clients in your specific situation, whether it's freelancing, running a SaaS business, or managing Web3 investments.
  2. Communication Style Find an advisor who values organized, detailed financial records. Ask how they prefer to receive your financial data and what level of documentation they require. Their response will indicate their attention to detail and professionalism.
  3. Credentials and Standing Confirm that their CPA license, EA credential, or bar license is active and in good standing with the relevant regulatory body.
  4. Fee Structure
    • Flat Fee: Common for standard tax forms (e.g., Form 1040, 1065).
    • Hourly Rate: Suitable for one-off consultations or complex planning.
    • Hybrid Model: A flat fee for tax preparation combined with an hourly rate for strategic planning.
  5. Data Collaboration Workflow An ideal advisor wants clean, organized data. Ask about their process for receiving and integrating your financial records to ensure a smooth workflow.

The Power of a Well-Kept Ledger

The key to an efficient and productive relationship with a tax advisor is providing them with flawless, easily digestible financial data. This is where a systematic approach to bookkeeping shines. By treating your finances like a transparent, auditable dataset, you empower your advisor to work faster and more accurately.

This is where a plain-text accounting tool like Beancount becomes a superpower. It allows you to maintain a perfect, version-controlled ledger of every transaction. With Beancount available on mobile and tablet devices, you can do bookkeeping anywhere—whether you're at a coffee shop, traveling, or waiting between meetings. This mobility eliminates the need to hire a separate bookkeeper, saving you significant costs while maintaining complete control over your financial records.

Here's how to structure your data to make your advisor's job effortless:

  • Align Accounts with Tax Form Fields Structure your chart of accounts to mirror tax categories. Use precise account names like Income:US:Consulting or Expenses:Business:HomeOffice. This helps your CPA instantly map your data to the necessary forms, like Schedule C or Form 8829.

  • Leverage Metadata and Tags Tagging transactions provides crucial context. For instance, you can mark income sources to reconcile them with specific 1099 forms. A simple entry in a Beancount ledger might look like this:

2025-03-21 * "Stripe Payout for Project X"
Assets:Bank:Checking 5000.00 USD
Income:US:Consulting -5000.00 USD
tag: "1099k"

This tag instantly tells your advisor the nature of the income, saving time and preventing confusion.

  • Generate Instant, Accurate Reports A well-maintained ledger allows you to generate up-to-the-minute financial statements. Tools like Beancount can export clean income statements and balance sheets to HTML or CSV, so your advisor always has the latest data without needing to ask.

By adopting a system like this, you move from chaotic spreadsheets to a pristine, single source of truth for your financial life.

When to Seek Professional Help Immediately

  • You are planning to start a business and need to decide on entity type (sole proprietorship, partnership, LLC, C-Corp, S-Corp) or are changing your business entity.
  • You are granting or receiving equity, or planning to sell your company.
  • You hold foreign assets or have foreign sources of income.
  • You are planning a large-scale sale of cryptocurrency assets.
  • You have received an audit or tax notice from the IRS.

Conclusion

Mastering your financial data gives you control, while a great tax advisor helps you navigate the complex maze of regulations. By choosing the right professional and empowering them with clean, structured financial data, you can transform tax season from a source of stress into a seamless process. A system built on clarity and precision—as exemplified by tools like Beancount—is the key to a productive partnership and a confident financial future.

Bookkeeping vs. Accounting: What’s the Difference, and Where Does Beancount Fit?

· 3 min read
Mike Thrift
Mike Thrift
Marketing Manager

When you're running a business or managing your personal finances, the terms bookkeeping and accounting often blur together. But understanding their differences—especially when using a plain-text tool like Beancount—can help you build better systems and make smarter financial decisions.

In this guide, we’ll explore the roles of bookkeeping and accounting, and how Beancount supports both (yes, really).

2025-06-27-accounting-vs-bookkeeping

📘 Bookkeeping: The Art of Daily Tracking

Bookkeeping is the foundational layer of financial management. It’s about recording what actually happened—no assumptions, no forecasts.

Bookkeeping includes:

  • Recording income and expenses
  • Keeping track of assets and liabilities
  • Tagging transactions for later use
  • Maintaining a general ledger

In Beancount, this looks like:

2025-06-27 * "Stripe Payout"
Assets:Bank:Checking 1,200.00 USD
Income:Sales

Each transaction is a building block. You’re not analyzing yet—you’re simply recording the truth, one line at a time.

If you're just starting out, Beancount encourages good bookkeeping habits through its explicit structure and readable syntax. You’ll be forced (in a good way!) to track every cent and explain every transaction.

📊 Accounting: Turning Data Into Insight

Accounting builds on your bookkeeping records to answer deeper questions:

  • Are we profitable?
  • How much cash runway do we have?
  • Should we prepay for that software or expense it monthly?
  • How do we minimize taxes?

In accounting, you:

  • Reconcile accounts and adjust entries
  • Generate reports like profit/loss statements
  • Depreciate assets
  • Plan for taxes and future expenses

With Beancount, you can analyze your records using tools like beancount.io:

  • Navigate balance sheets, income statements, and cash flow charts
  • Visualize income by category
  • Annotate decisions using metadata (e.g., tag:business-trip)

Want to track that annual Zoom subscription?

2025-01-15 * "Zoom Annual Plan"
Expenses:Software 149.90 USD
Assets:Bank:Checking
tag:business-tools

You can later amortize it monthly or analyze it during budgeting sessions.

👩‍💼 Bookkeeper vs. Accountant: Who Does What?

  • Bookkeeper: Focuses on precision. Records, categorizes, and organizes.
  • Accountant: Adds interpretation. Advises, plans, and models outcomes.

Beancount empowers you to be both, or to cleanly hand off one layer to a professional.

For example:

  • As a founder, you may do your own bookkeeping with Beancount.
  • At tax season, you export reports or raw data for your accountant to finalize.

🛠️ Bookkeeping and Accounting Software: Where Does Beancount Belong?

Most mainstream tools (e.g., QuickBooks, Xero) blur the line between bookkeeping and accounting. Beancount takes a different approach:

  • You manage everything through plain text, stored in version control if you like.
  • There's no hiding of transactions or behind-the-scenes magic.
  • You're encouraged to understand your own books.

Beancount is ideal for those who value transparency, data integrity, and automation through open-source tools.

🧠 Why This Distinction Matters

Knowing the difference between bookkeeping and accounting helps you:

  • Stay compliant and audit-ready
  • Understand where to invest time (daily tracking vs. monthly insights)
  • Communicate clearly with financial professionals
  • Scale your financial systems without drowning in complexity

🪄 Final Thought: Your Ledger, Your Rules

Whether you're a solo creator or a small business owner, Beancount gives you the power to manage your books with precision—and eventually make strategic decisions like a CFO.

Remember:

  • Bookkeeping = what happened
  • Accounting = what it means

With Beancount, you’re building both layers with clarity and confidence.

Let me know if you'd like a printable version or a tutorial follow-up.

Beancount for Small Business Owners

· 4 min read
Mike Thrift
Mike Thrift
Marketing Manager

Bookkeeping Basics You Can Actually Understand—and Own

Managing your own books doesn’t have to mean spreadsheets, stress, or expensive software. Beancount gives you a minimalist, auditable, and powerful way to do bookkeeping using just plain text and a double-entry accounting system.

2025-06-25-beancount-for-small-businesses

This guide is your complete introduction to getting your small business books in order with Beancount—with real examples and step-by-step direction.

🧾 What Is Beancount?

Beancount is an open-source plain-text accounting system built around double-entry bookkeeping. You write your transactions in .beancount files and use tools like bean-doctor, bean-report, or Fava to analyze and visualize your books.

Here’s a basic transaction:

2025-06-01 * "Client Payment: Invoice #123"
Assets:Bank:Business:Checking 1,200.00 USD
Income:Consulting -1,200.00 USD

It's readable, scriptable, and version-controllable—perfect for business owners who want transparency and control.

📌 Why Bookkeeping Matters (and Why Beancount)

  • You need it for taxes
  • You need it for clarity
  • You need it for funding
  • You need it to catch mistakes early

And with Beancount, you can do all of this with just a text editor and a few tools.

🪜 8 Steps to Start Doing Your Own Bookkeeping with Beancount

1. Separate Business & Personal Finances

Open a separate business checking account and credit card. Reflect that in Beancount:

2025-06-01 open Assets:Bank:Business:Checking USD
2025-06-01 open Liabilities:CreditCard:Business USD

This keeps your books clean and protects you legally (especially if you're an LLC or corporation).

2. Use Double-Entry Bookkeeping

Every financial event affects two accounts. Beancount forces this balance by design:

2025-06-05 * "Web hosting payment"
Expenses:Hosting 15.00 USD
Assets:Bank:Business:Checking -15.00 USD

This guarantees mathematical integrity across your ledger.

3. Choose Cash or Accrual Basis

  • Cash Basis: Only record income/expenses when money is received/spent.
  • Accrual Basis: Track obligations (Accounts Payable/Receivable).

Cash basis example:

2025-06-10 * "Client payment received"
Assets:Bank:Business:Checking 800.00 USD
Income:Sales -800.00 USD

Accrual basis example (invoice sent, then payment received):

2025-06-01 * "Invoice #2001 issued"
Assets:AccountsReceivable 800.00 USD
Income:Sales -800.00 USD

2025-06-15 * "Payment received for Invoice #2001"
Assets:Bank:Business:Checking 800.00 USD
Assets:AccountsReceivable -800.00 USD

4. Set Up Your Chart of Accounts

Define your categories clearly. A minimalist example:

2025-01-01 open Income:Sales USD
2025-01-01 open Expenses:Software USD
2025-01-01 open Expenses:Meals USD
2025-01-01 open Equity:Owner USD

Tailor these to your business. Keep it consistent and descriptive.

5. Categorize Transactions (with Metadata)

Use metadata to track context. This helps with deductions, audits, and clarity.

2025-06-18 * "Team lunch after Q2 milestone"
Expenses:Meals 90.00 USD
Assets:Bank:Business:Checking -90.00 USD
; business_purpose: Q2 celebration
; attendees: Alice, Bob, Tian

Add tags or links to receipts:

  ; receipt: ./receipts/2025-06-18-lunch.jpg

6. Store Supporting Documents

Use Dropbox, Google Drive, or a receipts/ folder. Then link them in Beancount like:

2025-06-02 * "Domain Renewal - GoDaddy"
Expenses:Hosting 20.00 USD
Assets:Bank:Business:Checking -20.00 USD
; receipt: ./receipts/domain-godaddy.pdf

Auditors and tax professionals will love you.

7. Organize for Deductions

Mark deductible expenses clearly:

2025-06-03 * "Adobe Creative Cloud Subscription"
Expenses:Software 60.00 USD
Assets:Bank:Business:Checking -60.00 USD
; deductible: true
; usage: 100% business

Use custom metadata or tags like #deductible to track potential write-offs.

8. Make It a Habit

Create a workflow. Example:

# Weekly bookkeeping routine
git pull origin main
bean-extract transactions.csv >> ledger.beancount
bean-doctor ledger.beancount
bean-check ledger.beancount
fava ledger.beancount

Or just commit to a "Beancount Friday" and reconcile everything weekly.

💼 DIY or Hire Help?

You can do it all yourself with Beancount. But even power users should:

  • Consult a CPA during setup
  • Hire an accountant at tax time if needed
  • Use Fava for monthly reports

You get all the power of an accounting system without vendor lock-in or subscription fees.

  • Fava – beautiful web dashboard for Beancount files
  • bean-doctor – health checks for your ledger
  • bean-query – run SQL-like reports
  • beancount-import / beanie – automated bank import
  • Version control – use Git to track changes to your books

✅ Final Example: Complete Transaction Flow

2025-06-20 * "Consulting payment from Acme Inc."
Assets:Bank:Business:Checking 3,000.00 USD
Income:Consulting -3,000.00 USD
; invoice: 2025-06-acme
; project: "Backend API redesign"

2025-06-21 * "Notion Pro Plan"
Expenses:Software 10.00 USD
Assets:Bank:Business:Checking -10.00 USD
; purpose: project documentation
; receipt: ./receipts/notion-june.pdf

🎯 Summary

Beancount is perfect for small business owners who want to:

  • Keep costs low
  • Stay fully in control of their finances
  • Avoid the bloat of legacy software
  • Embrace transparency and plain-text simplicity

Would you like a downloadable .bean starter template for your business? Let me know your business type, and I’ll build one tailored for you.