Sinking Fund

Sinking Fund

A sinking fund describes a method of saving for a specific expense. Unlike an emergency fund, you start a sinking fund when you’re expecting or planning for an expense that falls outside of your regular budget.

So you might start a sinking fund to buy tickets to Beyonce’s Cowboy Carter tour, attend a destination wedding in Hawaii, or replace the timing belt on your car before it blows. And you can earmark the money in any number of ways.

Why is it called a sinking fund? Because it can also refer to gradually reducing — or sinking — outstanding debt.

https://www.investopedia.com/terms/s/sinking-fund-method.asp

How to track sinking funds using hledger

Okay, let’s break down how to track sinking funds using hledger. The core idea is to represent the money you’re setting aside conceptually, even if it physically remains in your main bank account.

The most common and flexible approach in plain-text accounting is to use Liability or Equity accounts to represent the earmarked funds. I generally prefer using Liabilities as it feels more intuitive – you have a “liability” to spend that money on a specific future goal.

Here’s a step-by-step guide using the Liability method:

1. Set Up Your Accounts

You’ll need a few types of accounts in your chartofaccounts or just defined implicitly through usage:

  1. Your main Asset account: Where the actual money resides (e.g., Assets:Bank:Checking)
  2. A parent Liability account for Sinking Funds: (e.g., Liabilities:SinkingFunds)
  3. Specific Liability accounts for each fund: (e.g., Liabilities:SinkingFunds:CarReplacement, Liabilities:SinkingFunds:Vacation, Liabilities:SinkingFunds:Insurance)
  4. *An Expense account for tracking the *allocation:** This helps in budgeting and seeing how much you’re setting aside. (e.g., Expenses:SinkingAllocations)
  5. Your actual Expense accounts: Where the money is ultimately spent (e.g., Expenses:Car:Maintenance, Expenses:Travel:Vacation, Expenses:Insurance:Home)

2. Recording the Funding Transaction

When you decide to set aside money for a sinking fund (e.g., monthly), you create a transaction that doesn’t move money out of your actual bank account in the ledger but does increase the liability associated with the fund.

  1. Date: The date you are making the allocation.
  2. Description: Something clear like “Allocate to Car Fund” or “Monthly Sinking Fund Allocation”.
  3. Postings:
    1. Debit the Expenses:SinkingAllocations account for that specific fund (or a general one). This treats the act of saving as a budget item/expense for reporting purposes.
    2. Credit the specific Liabilities:SinkingFunds:FundName account. Crediting a liability increases its balance, representing the growing amount you’ve earmarked.

Example: Setting aside $100 for car replacement and $50 for vacation on January 15th.

2024-01-15 Monthly Sinking Fund Allocation
    Expenses:SinkingAllocations:CarReplacement    $100.00
    Expenses:SinkingAllocations:Vacation           $50.00
    Liabilities:SinkingFunds:CarReplacement      $-100.00  ; Credit Liability increases balance
    Liabilities:SinkingFunds:Vacation             $-50.00  ; Credit Liability increases balance

Self-Correction: In standard accounting debits increase Expenses and credits increase Liabilities. So the above is correct. hledger often shows positive numbers for income/liabilities/equity credits and expenses/asset debits in reports, but the underlying double-entry logic holds. Let’s rewrite for clarity often seen in hledger journals where debits are positive and credits are negative:

2024-01-15 Monthly Sinking Fund Allocation
    Expenses:SinkingAllocations:CarReplacement    $100.00   ; Debit Expense (positive)
    Liabilities:SinkingFunds:CarReplacement      $-100.00   ; Credit Liability (negative posting increases balance)
    Expenses:SinkingAllocations:Vacation           $50.00   ; Debit Expense (positive)
    Liabilities:SinkingFunds:Vacation             $-50.00   ; Credit Liability (negative posting increases balance)

    ; Optional: You could split this into two transactions if preferred

Wait, looking at hledger examples, credits are often positive for Liabilities. Let’s stick to the standard where debits are positive, credits are negative for the journal entry itself to ensure it balances to zero. The reporting (bal) handles the sign conventions appropriately.


