Skip to main content

20 posts tagged with "bookkeeping"

View all tags

Ten Bookkeeping Tips to Supercharge Your Beancount Workflow

· 6 min read
Mike Thrift
Mike Thrift
Marketing Manager

Great therapy for your business is a calm, balanced ledger. The following tips condense the latest small‑business guidance into a Beancount‑friendly routine.

Maintaining a pristine set of books isn't just about surviving tax season; it's about understanding the financial health of your business in real time. For users of a plain-text accounting system like Beancount, good habits are the engine that transforms a simple ledger into a powerful tool for insight and growth. The following ten tips are designed to refine your process, save you time, and keep your financial data clean, auditable, and ready for action.

2024-09-12-bookkeeping-basics-for-therapists-with-beancount

1. Separate Business and Personal Money

This is the golden rule of business finance for a reason. Maintaining a dedicated checking account and credit card for your practice is the cleanest way to draw a line between your business and personal life. It drastically simplifies tax preparation, provides a clear audit trail, and helps protect your personal assets from business liabilities. In Beancount, this means your transactions are cleanly sorted from the start—no more trying to remember if that coffee purchase was a client meeting or a personal expense.

2. Pick Cash or Accrual Early—Then Stick to It

Your accounting method determines when you record income and expenses. The IRS allows most small businesses to choose between the cash or accrual method.

  • Cash basis: You record income when money hits your account and expenses when money leaves it. It’s simple and ideal for businesses with straightforward, immediate transactions.
  • Accrual basis: You record income when you earn it (e.g., when you provide a service) and expenses when you incur them, regardless of when cash changes hands. This provides a more accurate picture of profitability, especially if you manage invoices or insurance claims with delayed payments.

The key is to choose one method early and apply it consistently. You can even declare your choice in your ledger using Beancount's options block to formalize the decision.

3. Reconcile on a Cadence

Reconciliation is the process of matching the transactions in your Beancount ledger against your official bank and credit card statements. Performing this check on a regular cadence—whether weekly or monthly—is a crucial habit. It allows you to catch bank fees, spot potential fraud, and identify any data import errors before they compound into a major headache. A quick command can show you the balance to check against your statement.

bean-balance books.bean "Assets:Bank" -e 2025-07-31

4. Automate Imports Wherever Possible

Your time is better spent serving clients than manually typing transaction data. Beancount’s ecosystem shines here. Use tools like bean-extract to create configurations that read CSV files from your bank, payment processor (like Stripe or Square), or EHR system. Once set up, these scripts can automatically convert raw data into formatted Beancount entries, dramatically reducing typos and freeing up hours of administrative work.

5. Categorize Immediately—Not at Tax Time

Procrastinating on categorization is a recipe for stress and inaccuracy. When a transaction enters your ledger, assign it to the correct account immediately (e.g., Income:Therapy:SelfPay, Expenses:Software:EHR, Expenses:CEU). Doing this in real-time ensures you correctly remember the context of each expense. A well-defined chart of accounts makes this process fast and consistent, turning your ledger into a rich, real-time report on your business operations.

6. Save Digital Copies of Every Receipt & EOB

Paper receipts fade and get lost. A digital-first approach is more resilient and efficient. Scan paper receipts or save PDF invoices and Explanations of Benefits (EOBs) to a secure, organized folder on your computer. With Beancount, you can link directly to these files from within your ledger using metadata.

2025-07-15 * "CEU webinar"
Expenses:CEU 79.00 USD
Assets:Bank:Practice
document: "docs/ceu/2025-07-15-trauma-webinar.pdf"

This creates an unimpeachable, self-contained record that is invaluable during a tax audit.

Knowing your current bank balance is good; understanding the flow of money in and out of your business is better. Use Beancount's powerful query language to analyze your financial trends. Chart your monthly income versus expenses, identify your most profitable services, or forecast potential cash crunches during slower months. This proactive approach, recommended by top bookkeeping guides, allows you to make strategic decisions rather than reacting to financial surprises.

8. Back Up & Version-Control Your Ledger

Since your Beancount ledger is a simple text file, you can use Git—a powerful, free version control system—to manage it. By keeping your ledger in a private Git repository (on a service like GitHub or GitLab), you get two critical benefits for free:

  1. A complete history: You can see every change ever made to your ledger.
  2. An off-site backup: Your data is safe from local hardware failure.

Make it a habit to "push" your changes after every reconciliation session.

9. Review Financial Statements Monthly

Don't wait for your accountant to tell you how your business is doing. At the end of each month, use Beancount's reporting tools to generate key financial statements like an income statement and a balance sheet. Compare them to the previous month or the same month last year. This regular review helps you spot spending leaks, evaluate your pricing, and build the financial literacy needed to answer questions from lenders or investors with confidence.

bean-report books.bean income_statement -e 2025-07-31

10. Budget for Taxes Year‑Round

For a self-employed professional, tax day should never be a surprise. Treat your future tax bill as a recurring expense. Create liability accounts in Beancount (e.g., Liabilities:Tax:Federal, Liabilities:Tax:State) and regularly transfer a percentage of every payment you receive into these virtual buckets. When it's time to make your quarterly estimated tax payments, the money will be set aside and waiting, making the process entirely painless.


Quick‑Start Checklist

  • Open separate practice bank accounts.
  • Choose cash or accrual and record it in your options.
  • Script your bank & EHR CSV imports with bean-extract.
  • Tag every transaction with a category upon arrival.
  • Reconcile weekly; back up to your private Git repo after.
  • Run monthly statements & cash-flow queries.
  • Transfer a tax buffer to a separate high-yield savings account.

Ready to calm your books?

Install Beancount, commit your first entry, and let these ten habits provide the structure needed to keep your therapy practice financially grounded and insight-rich. Happy bean-keeping!

Bookkeeping Basics for Therapists with Beancount

· 7 min read
Mike Thrift
Mike Thrift
Marketing Manager

Therapy is about listening; bookkeeping is about listening to your money. When session notes pile up and reimbursements lag, a transparent set of books becomes the calm in the chaos.

Running a private practice means wearing two hats: clinician and business owner. While your expertise lies in providing care, the financial health of your practice depends on clear, consistent bookkeeping. For therapists, this task comes with its own unique set of challenges.

2024-08-24-bookkeeping-basics-for-therapists-with-beancount

Why Therapy Bookkeeping Feels Different

The financial rhythm of a therapy practice rarely follows a simple, predictable pattern. This complexity stems from a few key areas that make standard bookkeeping software often feel like a poor fit.

  • Irregular cash‑flow. Your revenue stream is rarely linear. A client's copay might land in your account today, but the corresponding insurance reimbursement could take weeks or even months to arrive. Add in sliding-scale payment plans, and you're managing cash that arrives on vastly different timelines. This makes it crucial to understand the difference between when you earn money (accrual accounting) versus when you receive it (cash accounting).
  • A soup of fees. The expenses of running a modern practice add up quickly. From Electronic Health Record (EHR) subscriptions and payment processing fees to liability insurance and professional development, numerous small costs can quietly eat into your profit margins if not tracked meticulously.
  • Sales‑tax proof but self‑employment heavy. While most mental health services are exempt from sales tax, you’re not off the hook with the IRS. As a self-employed professional, you're responsible for paying quarterly estimated taxes, which include both income tax and self-employment taxes (SECA) to cover Social Security and Medicare.
  • HIPAA sensitivity. Your financial data is intertwined with Protected Health Information (PHI). Using third-party cloud software for bookkeeping can expand your practice's "attack surface," creating another potential vector for data leaks. A plain-text accounting system like Beancount keeps all your data on your own computer, under your control, reducing this risk.

