Chapter 4: Closing entries and the post-close trial balance
At the end of an accounting period, you “reset” the temporary accounts.
Temporary accounts include:
Revenues
Expenses
Dividends / Draws (depending on the business form)
The goal is to move the period’s net result into Retained Earnings (or the equity-equivalent in your COA), so the next period starts clean.
In LedgerLoom workbook mode, you do not hand-write closing entries in a CSV. Instead, LedgerLoom generates them deterministically from your adjusted trial balance.
By the end of this chapter, you will be able to:
explain what “closing” means and why we do it,
read
closing_entries.csv,read
trial_balance_post_close.csv,and understand the Balance-Sheet-only invariant.
What LedgerLoom generates
When you run a workbook build, LedgerLoom emits two end-of-cycle artifacts:
closing_entries.csv— a set of closing entries withentry_kind="closing"trial_balance_post_close.csv— a post-close TB that contains only Assets / Liabilities / Equity accounts
This is a powerful learning tool:
You can compare LedgerLoom’s generated closing entries to your textbook’s “income summary” method.
You can verify that all temporary accounts are truly zeroed out.
Hands-on workflow
Use the same workbook project you used for Chapters 2–3.
Step 1 — Ensure you have at least one Revenue and one Expense
Closing is only interesting if you have temporary accounts.
If your project doesn’t yet include revenue/expense accounts, add a simple sale and an expense. For example:
Add to COA:
Revenue:ServiceRevenueExpenses:SuppliesExpense(or any expense you used)
Add a sale transaction (example):
T4,2026-01-05,Cleaning service paid in cash,Assets:Cash,300.00,0.00 T4,2026-01-05,Cleaning service paid in cash,Revenue:ServiceRevenue,0.00,300.00
Now rebuild:
ledgerloom check --project .
ledgerloom build --project . --run-id ch04
Step 2 — Read closing_entries.csv
Open:
outputs/ch04/artifacts/closing_entries.csv
You should see:
revenue accounts debited to bring them to zero,
expense accounts credited to bring them to zero,
the net difference posted to
Equity:RetainedEarnings,dividends/draws closed to retained earnings (not through income summary).
Dividends are not an expense
Dividends reduce equity, but they do not reduce income. That’s why LedgerLoom closes dividends/draws directly to retained earnings.
Step 3 — Read trial_balance_post_close.csv
Open:
outputs/ch04/artifacts/trial_balance_post_close.csv
This trial balance should contain only:
Assets
Liabilities
Equity (excluding dividends/draws)
If you still see Revenue or Expenses here, something is wrong: the books are not “reset.”
The invariant LedgerLoom enforces
LedgerLoom enforces a strict “system reset” invariant:
After closing, all Revenue and Expense balances must be exactly zero.
After closing, Dividends/Draws must be exactly zero.
If the invariant fails, the build fails. That’s intentional: it prevents you from carrying temporary balances into the next period.
Where we go next
With Chapters 1–4 in place, you now have the full spine of the accounting cycle:
transactions → unadjusted TB → adjustments → adjusted TB → closing → post-close TB
Later workbook chapters will build financial statements and introduce “gotcha detectors” that catch common student errors early.