Month-End Close

The month-end close is a structured process that finalizes the accounting period, ensures all transactions are recorded, reconciles subledgers to the general ledger, and locks the period against future postings. This guide walks through each step in sequence.

Month-End Close Checklist

Complete these steps in order on the last business day of the month (or the first business day of the following month). The close process requires ADMIN or TREASURY role.

1

Run Final Accruals

Ensure all interest accruals for loans and notes are current through the last day of the period.

2

Post Adjusting Entries

Record any manual journal entries for provisions, reclassifications, or corrections.

3

Verify Tie-Out

Confirm all GL control accounts match their corresponding subledger totals with zero breaks.

4

Review Trial Balance

Generate the trial balance as of the last day of the period and verify total debits equal total credits.

5

Review Financial Statements

Run the P&L and Balance Sheet. Verify the balance sheet equation holds and net income is reasonable.

6

Close the Period

Set the accounting period status to CLOSED. This prevents any new journal entries from being posted to the period.

Step 1: Accrual Processing

CEF Core accrues interest on both loans and investor notes automatically via the tenantAccrualCheck scheduled job, which runs every 15 minutes. However, before closing the period, you should verify that accruals are current.

Loan Interest Accrual

For each active loan, the system calculates daily interest based on the outstanding principal balance and annual interest rate. The journal entry posts:

DR 1300 (Accrued Interest Receivable)

CR 4000 (Interest Income - Loans)

The accrual formula is: outstanding_principal x (annual_rate / 365) x days

Note Interest Accrual

For each active investor note, interest accrues on the note principal balance:

DR 6000 (Interest Expense - Notes)

CR 2100 (Accrued Interest Payable)

Verification: After accruals run, compare the balance in GL account 1300 (Accrued Interest Receivable) to the sum of accrued interest across all active loans. Similarly, compare GL 2100 (Accrued Interest Payable) to the sum across all active notes. These should match within the tie-out tolerance of $0.01.

Step 2: Adjusting Entries

Before closing, post any manual adjustments that are not captured by the subledgers. Common adjusting entries include:

  • Loan Loss Provision: Adjust the allowance for loan losses (GL 1400) based on your assessment of credit risk. DR Provision Expense / CR Allowance.
  • Prepaid Expenses: Amortize any prepaid insurance or other prepaid items to the current period.
  • Reclassifications: Move amounts between GL accounts to correct posting errors or reclassify transactions.
  • Accrued Expenses: Record any expenses incurred but not yet paid (e.g., professional fees, audit costs).

All adjusting entries must be posted with a value_date within the period being closed. See the Journal Entries guide for detailed instructions.

Step 3: Verify Tie-Out

The tie-out process reconciles GL control accounts to subledger balances. CEF Core runs this automatically at 2:10 AM UTC daily, but you should verify the results before closing.

Accounts Reconciled

GL AccountSubledger SourceTolerance
1200 Loans ReceivableSUM of loans.loan.current_balance+/- $0.01
2000 Notes PayableSUM of investor_notes.note balances+/- $0.01
1010 Operating Checkingcash.cash_account balance+/- $0.01

Navigate to Admin → Monitoring to view the latest tie-out results. Any differences outside the tolerance are logged to the ops.break_report table and must be resolved before closing. See the Tie-Out Procedures guide for resolution steps.

Important: Do not close the period if any tie-out breaks exist. Investigate and resolve all discrepancies first. Post correcting entries if needed, then re-run the tie-out to confirm everything balances.

Steps 4-5: Review Financial Statements

With accruals posted, adjustments made, and tie-outs clean, review the financial statements for the period.

Trial Balance Review

  1. Navigate to Accounting → Trial Balance
  2. Set the asOfDate to the last day of the closing month
  3. Verify: Total Debits = Total Credits
  4. Review each account balance for reasonableness compared to prior months
  5. Investigate any large or unusual balances

P&L and Balance Sheet

  1. Run the Profit & Loss for the closing month. Verify net income is consistent with expectations.
  2. Run the Balance Sheet as of the last day of the month. Verify Assets = Liabilities + Equity.
  3. Compare key metrics month-over-month: total loans, total notes, net interest margin, cash position.
  4. Export reports to PDF for board or regulatory distribution.

Step 6: Close the Period

Once all reviews are complete and all tie-out breaks are resolved, close the accounting period.

Period Status Lifecycle

OPENCLOSED

Periods are stored in the accounting.periods table with a status column.

How to Close

  1. Navigate to Admin → Period Management
  2. Select the month to close (e.g., "March 2026")
  3. Click Close Period. The system verifies that no tie-out breaks exist.
  4. Confirm the action. The period status changes from OPEN to CLOSED.

What Closing Prevents

  • No new journal entries can be posted with a value_date within the closed period
  • No subledger transactions can be backdated into the closed period
  • No existing entries within the period can be modified or reversed into the period

Note: In exceptional circumstances, a SYSTEM_ADMIN can reopen a closed period. This should be done only when a material error is discovered. Reopening a period is logged in the immutable audit trail and triggers an alert to all ADMIN users.

Automated Archival Jobs

CEF Core runs two scheduled archival jobs to manage data volume and maintain the immutable audit trail. These run automatically and do not require manual intervention.

Archive Audit Trail -- 15th of Each Month, 3:00 AM UTC

Archives audit trail records older than the retention threshold to cold storage. The audit trail is immutable and tamper-evident (hash-chained). Archival moves records out of the hot database while preserving the full chain for compliance and forensic review.

Archive Logs -- 1st of Each Month, 3:00 AM UTC

Archives application logs older than the retention window. Logs include API access records, error traces, and system events. Archived logs are compressed and stored for the required retention period.

Pro Tip: If you need to access archived audit trail records for a regulatory inquiry or audit, contact a SYSTEM_ADMIN to retrieve them from cold storage. The hash chain ensures the records have not been tampered with since archival.

Best Practices

  • Close by the 5th: Aim to complete the month-end close within 5 business days of the period end. This keeps financial reporting current and allows timely board reporting.
  • Use the Checklist: Follow the numbered steps in order every month. Skipping steps (e.g., closing before verifying tie-outs) can lock in errors.
  • Document Adjustments: Include detailed descriptions on all adjusting entries. Auditors will review these and need to understand the rationale.
  • Export and Archive Reports: After closing, export the trial balance, P&L, and balance sheet to PDF and store them in a shared drive or document management system as the official record for the period.
  • Two-Person Review: Have a second authorized user review the financial statements before closing the period, even when the entries themselves do not trigger maker-checker approval.

Next Steps

Learn how the daily tie-out job works and how to investigate and resolve discrepancies between GL accounts and subledger totals.

Tie-Out Procedures Guide