A Seven‑Step Beancount Blueprint

Beancount is a powerful, open-source accounting system that uses plain-text files. It’s free, private, and flexible enough to handle the unique financial landscape of a therapy practice. Here’s how to get started.

• Separate Personal and Practice Funds

This is the non-negotiable first step of business finance. Open a dedicated business checking account and a business credit card. From now on, every client payment goes into this account, and every business expense—from licensure fees to office supplies—is paid from these funds. In Beancount, you can designate these easily, creating a clear boundary: every transaction is either personal or practice-related, eliminating the guesswork. For example, your new account becomes Assets:Bank:Practice.

• Build a Therapist‑Friendly Chart of Accounts

A "chart of accounts" is simply a list of all the categories you use to organize your financial transactions. Think of it as the filing system for your money. You’ll start with the five main account types: Assets, Liabilities, Equity, Income, and Expenses. Then, you can create sub-accounts tailored specifically to your therapy practice.

2025-07-23 open Income:Therapy:SelfPay       USD
2025-07-23 open Income:Therapy:Insurance USD
2025-07-23 open Assets:AccountsReceivable USD
2025-07-23 open Expenses:CEU USD
2025-07-23 open Expenses:Software:EHR USD
2025-07-23 open Expenses:Licensing USD

This structure allows you to see exactly where your money is coming from (self-pay vs. insurance) and where it's going (continuing education, software, etc.). This mirrors best-practice charts published for mental-health professionals.

• Choose Cash or Accrual (and Stick to It)

You need to decide when to recognize your income and expenses.

  • Cash method: You record income when you receive the cash and expenses when you pay them.
  • Accrual method: You record income when you earn it (e.g., when a session is completed) and expenses when you incur them, regardless of when money changes hands.

For example, if a client prepays $1000 for a five-session package, the cash method records the full $1000 income on the day of payment. The accrual method would record $200 of revenue after each completed session, giving you a more accurate picture of your monthly earnings.

Rule of thumb: Solo practice, few insurance claims → cash is simpler and often sufficient. Group practice, heavy reimbursements → accrual gives a clearer picture of profitability.

• Track Receivables & Reimbursements

One of Beancount's greatest strengths is its ability to track money you're owed. When you submit an insurance claim, you haven't been paid yet, but you've earned the income. You can record this in your Assets:AccountsReceivable account. When the payment arrives (often for a lower amount than billed), you can "settle" the receivable and account for the insurance write-off.

2025-07-10 * "Session CPT 90837 – pending BlueCross"
Assets:AccountsReceivable 150.00 USD
Income:Therapy:Insurance

2025-07-25 * "BlueCross payment CPT 90837"
Assets:Bank:Practice 135.00 USD
Expenses:InsuranceWriteOff 15.00 USD
Assets:AccountsReceivable -150.00 USD

This two-step process ensures you never lose track of outstanding claims and have a precise record of insurance adjustments.

• Categorize Deductible Expenses Promptly

Staying on top of your expenses is key to minimizing your tax bill. The IRS allows you to deduct expenses that are "ordinary and necessary" for your profession. For therapists, this includes continuing education (CEU) courses, state-mandated supervision, license renewal fees, liability insurance, and EHR subscriptions. By categorizing these expenses as you incur them, you'll have an accurate, year-to-date total ready for your quarterly tax estimates and year-end filing.

• Reconcile Weekly

Reconciliation is the process of matching the transactions in your Beancount ledger to your bank and credit card statements. It confirms that your records are accurate and complete. A quick weekly check-in can prevent small errors from becoming large headaches. With Beancount, a few simple commands in your terminal are all you need.

# Check the final balance of your practice bank account
bean-balance books.bean "Assets:Bank:Practice"

# See a summary of your income sources
bean-query books.bean "SELECT account, SUM(position) WHERE account ~ 'Income' GROUP BY account"

# Generate an income statement for the year to date
bean-report books.bean income_statement --end 2025-07-23

This simple loop—categorize, reconcile, and report—is the foundation of sound financial management for any private practice.

• Automate & Back Up

Embrace automation to save time and reduce errors.

  • Use an extractor tool like bean-extract to automatically convert CSV files from your bank or EHR into Beancount transaction entries.
  • Store PDFs of important documents like Explanation of Benefits (EOBs) or CEU certificates in a dedicated folder and link them directly to the relevant transaction in your ledger using document: metadata.
  • Your .bean ledger is a simple text file, making it perfect for version control. Push your ledger to a private Git repository (like on GitHub or GitLab) nightly for a secure, off-site backup.

Common Pitfalls (and Quick Fixes)

Even with a good system, a few common mistakes can trip up therapists. Here's how to spot and fix them.

PitfallFix
Net-deposit accounting (lumps all income/fees)Split each insurance check into income and write‑off lines.
Forgetting no‑show feesPost a separate income line tagged noshow for clarity.
Mixing CEU and travel costsBreak out Expenses:CEU vs. Expenses:Travel—both are deductible but tracked differently.
Ignoring Accounts Receivable agingQuery Assets:AccountsReceivable by date to chase stale claims.

Quick‑Start Checklist

  • Open a practice-only bank account & credit card.
  • Clone the Beancount starter repository and create your therapy-specific chart of accounts.
  • Decide on a cash or accrual basis and note it in your Beancount options.
  • Write a simple importer configuration for your bank, EHR, or insurance CSV downloads.
  • Schedule a recurring "Bean-hour" (perhaps on Friday afternoons) for your import → reconcile → report workflow.
  • Set up automated, off-site backups for your .bean files and test the restore process once a quarter.

Further Reading

Ready to quiet the financial noise? Install Beancount, record your first session fee, and let the clarity of plain-text accounting give your practice the headspace and financial stability it deserves. Happy bean-keeping!

Bookkeeping Basics for Amazon Sellers with Beancount

· 8 min read
Mike Thrift
Mike Thrift
Marketing Manager

When your margins live on pennies, precision beats guesswork.

Selling on Amazon is a game of volume and velocity. But behind the rush of sales and shipments lies a complex web of fees, returns, inventory movements, and tax obligations. Standard bookkeeping software often struggles to capture this nuance, leaving sellers with a fuzzy picture of their true profitability.

2024-07-16-bookkeeping-basics-for-amazon-sellers-with-beancount

This is where a plain-text accounting system like Beancount shines. By giving you total control over how you record transactions, you can build a financial source of truth that perfectly models the unique challenges of the Amazon marketplace. This guide provides a step-by-step workflow to keep you ahead of fees, taxes, and inventory headaches.

Why Amazon Bookkeeping Is Different