;; Preferred hledger Journal Format (Debits positive, Credits negative, sum = 0)

2024-01-15 Monthly Sinking Fund Allocation | Funding
    Expenses:SinkingAllocations:CarReplacement    $100.00
    Liabilities:SinkingFunds:CarReplacement      $-100.00
    Expenses:SinkingAllocations:Vacation           $50.00
    Liabilities:SinkingFunds:Vacation             $-50.00

This transaction sums to zero. It correctly increases the expense recognized for allocation and increases the liability (earmarked amount).

3. Recording the Spending Transaction

When you actually spend the money you saved:

  1. Record the Fund Drawdown: Create a separate transaction (or combine using multiple postings) to decrease the liability of the sinking fund and reverse the allocation expense (optional, but good practice).
  2. Record the Real Expense: Create a transaction showing the money leaving your bank account and going to the actual expense category.

Example: You spend $800 on car repairs on March 10th, using money from the car replacement fund.

Step 3a: Record the actual expense:

2024-03-10 Pay for Car Repair | Mechanic Shop XYZ
    Expenses:Car:Maintenance         $800.00
    Assets:Bank:Checking            $-800.00

Step 3b: Record drawing down the sinking fund:

2024-03-10 Use Car Sinking Fund for Repair | Internal Transfer
    Liabilities:SinkingFunds:CarReplacement    $800.00  ; Debit Liability decreases balance
    Expenses:SinkingAllocations:CarReplacement $-800.00  ; Credit Allocation Expense (reverses prior allocation)

Why reverse the allocation expense? This shows that the “expense” of allocating has now been “fulfilled” or reversed by the actual spending. Your net allocation expense for the period reflects only the net change in your sinking funds.

4. Reporting and Tracking

Now you can use hledger reports to see the status:

Check Sinking Fund Balances:

hledger bal Liabilities:SinkingFunds --depth 3 -E

This command shows the current balance of each sinking fund liability account. The --depth 3 shows individual funds, and -E (or --empty) ensures funds with a zero balance are also shown if they had activity. The balance represents the amount currently earmarked.

Check Allocation Activity:

hledger bal Expenses:SinkingAllocations --depth 3 -M --begin 'this month'

This shows how much you allocated this month. Change the date range (--begin, -p) as needed.

Check Actual Spending:

hledger bal Expenses:Car Expenses:Travel Expenses:Insurance -M --begin 'this year'

This shows the actual spending in the real expense categories.

Verify You Have the Cash:

Crucially, the sinking fund liability only tracks the earmarked amount. You need to ensure your actual cash balance covers these funds.

hledger bal Assets:Bank Liabilities:SinkingFunds -E

Compare the total Assets:Bank balance to the absolute value of the total Liabilities:SinkingFunds balance. Your relevant asset balance should be greater than or equal to the total earmarked amount.

Advantages of this Method:

  1. Clear Separation: Keeps the purpose of the money distinct from the location (your main bank account).
  2. Accurate Asset Balance: Your Assets:Bank:Checking balance always reflects the true amount in the physical account.
  3. Budgeting Integration: Treating allocations as an expense helps incorporate saving goals into your budget reports.
  4. Flexibility: Easy to add or remove funds without complex account structures under Assets.

Alternative: Using Equity Accounts

You could use Equity:SinkingFunds:FundName instead of Liabilities. The principle is similar:

  1. Funding: Debit Expenses:SinkingAllocations, Credit Equity:SinkingFunds:FundName.
  2. Spending: Debit actual Expenses:Category, Credit Assets:Bank:Checking. Then, Debit Equity:SinkingFunds:FundName, Credit Expenses:SinkingAllocations.

The main difference is semantic – do you view these earmarked funds as reducing your freely available equity or as an internal liability/promise to spend? Both work mathematically.

Simplification: Periodic Transactions

If you allocate the same amount regularly, use hledger’s periodic transaction rules to automate the funding entries.

Choose the method (Liability or Equity) that makes the most sense to you and apply it consistently!


Links to this note