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.
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.
Ensure all interest accruals for loans and notes are current through the last day of the period.
Record any manual journal entries for provisions, reclassifications, or corrections.
Confirm all GL control accounts match their corresponding subledger totals with zero breaks.
Generate the trial balance as of the last day of the period and verify total debits equal total credits.
Run the P&L and Balance Sheet. Verify the balance sheet equation holds and net income is reasonable.
Set the accounting period status to CLOSED. This prevents any new journal entries from being posted to the period.
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.
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
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.
Before closing, post any manual adjustments that are not captured by the subledgers. Common adjusting entries include:
All adjusting entries must be posted with a value_date within the period being closed. See the Journal Entries guide for detailed instructions.
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.
| GL Account | Subledger Source | Tolerance |
|---|---|---|
1200 Loans Receivable | SUM of loans.loan.current_balance | +/- $0.01 |
2000 Notes Payable | SUM of investor_notes.note balances | +/- $0.01 |
1010 Operating Checking | cash.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.
With accruals posted, adjustments made, and tie-outs clean, review the financial statements for the period.
asOfDate to the last day of the closing monthOnce all reviews are complete and all tie-out breaks are resolved, close the accounting period.
OPEN → CLOSED
Periods are stored in the accounting.periods table with a status column.
value_date within the closed periodNote: 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.
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.
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.
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.
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