If you’ve tried to reconcile an Amazon payout with your bank statement, you already know it's not straightforward. The financial reality of an Amazon business is hidden behind layers of abstraction.

  • Bi-weekly lump-sum payouts: Amazon doesn't send you the revenue from each sale. Instead, it sends a single deposit every two weeks. This lump sum is a net figure, with gross sales reduced by referral fees, FBA fees, advertising costs, returns, and other withholdings. To understand your business, you must break this single number back into its constituent parts. (doola: A Business-in-a-Box™)
  • Inventory everywhere: Your inventory is constantly in motion—from your supplier, to a prep center, to various FBA fulfillment centers across the country, and finally to the customer. Accurately tracking your Cost of Goods Sold (COGS) requires knowing which batch of inventory (at which cost) was used for each sale. (Bean Ninjas)
  • Marketplace fees & promos: A significant portion of your revenue is immediately consumed by fees: referral fees, FBA pick-and-pack fees, monthly storage fees, and advertising costs. Tracking each of these expense categories separately is the only way to calculate your true gross margin and determine a product's real profitability. (Profitwise Accounting)
  • Sales-tax patchwork: While Amazon's Marketplace Facilitator laws handle sales tax collection and remittance in most states, it's not a complete solution. Storing inventory in FBA warehouses can create "nexus" (a business presence), potentially requiring you to register and file in those states, even if no tax is due. This is a complex compliance area that demands careful tracking. (TaxDo)
  • Lower 1099-K thresholds: With the reporting threshold for Form 1099-K dropping from 20,000to20,000 to 5,000 in 2024 (and set to fall to just $600 from 2026), nearly every serious seller will receive a form from Amazon reporting their gross transaction volume to the IRS. Your books must be able to reconcile perfectly with this number. (IRS)

Seven-Step Beancount Blueprint

This blueprint leverages Beancount's precision to tackle Amazon's complexity head-on.

1. Separate Channels Early

If you sell on multiple platforms, keep your accounting for each one separate. Within a single Beancount file for your legal entity, create dedicated, hierarchical accounts for each marketplace. This structure simplifies analytics and makes generating tax schedules trivial.

2025-07-22 open Income:Amazon               USD
2025-07-22 open Expenses:Amazon:FBAFee USD
2025-07-22 open Assets:Amazon:Payouts USD

2. Decompose Every Payout

This is the most critical habit. Never book an Amazon deposit as a single line of income. Instead, download the "All Transactions" settlement report from Seller Central for the corresponding period. Use this report to create a single Beancount transaction that breaks the payout into its components.

The deposit you receive in the bank is the balancing entry. The gross sales are credited to Income, while all fees and refunds are debited from their respective Expenses accounts.

; bi-weekly payout from settlement report
2025-07-14 * "Amazon Settlement #4361"
Assets:Bank:Operating 8432.17 USD
Income:Amazon:Sales -12274.50 USD
Expenses:Amazon:FBAFee 2454.80 USD
Expenses:Amazon:Adverts 1012.06 USD
Expenses:Amazon:Refunds 375.47 USD
Assets:Amazon:Reserve -100.00 USD

3. Track Inventory & COGS with Lots

Beancount has a first-class system for tracking inventory called "lots." When you purchase inventory, you record the number of units and their specific cost. When a unit is sold, you can expense that exact cost, giving you a perfect calculation for Cost of Goods Sold (COGS).

; Purchase 1,000 units from a supplier
2025-07-01 * "Supplier PO-7421"
Assets:Inventory:WidgetA 1000 WidgetA {@ 4.20 USD}
Assets:Bank:Operating

; Later, record the cost of a single sale
2025-07-16 * "FBA sale WidgetA | COGS"
Expenses:COGS 1 WidgetA {4.20 USD}
Assets:Inventory:WidgetA

4. Choose Accrual for Clarity

For any inventory-based business, the accrual method is superior. A cash-basis approach would show a massive expense in the month you buy inventory and artificially high profits in the months you sell it, distorting your performance. Accrual accounting correctly matches the cost of the goods sold (COGS) to the revenue from that sale in the same period, providing a much clearer picture of your gross profit. (Bean Ninjas)

5. Automate Imports

Manually entering settlement reports is educational at first, but it doesn't scale. The plain-text ecosystem excels at automation:

  • Use bean-extract to pull data from formatted CSVs exported by services like A2X.
  • Write simple Python scripts to pull data directly from Amazon's SP-API.
  • Use existing importers to pull bank CSV files to reconcile deposits and fees charged directly to credit cards.

6. Reconcile Weekly

Make it a habit to check your numbers. Use Beancount's powerful command-line tools to quickly validate balances and review performance.

# Check your current inventory counts and value
bean-balance books.bean "Assets:Inventory" "2025-07-21"

# Generate an income statement for the last period
bean-report books.bean income_statement -e 2025-07-21

7. Archive Source Docs

For every major transaction, link to the source document. Attach the official Amazon settlement PDF, the supplier invoice for an inventory purchase, or a shipping receipt using Beancount's metadata syntax (document:). This creates a self-contained, audit-ready financial record.

Sales-Tax & Compliance Checklist

  • Marketplace Facilitator Laws: Understand that while Amazon remits sales tax on your behalf in most states, storing inventory in states like California, Texas, or Pennsylvania can still create economic nexus, potentially requiring you to register your business there. (TaxGPT)
  • 1099-K Reconciliation: Ensure that the total you record in Income:Amazon:Sales for the year matches the gross amount reported on your Form 1099-K to the cent. Any discrepancy is an audit flag. (IRS)
  • Direct Sales Tax: If you sell through other channels not covered by a facilitator, maintain a Liabilities:SalesTaxPayable:State account subtree to track taxes you owe directly.

Common Pitfalls (and Fixes)

  • Pitfall: Recording only the net deposit from Amazon.
    • Fix: Always decompose payouts using the full settlement report.
  • Pitfall: Ignoring reimbursed returns or damaged goods.
    • Fix: Log both the initial refund expense and the subsequent reimbursement from Amazon as a separate credit.
  • Pitfall: Forgetting about rolling reserves.
    • Fix: Amazon often withholds a "reserve" balance from payouts, especially for new accounts. Track this money you're owed in a dedicated Assets:Amazon:Reserve account.
  • Pitfall: Mismatching SKU aliases between your system and Amazon's.
    • Fix: Normalize all SKU codes in your import scripts to ensure COGS lookups don't fail.

Quick-Start To-Do

  • Enable and download your first settlement report in Seller Central.
  • Clone a Beancount starter repository and build a chart of accounts specific to Amazon.
  • Write a small importer script that converts a settlement CSV into a Beancount transaction (.txn file).
  • Schedule a weekly reminder to pull new reports and run bean-check to ensure your files are valid.
  • Review your income statement monthly to make data-driven decisions on ad spend, pricing, and inventory.

Further Reading

Ship more, fret less—keep your beans balanced. Happy selling!

Bookkeeping Basics for Etsy Sellers with Beancount

· 7 min read
Mike Thrift
Mike Thrift
Marketing Manager

Hand-stitched ledgers beat tangled spreadsheets—especially when every cent counts.

For the artists, makers, and curators on Etsy, passion drives the business. But as your shop grows, financial clarity becomes just as important as creative vision. Juggling fees, tracking material costs, and preparing for taxes can feel overwhelming, pulling you away from the workbench.

2024-07-16-bookkeeping-basics-for-etsy-sellers-with-beancount

What if you could manage your shop’s finances with the same care and precision you put into your products? This guide introduces a plain-text accounting workflow using Beancount, an open-source engine designed for accuracy and control. It’s a method that helps you master your numbers so you can focus on your craft.

Why Etsy Bookkeeping Is Different

