Appearance
A Month in the Life: Closing the Books with Kraal
This walkthrough follows one fictional company through a complete monthly close so you can see where automation acts, where people review, and what the finished close looks like. Every company is different — treat this as a map, not a script.
The company: Beacon Fitness LLC, a small gym chain on the accrual basis. They have equipment and delivery vans (fixed assets), an annual insurance policy paid up front (prepaid), memberships billed in advance (deferred revenue), a fixed-fee corporate wellness contract delivered in milestones (a revenue contract), an equipment loan (debt), a leased headquarters (operating lease), biweekly payroll, and a tail of aging receivables.
Setup — done once, not every month
Before the first close, the bookkeeper configures Close Prep:
- Fixed assets. Use Import from ERPNext to pull existing assets into the register (a preview shows what will import and what will be skipped, with reasons), then assign depreciation accounts. Assets that lived part of their life in a previous system carry their opening accumulated depreciation so Kraal continues their schedule instead of restarting it. New purchases are added by hand with cost, salvage value, in-service date, useful life, and method.
- Schedules. Add the insurance prepaid (total, months, start date), the membership deferred-revenue schedule, the loan (principal, annual rate as a percent, term), and the HQ lease (classification, initial liability, discount rate, term, and the lease accounts).
- Revenue contracts. Enter the corporate wellness contract in the revenue register — total transaction price, customer, and its two performance obligations: a straight-line support obligation (amount, periods, start date) and a milestone-billed delivery obligation (milestone names and amounts summing to its allocation), each with its deferral and revenue accounts.
- Policies. Set bad-debt aging percentages and the allowance account, payroll settings, and the client's automation policy — whether routine entries post automatically or everything waits for review.
Notice what nobody does: edit the close checklist. Configuring a schedule is what activates its close step. A client with no lease schedules never sees a lease step; add one and the step appears on the next close.
Days 1–2 — the engine works
When the new month opens, Kraal creates the close period from the template. Sync items pull bank activity and the trial balance; then the automated adjustments run as their prerequisites complete:
- Depreciation — computed per asset from the register (or posted by the ERP's native tool when available). The van sold on the 10th gets no depreciation this month, by convention.
- Prepaid insurance — one month recognized, straight-line to the cent.
- Deferred revenue — the memberships earned this month move to revenue.
- Revenue contracts — the wellness contract's straight-line obligation recognizes this month's portion; a milestone marked complete is proposed but held for review, because milestone entries assert a real event happened and always wait for a person.
- Loan interest — this month's row of the effective-interest table.
- Lease accrual — liability interest plus right-of-use amortization; the rent payment itself came through AP and is not re-posted.
- Payroll accrual — unpaid days at month end, flagged to auto-reverse on the 1st.
- Bad debt — receivables are aged, the required allowance computed, and only the delta to the booked allowance proposed. Very old invoices appear as write-off candidates, which always wait for a person.
- Cutoff analysis — postings near the period boundary that look misdated are flagged for a human eye.
- Accrual identification — the landscaper who bills every month sent nothing; Kraal proposes the accrual at the usual amount, with the billing history attached, and waits for approval.
- Errors & risk review — a vendor payment that looks like it went out twice is raised as a finding, with both payments attached, for someone to resolve or dismiss.
With autopost enabled, routine entries post as they compute. Anything requiring judgment — write-offs, missing configuration, unusual amounts — stops and waits. If something is misconfigured (say, imported assets without expense accounts), the item completes with a named gap telling you exactly what to fix; everything else proceeds.
Days 3–4 — the people work
The controller opens the close period and reviews:
- each adjustment's proposals against its workpaper (the rollforward, the schedule table),
- flagged review items — approving, editing, or rejecting each proposal (the held milestone recognition among them),
- variance checks and the cutoff findings,
- then approves the financials.
With automation doing the arithmetic, this step is genuinely review: reading, judging, and deciding — not keying entries.
Day 5 — the close
Once every prerequisite item is done, the Period Closing Voucher drafts (it structurally cannot run before the adjustments), gets submitted, and the period locks. Locking archives the Close Binder: checklist, financial package, reports, adjustment summary, and the supporting_schedules/ workpapers behind every adjusting entry. If anyone asks in November why March shows a particular number, the answer is in the binder, frozen at lock time.
Next month
Nothing to re-set up. Schedules advance by date, the prepaid retires itself when it completes, the lease keeps rolling to end of term, and the loop repeats — with the human cost of the close converging toward review and judgment only.
Something didn't go to plan? That's normal — see Corrections & Adjustments for the playbook.