Money
Accounting
Double-entry GL, multi-currency reporting, budgets, period close. Built so every dollar (or shilling) reconciles.
Chart of Accounts
Every organization starts with a seeded CoA following standard 4-digit codes: 1xxx Assets, 2xxx Liabilities, 3xxx Equity, 4xxx Revenue, 5xxx Expenses. Edit names, deactivate unused accounts, or add sub-accounts under Accounting → Chart of Accounts.
Required system accounts the engine will look up by code:
1100Cash1200Accounts Receivable2400Withholding Tax Payable3300Retained Earnings (used by period close)4100Rent Revenue4200Late Fee Income
GL entries
Every financial event — rent payment, expense, journal entry — posts a pair of GLEntry rows. Each row records:
- Account, debit / credit, transaction currency, period.
- A base-currency snapshot (
baseDebit,baseCredit,exchangeRate) computed at posting time. - Reference type + id pointing back to the originating record (RentPayment, Expense, JournalEntry).
You never edit a GL entry directly — reverse it through a journal entry or by opening the source transaction.
Manual journal entries
Use Accounting → Journal Entries → New for adjusting entries (depreciation, accruals, FX revaluation, opening balances). Lines must balance both in entry currency and in base currency. If you post lines in a foreign currency, the system looks up the rate from the Exchange Rate table effective on the posting date — or you can override the rate per line.
Statuses: DRAFT (no GL impact) → POSTED (GL rows created). Mark an entry as REVERSING and the system auto-creates the inverse in the next period at posting time.
Multi-currency consolidation
Every report (P&L, TB, BS) has two modes:
- Consolidated (default) — sums base-currency snapshots across all GL entries. Numbers are always in the org's reporting currency.
- Currency-specific — pass a currency filter; the report drills into entry-currency amounts only. Useful for "what's our USD-denominated revenue in isolation".
Each consolidated report includes a per-currency breakdown card showing the raw mix that fed the totals — so a UGX + USD mix is visible at a glance even though the headline number is one currency.
Reports
- Profit & Loss — revenue / expenses / net income per period range.
- Trial Balance — every account's debits and credits for one period.
- Balance Sheet — assets / liabilities / equity as of a chosen period.
- AR Aging — overdue receivables bucketed by days overdue.
- Cash Flow Forecast — 12-month projection driven by lease end-dates + scheduled bills.
- Budget vs Actuals — per-budget variance with month range filter. Categories link to GL accounts so actuals come from the ledger, not just Expense rows.
All reports export to CSV / Excel / PDF. The PDF embeds your org branding and reporting-currency note.
Bank accounts & reconciliation
Accounting → Bank Accounts. Each account has a currency, current balance (auto-maintained via atomic increments), and a transactions ledger. Bank reconciliation lets you:
- Import a bank statement (CSV / OFX).
- The matcher suggests pairings against your recorded payments.
- You approve or override each match.
- Unmatched bank lines become candidate journal entries.
Period lock vs period close
- Lock — prevents new GL entries from posting to a period. Reversible by admin.
- Close — generates a
CLOSINGjournal entry that zeros revenue + expense accounts to retained earnings (3300), then locks the period. Idempotent. Use at month-end after books are tied out.