An Etsy shop has a unique financial fingerprint, with complexities that generic accounting software often misses.

  • Marketplace fees everywhere: Your final payout is what's left after Etsy takes its share. Listing fees, transaction fees, payment processing fees, and advertising costs all nibble away at every sale. Without tracking them individually, you can't know your true profit margins.
  • Platform-controlled sales tax: In a huge win for sellers, Etsy now automatically calculates, collects, and remits sales tax on your behalf in most states. However, if you sell on other channels or have a physical presence in certain states, you might still have your own sales tax obligations due to "nexus" rules.
  • Flexible payout cadence: Depending on your settings and account history, Etsy can deposit your funds daily, weekly, bi-weekly, or monthly. This flexibility can make cash flow feel unpredictable, especially when funds are held in reserve or delayed. (Etsy Help)
  • Lower 1099-K thresholds: The days of flying under the tax radar are over. The IRS reporting threshold for Form 1099-K, which reports your gross sales, is set at 5,000for2024andisplannedtodroptojust5,000 for 2024 and is planned to drop to just 600 by 2026. This means nearly every shop will receive an IRS form, and your books must be able to reconcile with it perfectly. (IRS)

Beancount Blueprint in Seven Quick Steps

This plain-text blueprint will help you build a clear, accurate, and stress-free bookkeeping system.

1. Separate Channels Up Front

If Etsy isn't your only sales channel, create separate income and expense accounts for each one. This simple separation at the top level of your chart of accounts keeps your analytics clean and makes tax time much easier.

2025-07-22 open Income:Etsy               USD
2025-07-22 open Expenses:Etsy:ListingFee USD
2025-07-22 open Assets:Etsy:Payout USD

2. Explode Every Payout

Never record an Etsy deposit as a single line of income. Instead, download your monthly Payment Account CSV from your Shop Manager. Use this report to create a single Beancount transaction that "explodes" each deposit into its gross sales and individual fee components.

; weekly payout from the Etsy Payment Account CSV
2025-07-15 * "Etsy Deposit #2025-28"
Assets:Bank:Operating 1842.77 USD
Income:Etsy:Sales -2100.00 USD
Expenses:Etsy:TransactionFee 136.50 USD ; 6.5 %
Expenses:Etsy:PaymentProcessing 66.00 USD ; 3 % + $0.25 per order
Expenses:Etsy:ListingFee 14.00 USD ; $0.20 x 70 renewals
Assets:Etsy:Reserve -75.73 USD

3. Track Inventory & COGS with Lots

For sellers of physical goods, Beancount's "lots" feature is a game-changer for tracking Cost of Goods Sold (COGS). When you buy raw materials, you record them as inventory at a specific cost. When you sell a finished product, you can expense the exact cost of the materials used.

; Purchase bulk materials for inventory
2025-07-01 * "Bulk yarn purchase | Supplier XYZ"
Assets:Inventory:ScarfBlue 500 ScarfBlue {@ 3.45 USD}
Assets:Bank:Operating

; Record the COGS when an item sells
2025-07-20 * "Sold Blue Scarf | Order #1234"
Expenses:COGS 1 ScarfBlue {3.45 USD}
Assets:Inventory:ScarfBlue

4. Pick Your Accounting Method Early

You have two main choices:

  • Cash basis: Simple and easy. You record income when the money lands in your bank and expenses when you pay for them. This works well for small, hobby-scale shops.
  • Accrual basis: Provides a truer picture of profitability. You record revenue when you make the sale (not when you get paid) and expenses when you incur them. This is better for shops that buy supplies in bulk or sell made-to-order items.

5. Automate Imports

Save time by automating data entry. The plain-text ecosystem offers several options:

  • Use bean-extract with custom rules to parse the Etsy CSV files.
  • Configure a bank CSV importer to catch ad charges or shipping labels paid by credit card.
  • For advanced users, write a Python script to pull reports directly from the Etsy API.

6. Reconcile Weekly

Set aside a few minutes each week to check your numbers. Use Beancount's command-line tools to quickly validate your balances and spot any issues like released reserves, refunds, or fee adjustments before the month ends.

# Check the balance of your Etsy holding account
bean-balance books.bean "Assets:Etsy:Payout" "2025-07-21"

# Generate an income statement for the last period
bean-report books.bean income_statement -e 2025-07-21

7. Attach Source Docs

Create a completely self-contained and auditable record by linking to source documents directly in your transaction metadata. This is perfect for supplier receipts, shipping label PDFs, or purchase orders.

2025-07-12 * "Etsy shipping label for order #4321"
Expenses:ShippingLabel 4.25 USD
Assets:Bank:Operating
document: "docs/labels/2025-07-12-order4321.pdf"

Know Your Etsy Fees (U.S.)

To get a true picture of your profit, track each fee type in its own expense account:

  • Listing fee: $0.20 per item, which automatically renews every 4 months or after a sale. (Etsy)
  • Transaction fee: 6.5% of the total order amount (including item price, shipping, and gift-wrapping). (Etsy)
  • Payment processing fee: Varies by country, but for the U.S. it's typically 3% + $0.25 per order processed through Etsy Payments. (Etsy Help)
  • Subscription (Etsy Plus): An optional $10/month for additional tools.

Sales-Tax & Compliance Tips

  • While Etsy remits sales tax for most U.S. states, be aware that selling on other platforms or having a physical workshop can create additional tax obligations ("nexus"). Track your sales thresholds carefully.
  • Once the 1099-K thresholds apply to your shop, ensure your Income:Etsy:Sales total in Beancount reconciles to the gross amount on the form to the cent. (IRS)

Common Pitfalls (and Fixes)

  • Pitfall: Net-deposit accounting.
    • Fix: Always use the payment CSV to break deposits into gross sales, fees, and reserves.
  • Pitfall: Stale inventory costs.
    • Fix: Record your supply and material purchases as inventory the moment you buy them. Don’t wait until the finished product sells.
  • Pitfall: Refund blind spots.
    • Fix: When issuing a refund, log the expense and also reverse the original COGS entry to move the cost back into your inventory account.
  • Pitfall: Ignoring reserve holds.
    • Fix: Open an Assets:Etsy:Reserve account to track money that Etsy is holding. This keeps your cash-flow statements honest.

Quick-Start Checklist

  • In your Shop Manager, set up monthly statements and download your first CSV.
  • Clone the Beancount starter repository and sketch out your shop's chart of accounts.
  • Decide on cash or accrual accounting and commit to it.
  • Write a basic importer script or rules file and schedule a weekly sync.
  • Reconcile your payouts, inventory levels, and bank balance every Monday.
  • Generate an income statement each month and review your gross margin trends.
  • Back up your .bean files using Git and an off-site storage solution.

Ready to stitch bookkeeping into your creative workflow? Install Beancount, commit your first entry, and let plain-text clarity free up more time at the workbench. Happy bean-keeping!

Navigating Receivables in Beancount

· 3 min read
Mike Thrift
Mike Thrift
Marketing Manager

In the labyrinth of personal finance management, Beancount emerges as a beacon of clarity and precision for plain-text bookkeeping. Particularly when it comes to managing receivables—money expected from others—Beancount offers a structured approach to keep your financial records in impeccable order. This blog will guide you through the intricacies of tracking receivables, processing refunds, and managing unresolved transactions with Beancount. Whether you're returning a purchase, lending money, or awaiting a refund, this post is your roadmap to financial clarity.

Understanding Receivables in Beancount:

2024-02-17-navigating-receivables-beancount-guide

Receivables represent money that is owed to you. This could be from a variety of scenarios, such as after a shopping return awaiting a refund or when you lend money to someone. For instance, consider you've returned a watch strap to an online store like Amazon.com and are awaiting a refund. In Beancount, this transaction is recorded as money moving from your credit card liability to your assets as receivables:

2023-10-31 * "Amazon.com" "[Return] Watch Strap"
Liabilities:CreditCard:Chase -12.00 USD
Assets:Receivables

Managing Refunds:

Once the refund is processed and you receive the money, another transaction is recorded to offset the balance in Receivables. This ensures that your accounts reflect the money back in your possession:

2023-11-01 * "Amazon.com" "[Refund] Watch Strap"
Liabilities:CreditCard:Chase 12.00 USD
Assets:Receivables

Complete Transaction Cycle:

A complete in-and-out transaction involving receivables is combining both transactions above and showcased as follows, demonstrating a balanced account post-refund:

2023-10-31 * "Amazon.com" "[Return] Watch Strap"
Liabilities:CreditCard:Chase -12.00 USD
Assets:Receivables

2023-11-01 * "Amazon.com" "[Refund] Watch Strap"
Liabilities:CreditCard:Chase 12.00 USD
Assets:Receivables

Handling Unresolved Transactions:

For transactions where the refund or repayment has not yet been received, Beancount employs the #UNRESOLVED tag. This tag helps in identifying and tracking amounts that are still pending. For example:

2023-10-31 * "John Doe" "Lending Money" #UNRESOLVED
Liabilities:CreditCard:Chase -100.00 USD
Assets:Receivables

By focusing on transactions tagged as #UNRESOLVED, you can quickly ascertain which amounts are yet to be settled.

Maintaining a Zero Balance:

In a proper ledger, the sum of all transactions under the Assets:Receivables account, excluding those tagged with #UNRESOLVED, should ideally return to zero. This ensures that all expected funds have been accounted for, maintaining the integrity of your financial records.

For example, a valid ledger might look like this, with an unresolved transaction clearly marked, awaiting closure:

2023-10-31 * "Amazon.com" "[Return] Watch Strap"
Liabilities:CreditCard:Chase -12.00 USD
Assets:Receivables

2023-11-01 * "Amazon.com" "[Refund] Watch Strap"
Liabilities:CreditCard:Chase 12.00 USD
Assets:Receivables

2023-10-31 * "John Doe" "Lending Money" #UNRESOLVED
Liabilities:CreditCard:Chase -100.00 USD
Assets:Receivables

An invalid ledger is one where a transaction causes the Receivables account not to zero out, necessitating the #UNRESOLVED tag for correction.

Conclusion

Navigating receivables in Beancount doesn't have to be daunting. With a clear understanding of how to record transactions, manage refunds, and keep an eye on unresolved transactions, you can maintain accurate and reliable financial records. Embracing the structured approach of Beancount for receivables management not only simplifies your financial tracking but also brings peace of mind, knowing that every dime is accounted for. So, why not leverage the power of Beancount to make your financial management as smooth

DIY vs. Hiring a Bookkeeper: A Beancount Playbook for Cost-Conscious Founders

· 6 min read
Mike Thrift
Mike Thrift
Marketing Manager

As a founder, you wear every hat—CEO, salesperson, product manager, and, yes, bookkeeper. But as your business grows, the hours spent reconciling transactions start to feel less like savvy bootstrapping and more like a costly distraction. So, when is the right time to hand off the books?

The answer isn't about giving up control; it's about making a data-driven decision. Here’s how to use your Beancount ledger to decide whether to continue DIY-ing or hire a professional.

2023-09-03-diy-vs-hiring-a-bookkeeper-a-beancount-playbook-for-cost-conscious-founders

TL;DR: If you bill your time at 85/hourandspendjustfourhoursamonthonbookkeeping,thatworkiscostingyou85/hour and spend just four hours a month on bookkeeping, that work is costing you 340 in lost revenue. A typical remote bookkeeper starts around $249/month—plus they free you up to actually grow the business.

1. Put a Price on Your Own Time

The most important metric in this decision is your own opportunity cost. Every hour you spend categorizing expenses is an hour you’re not spending on sales, product development, or strategy.

The math is simple:

  1. Track how many hours you spend on bookkeeping tasks each month (reconciling, coding, fixing errors).
  2. Multiply those hours by your effective billable rate.
  3. Compare that figure to the monthly fee of an external bookkeeper (a typical starting rate is around $249/month).

If the cost of your time is higher, you have an obvious delegation win. You can even track this directly in Beancount.

; Track the opportunity cost of your time
2025-07-31 * "July bookkeeping time"
Expenses:Admin:BookkeepingTime 4.00 H ; Your custom unit for hours
Equity:OwnerTime -340.00 USD
; metadata: rate:85

Here, H is a custom currency for "Hours." You can book the time directly and use a script or a price directive to assign its dollar value, making the cost of your own labor an explicit part of your financial reports.

2. Count the Hidden Costs of DIY

The cost of your time isn't the only factor. DIY bookkeeping carries risks that can be far more expensive than a monthly retainer.

  • Tax Slip-ups: Messy books are a nightmare for tax preparers. A CPA may charge anywhere from 150150–400 per hour just to clean up your records before they can even start on the tax return.
  • Missed Deductions & IRS Fines: Small, unintentional errors—like misclassifying an expense or forgetting to record a cash transaction—can compound over time, leading to penalties, interest, and a higher tax bill.
  • Founder Burnout: The mental drag of late-night reconciling is real. It drains focus and energy that should be dedicated to high-leverage activities like sales and product innovation.

Beancount Mitigation: You can reduce errors by adding a Git pre-commit hook that refuses to commit changes if bean-check fails or if transactions lack a category tag. This enforces discipline, even when you're tired.

3. Three Ways a Bookkeeper (or Beancount Discipline) Saves Money

Whether you hire a pro or simply level up your own process, good bookkeeping pays for itself.

  1. Cleaner Tax Filing: Organized, accurate books mean fewer CPA hours spent on cleanup, which directly translates to a lower bill.
  2. Real-time Cash Insight: Knowing your exact cash position helps you avoid costly overdraft fees and the need for last-minute, high-interest financing.
  3. Stress Buffer: Stable, predictable financial operations reduce founder stress, leading to better decision-making and a healthier business culture.

4. When You Shouldn’t Hire Yet

Hiring a bookkeeper isn't always the right move. In some cases, DIY is still the smarter financial choice.

  • You're pre-revenue or have razor-thin cash flow. At this stage, every dollar should go toward sales and customer acquisition. Focus on getting revenue in the door first.
  • Your finances are simple. If you have one bank account, one Stripe feed, and fewer than ~60 transactions a month, you can likely manage everything in Beancount and Fava in less than an hour a week.

5. The Hybrid Option: Your “Bookkeeper-Ready” Beancount Ledger

The best solution is often a hybrid one. Use Beancount to do the heavy lifting yourself, but keep your books so clean that a professional can jump in for high-value tasks.

  • Automate Ingestion: Set up bean-extract to run nightly, pulling in new transactions automatically.
  • Standardize Your Chart of Accounts: Use conventional account names (Expenses:Software, Assets:Bank:Checking) so any pro can understand your ledger instantly.
  • Attach Source Documents: For every expense over $75, use link: metadata to attach a PDF of the receipt or invoice.
  • Follow a Monthly Close Checklist:
    1. Reconcile all bank and credit card accounts.
    2. Run bean-check to ensure there are no errors.
    3. Export PDF statements with bean-report balance_sheet and bean-report income_statement.
  • Perform a Quarterly Hand-off: Give your bookkeeper or CPA a Git tag or a simple archive (books-Q3-2025.tar.gz). They can verify your work, add complex adjusting entries (like accruals and depreciation), and prepare tax packets.

This model keeps your costs low because the professional is only touching clean, reviewed data, while you still get the benefit of pro-level financial statements.

6. Quick Decision Matrix

SituationHire a ProStick with Beancount (DIY)
>60 Tx/month, >$20k MRR
You bill $100+/hr but spend 3+ hrs/mo on books
In a cash crunch, <$5k MRR
You genuinely love spreadsheets & automation

7. Next Steps

  1. Log your time. For your next bookkeeping session, track every minute you spend on it.
  2. Run the numbers. Multiply that time by your billable rate and compare it to the market rates above.
  3. Choose your path. Either tighten up your Beancount workflow using the hybrid model or start interviewing bookkeepers who are comfortable working from a plain-text ledger.

Either way, intentional bookkeeping is always cheaper than winging it. With Beancount as your immutable source of truth, you’ll know exactly when professional help pays for itself—and when it doesn’t.

Business vs Personal Bookkeeping: Drawing a Clear Line with Beancount

· 6 min read
Mike Thrift
Mike Thrift
Marketing Manager

A thriving company and a healthy wallet share one trait: boundaries.

For any business owner, from a solo freelancer to a growing startup founder, one of the most critical financial disciplines is the strict separation of business and personal finances. Mingling funds—using your business account for groceries or paying a business vendor from your personal checking—creates a messy, opaque financial picture. This not only invites scrutiny from tax authorities but also robs you of clear insights into your company's actual performance.

2023-08-12-business-vs-personal-bookkeeping-with-beancount

Fortunately, a plain-text accounting system like Beancount provides the perfect framework for enforcing these essential boundaries right in your ledger.

Why Separation Matters

Failing to separate your finances isn't just a bad habit; it carries significant risks and masks valuable business intelligence.

  • IRS Clarity: The IRS isn't just suggesting you keep separate bank accounts; they strongly urge it. When business and personal funds are commingled, it becomes difficult to prove which expenses are legitimate business deductions. This ambiguity can lead to questions and complications you're better off avoiding.
  • Audit Risk: Mixing transactions is a major red flag for auditors. If your books are a tangled mess of personal and business activity, you risk having valid deductions disallowed or even facing penalties. A clean, separate ledger demonstrates professionalism and makes any potential audit smoother and less stressful.
  • Cleaner Insights: How can you know your true profit margin if your business's cash flow is clouded by personal spending? A stand-alone business ledger gives you an unfiltered view of your company's financial health. You can accurately track revenue, analyze expenses, and calculate tax liabilities without the "noise" of your personal financial life.

Key Differences at a Glance

The purpose, rules, and structure of business and personal bookkeeping are fundamentally different. Understanding these contrasts is key to maintaining accurate records.

AreaBusiness BooksPersonal Books
PurposeTrack income, expenses, assets, and liabilities for tax and growth decisionsManage household budgeting and savings goals
Tax RulesMust follow Schedule C, 1120‑S, or 1065; strict deductibility standardsFew formal requirements beyond basic recordkeeping
AccountsEquity, payables, receivables, sales tax, payrollChecking, savings, investments, loans
Owner PaySalary (W‑2) or owner’s draw through equityN/A—personal withdrawals fund living costs

A Four‑Step Beancount Blueprint

Beancount makes it simple to erect a firm wall between your two financial worlds. Here’s a practical workflow to get it right.

• 1 — Open Dedicated Accounts

Before you even write your first Beancount entry, open a dedicated business checking account and business credit card. This physical separation is the foundation of clean bookkeeping. Once that's done, mirror this structure in your Beancount ledger.

2025-07-23 open Assets:Bank:Business   USD
2025-07-23 open Assets:Bank:Personal USD

This simple setup ensures that every transaction can be clearly assigned to either your business or personal finances from the moment it occurs.

• 2 — Record Owner Contributions & Draws

As an owner, you will move money between your personal funds and the business. These are not income or expenses. Instead, they are tracked through an Equity account.

  • Contribution: When you put your own money into the business to get it started or cover a shortfall.
  • Draw: When you take money out of the business for personal use (this is how many sole proprietors "pay" themselves).
; Capital injection to start the business
2025-07-23 * "Owner contribution"
Assets:Bank:Business 10,000.00 USD
Equity:Owner:Contrib

; Taking money out for personal living expenses
2025-08-05 * "Owner draw for rent"
Equity:Owner:Draw 2,500.00 USD
Assets:Bank:Business

By recording these as equity transactions, you ensure they don't incorrectly inflate your business expenses or reduce your reported profit.

• 3 — Handle Mixed Receipts Quickly

Mistakes happen. You might accidentally use your business card to pay for a personal dinner. The key is to correct it immediately in your ledger. Don't delete the transaction; reclassify it as an owner's draw.

2025-08-07 * "Personal groceries on biz card"
Equity:Owner:Draw 72.35 USD
Assets:Bank:Business

This entry correctly reflects that business funds were used for a personal expense, treating it as money you've taken out of the company. This prevents you from accidentally claiming a non-deductible personal expense on your taxes.

• 4 — Reconcile & Review on a Schedule

Consistency is your best defense against messy books. Set aside time weekly or monthly to reconcile your business accounts. Use Beancount's tools to ensure your ledger matches your bank statements and to review your company's performance.

# Check your business bank balance against your statement
bean-balance books.bean "Assets:Bank:Business"

# Generate an income statement to review profitability
bean-report books.bean income_statement -e 2025-08-31

This regular review habit satisfies IRS record-keeping requirements and keeps you informed about the financial health of your business.

Tax Considerations

  • Estimated Taxes: To avoid a painful tax bill, treat your future taxes as an ongoing business expense. Create liability accounts (Liabilities:Tax:Federal, Liabilities:Tax:State) and regularly move a set percentage of every deposit into them. When quarterly payments are due, the cash is already waiting.
  • Non‑deductible Personal Costs: Remember the IRS rule: business expenses must be both "ordinary and necessary" for your work. Your personal meals, commuting costs, and non-business subscriptions do not qualify and must be kept entirely out of your business's profit and loss statement.

Quick‑Start Checklist

  • Open business-only bank and credit accounts.
  • Build a Beancount chart of accounts with Assets:Bank:Business, Equity:Owner:Contrib, and Equity:Owner:Draw.
  • Decide on your accounting basis (cash or accrual) and note it in your Beancount options.
  • Tag any accidental personal charges on business cards as Equity:Owner:Draw immediately.
  • Reconcile weekly; back up your .bean file to a private Git remote.
  • Review your income statement, balance sheet, and cash-flow reports every month.

Bottom line: Separate money, separate ledgers. Beancount makes the wall between your business and personal finances explicit—and version-controlled—so your business stays audit-ready while your latte habit remains nobody’s business but yours. Happy bean-keeping!

Deconstructing a Beancount Ledger: A Case Study for Business Accounting

· 3 min read
Mike Thrift
Mike Thrift
Marketing Manager

In today's blog post, we will be breaking down a Beancount ledger for businesses, which will help you understand the intricacies of this plain text double-entry accounting system.

Deconstructing a Beancount Ledger: A Case Study for Business Accounting

Let's start with the code first:

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

Understanding the Code

  1. Opening Accounts: The code starts by opening a series of accounts on 1970-01-01. These include a mix of asset accounts (Assets:Bank:Mercury and Assets:Crypto), an equity account (Equity:Bank:Chase), income accounts (Income:Stripe and Income:Crypto:ETH), and expense accounts (Expenses:COGS, Expenses:COGS:AmazonWebServices, Expenses:BusinessExpenses, and Expenses:BusinessExpenses:ChatGPT).

  2. Transactions: It then progresses to record a series of transactions between 2023-03-01 and 2023-05-18.

    • The transaction on 2023-05-14 represents a payment of $17.49 to CONTABO.COM from Mercury Checking ••1234. This is recorded as an expense (Expenses:COGS:Contabo) and a corresponding deduction from the Assets:Bank:Mercury account.

    • Similarly, the transaction on 2023-05-11 represents a payment of $14490.33 to Amazon Web Services from the same bank account. This is logged under Expenses:COGS:AmazonWebServices.

    • The transaction on 2023-03-01 shows income from STRIPE being deposited into Mercury Checking ••1234, totaling $21230.75. This is recorded as income (Income:Stripe) and an addition to the bank account (Assets:Bank:Mercury).

    • The last transaction on 2023-05-18 represents a crypto transaction involving 19 ETH from a customer. This is tracked under Assets:Crypto and Income:Crypto:ETH. The {1,856.20 USD} shows the price of ETH at the time of transaction, while the @@ 35267.8 USD specifies the total value of the 19 ETH transaction.

In all transactions, the principle of double-entry accounting is maintained, ensuring that the equation Assets = Liabilities + Equity always holds true.

Final Thoughts

This Beancount ledger provides a straightforward yet robust system for tracking financial transactions. As seen in the final transaction, Beancount is flexible enough to account for non-traditional assets like cryptocurrency, which is a testament to its utility in our increasingly digital financial landscape.

We hope this breakdown helps you better understand the structure and capabilities of Beancount, whether you're a seasoned accountant or a beginner trying to keep track of your personal finances. Stay tuned for our next blog post, where we'll delve further into advanced Beancount operations.

Introduction to Beancount.io

· 5 min read
Mike Thrift
Mike Thrift
Marketing Manager

Why Modern Bookkeeping Matters

Still managing your investments with spreadsheets? While spreadsheets are versatile, they can become cumbersome and error-prone as your investment portfolio grows. Enter Beancount.io – a sophisticated yet user-friendly investment tracking platform designed specifically for managing stock and cryptocurrency portfolios. Built with engineers and financial minimalists in mind, Beancount.io combines powerful features with an intuitive interface to streamline your investment tracking experience.

2019-09-07-introduction-to-beancount

Expenses

Income Statement

Balance Sheet

Double-entry Bookkeeping: The Foundation of Accuracy

Beancount.io is built on the principles of double-entry accounting – a time-tested methodology used by financial institutions worldwide. This system ensures mathematical accuracy through a simple yet powerful concept: every financial transaction must balance perfectly.

In double-entry bookkeeping, each transaction requires at least two entries – a debit (+) and a credit (-) – across different accounts. This built-in verification system makes it virtually impossible to record unbalanced transactions, ensuring your financial records remain accurate and reliable.

1970-01-01 open Income:BeancountCorp
1970-01-01 open Assets:Cash
1970-01-01 open Expenses:Food
1970-01-01 open Assets:Receivables:Alice
1970-01-01 open Assets:Receivables:Bob
1970-01-01 open Assets:Receivables:Charlie
1970-01-01 open Liabilities:CreditCard

2019-05-31 * "BeancountCorp" "Salary of May 15th to May 31st"
Income:BeancountCorp -888 USD
Assets:Cash 888 USD

2019-07-12 * "Popeyes chicken sandwiches" "dinner with Alice, Bob, and Charlie"
Expenses:Food 20 USD
Assets:Receivables:Alice 20 USD
Assets:Receivables:Bob 20 USD
Assets:Receivables:Charlie 20 USD
Liabilities:CreditCard -80 USD

As you can see in the two examples above, every transaction must fulfill the accounting equation.

Assets = Liabilities + Equity(aka Net Assets)

We used the Beancount syntax by Martin Blais and the web project Fava by Jakob Schnitzer to build this website. And it will alert you if any transaction has any legs not summing to zero.

Error Alert

Now you understand how we enforce the correctness of the ledger. But you may ask what are those "accounts"?

Understanding Accounts: The Water Bucket Analogy

Think of your financial accounts as a system of interconnected water buckets, where money flows like water between them. This analogy makes double-entry bookkeeping intuitive: when you transfer money from one account to another, it's like pouring water from one bucket to another – the total amount of water (money) in the system remains constant.

Beancount.io introduces five kinds of accounts.

  1. Income — Its amount is always negative or in debit. This is because you are making money, and then the money is debiting from "Income" account and crediting to your "Assets."
  2. Expenses — Its amount is always positive or in credit. This is because you are spending money, and the money is flowing from the "Assets" or "Liabilities" to the "Expenses."
  3. Liabilities — Its amount is positive or zero. Your credit card liabilities are a good example, which rises and falls in cycles.
  4. Assets — Its amount is positive or zero. Your cash or houses are always worth some prices.
  5. Equity — Your net assets. The system will calculate automatically for you. Equity = Assets - Liabilities and it reflects how wealthy you are.

Now you can open your customized accounts with those keywords above:

1970-01-01 open Assets:Cash
1970-01-01 open Assets:Stock:Robinhood
1970-01-01 open Assets:Crypto:Coinbase
1970-01-01 open Expenses:Transportation:Taxi
1970-01-01 open Equity:OpeningBalance

Advanced Investment Tracking with Commodities

Beancount.io excels at tracking diverse investments, from stocks to cryptocurrencies. Let's explore how it handles complex investment scenarios. For example, here's how you would record purchasing 10 Bitcoins at $100 each in 2014:

2014-08-08 * "Buy 10 Bitcoin"
Assets:Trade:Cash -1000.00 USD
Assets:Trade:Positions 10 BTC {100.00 USD}

And then three years later, you sell them (originally with costs of $100 per unit annotated with {100.00 USD}) at the price of $10,000 per unit annotated with @ 10,000.00 USD.

2017-12-12 * "Sell 2 Bitcoin"
Assets:Trade:Positions -2 BTC {100.00 USD} @ 10,000.00 USD
Assets:Trade:Cash 20,000.00 USD
Income:Trade:PnL -19,800.00 USD

Or the same transaction with @@ 20,000.00 USD means that at the price of $20,000 in total.

2017-12-12 * "Sell 2 Bitcoin"
Assets:Trade:Positions -2 BTC {100.00 USD} @@ 20,000.00 USD
Assets:Trade:Cash 20,000.00 USD
Income:Trade:PnL -19,800.00 USD

The sum of all legs of the transaction, including -2 BTC {100.00 USD}, are still, as always, zero.

The costs {100.00 USD} tag is important because you might have bought the same commodity at different costs.

100 BTC {10.00 USD, 2012-08-08}
10 BTC {100.00 USD, 2014-08-08}

If you want to simplify the process, you can set up the account at the beginning with FIFO or LIFO. FIFO stands for first in, first out, while LIFO stands for last in, first out. In the US, IRS uses FIFO to calculate your PnL and tax accordingly.

1970-01-01 open Assets:Trade:Positions "FIFO"

And then when you sell it in shorthand like -2 BTC {}, beancount will apply FIFO strategy automatically and sell the oldest commodity.

Getting Started with Beancount.io

Beancount.io is a modern cloud-based financial management platform that transforms your text-based transaction records into comprehensive financial statements, including income statements, balance sheets, and trial balances. By combining the reliability of plain text files with powerful visualization tools, Beancount.io helps you maintain precise control over your financial life while gaining valuable insights into your investment performance.

Start your financial journey with Beancount.io - Free during our promotional period!

Bookkeeping Basics with Beancount: A Plain-Text Path to Clean Books

· 7 min read
Mike Thrift
Mike Thrift
Marketing Manager

You can’t steer a business if you don’t know where the money goes. Accurate books turn guesswork into insight. (Investopedia)

Every business owner, freelancer, or startup founder eventually faces the same reality: financial chaos is a growth killer. Without a clear picture of your cash flow, you're flying blind. But what if you could manage your finances with the same precision and control you apply to your code? Enter Beancount, a powerful, open-source accounting system that runs on plain-text files.

2019-03-24-bookkeeping-basics

This guide will walk you through the fundamentals of bookkeeping and show you how to build a robust, lightweight, and transparent financial workflow using Beancount.

What Is Bookkeeping?

At its core, bookkeeping is the systematic and continuous recording of every financial transaction a business makes. It’s the daily discipline of tracking revenue, expenses, assets (what you own), and liabilities (what you owe).

In the world of Beancount, these records aren't locked away in proprietary software. They live in simple, human-readable plain-text files. This approach allows you to version-control your financial history with tools like Git, just as you would with a software project. Every entry is governed by the double-entry balancing rule, an elegant system that automatically checks your work and ensures your books are always correct. (beancount)

Why It Matters

Meticulous bookkeeping isn't just about administrative tidiness; it's a strategic advantage.

  • Tax confidence: When tax season rolls around, clean records are your best friend. The IRS requires clear documentation for income and deductions. A well-maintained ledger means you can file with confidence and dramatically shorten any potential audits. (IRS)
  • Sharper decisions: Are your prices high enough? Is a specific service contract actually profitable? Are subscription costs spiraling out of control? Financial statements like the income statement and balance sheet reveal pricing leaks, runaway costs, and cash-flow potholes, giving managers and investors the data they need to make smart choices. (Investopedia)
  • Easier funding: Lenders and investors don't make decisions based on gut feelings. Before wiring funds, they will ask for financial statements. Good books allow you to generate a balance sheet or income statement in seconds, demonstrating professionalism and financial health. (Investopedia)
  • Fraud and error alerts: Routine reconciliation of your books against bank statements is your first line of defense against mistakes. This simple habit helps you catch duplicate charges, bank errors, or fraudulent activity quickly, before they become significant problems. (IRS)

A Seven-Step Plain-Text Blueprint

Ready to get started? Here’s how to build your Beancount-powered bookkeeping system from the ground up.

1. Separate Business and Personal Accounts

This is the non-negotiable first step. Open a dedicated business checking account and, if needed, a business credit card. Commingling funds creates a nightmare for accounting and can blur the liability lines between you and your business. Clean separation is essential for accurate deductions and legal protection. (Small Business Administration)

In Beancount, you declare the existence of these accounts with an open directive:

; Opening balances for your accounts
2025-07-22 open Assets:Bank:Business USD
2025-07-22 open Assets:Bank:Personal USD

2. Pick a Bookkeeping System

Beancount uses the double-entry method, the gold standard of accounting for centuries. The principle is simple: every transaction affects at least two accounts. For every debit from one account, there must be a corresponding credit to another. The magic of this system is that the sum of all your accounts must always balance to zero. Beancount enforces this rule automatically, meaning a typo or logical error will immediately raise a flag. You literally can't have unbalanced books. (beancount)

3. Decide on an Accounting Method

You have two main choices here:

  • Cash basis: You record income when you receive the money and expenses when you pay them. It’s simpler and reflects your cash flow directly.
  • Accrual basis: You record income when you earn it (e.g., when an invoice is sent) and expenses when you incur them (e.g., when you receive a bill). This method gives a truer picture of a company's financial health and performance, especially for growing firms. (Investopedia)

Here is an example of an accrual transaction in Beancount. You book the income when the invoice is sent, moving the value into Assets:AccountsReceivable. When the client pays, you move the cash from AccountsReceivable to your bank account.

; Accrual example: invoice issued, payment later
2025-07-22 * "Design invoice #101"
Assets:AccountsReceivable 3000.00 USD
Income:Design

2025-08-15 * "Client pays invoice #101"
Assets:Bank:Business 3000.00 USD
Assets:AccountsReceivable

4. Assemble Your Tool Stack

The beauty of Beancount is its minimalist, modular nature. Your core stack includes:

  • Editor + Git: Your favorite text editor for journaling transactions and Git for version control, giving you a complete, auditable history of every change.
  • bean-report / bean-balance / Fava: Command-line tools like bean-report and the stunning web interface Fava give you instant financial statements, dashboards, and powerful filtering capabilities.
  • Importers: A rich ecosystem of community-built importers can connect to your bank feeds via CSV, Plaid, or APIs for services like Stripe and PayPal, automating much of the data entry.

5. Categorize Every Transaction

A well-organized "chart of accounts" is the backbone of insightful reporting. Define categories that make sense for your business, using hierarchical accounts for granularity. Then, as you record transactions, categorize them meticulously.

2025-07-30 * "AWS monthly bill"
Expenses:Hosting:AWS 124.50 USD
Assets:Bank:Business
tag: "ops"

In this example, the expense is clearly filed under Expenses:Hosting:AWS. The use of tag: "ops" also allows for cross-cutting reports, like viewing all operational expenses regardless of their primary category. (IRS)

6. Store Source Documents Securely

The IRS happily accepts digital copies of receipts and invoices. Scan paper receipts or forward email invoices to a dedicated folder in cloud storage (like Google Drive or Dropbox). Then, link to the file directly in your Beancount entry using metadata. This creates an airtight, self-contained record.

; Receipt image linked as metadata
2025-07-18 * "Team lunch"
Expenses:Meals 85.10 USD
Assets:Bank:Business
receipt: "receipts/2025-07-18-team-lunch.jpg"

7. Make Bookkeeping a Habit

Consistency is key. Procrastination turns bookkeeping into a stressful, time-consuming chore. Set aside a recurring time block—a weekly or monthly “Bean-day”—to import transactions, reconcile accounts, and review your financial reports. This simple routine transforms bookkeeping from a quarterly scramble into a quick, empowering business health check. (IRS)

DIY vs Professional Help

  • DIY: For freelancers or small businesses with predictable transaction volume, a DIY approach with Beancount is incredibly effective. It's still wise to have a brief, one-time consultation with a CPA to validate your chart of accounts and ensure you're on the right track.
  • Professional review: As your business scales, transactions become more complex, or compliance risk rises, bringing in a professional bookkeeper or accountant for periodic reviews is invaluable. You can continue using Beancount as your primary source of truth and simply export the reports they need.

Quick-Start Checklist

  • Open separate business bank accounts.
  • Clone the Beancount starter repository and define your accounts in accounts.bean.
  • Choose cash or accrual and stick to it.
  • Set up importers to automate data entry from your bank (CSV), Stripe, PayPal, etc.
  • Tag and write clear narrations for every transaction.
  • Reconcile your ledger against bank statements weekly or monthly.
  • Generate monthly income, balance, and cash-flow reports using Fava or bean-report.
  • Back up your .bean files regularly (Git + off-site storage).

Further Reading

Ready to start? Install Beancount, commit your first entry, and trade spreadsheet fog for plain-text clarity. Happy bean-keeping!