# Board Financials This guide covers the read-only Financials page: what each of its four tabs shows, where the numbers actually come from, and — since this page is view-only — what to watch out for when the same dollar figure looks different in two different places on it. > **A note on this guide:** written by cross-checking real numbers shown > on this page directly against the real database, on two different > real associations (one with essentially no financial data entered yet, > one with real payment history but no completed budget-actuals entries) > — not just reading the code. This is the same standard used for the > earlier Payments page audit. Screenshots aren't included — screen > capture wasn't available when this was written, so screens are > described in detail in text instead. 🎥 **See this in the walkthrough video:** [Board Walkthrough, starting at 0:14](https://myaccount.joantool.com/demo.php?video=board&t=14) — covers Financial Overview, Balance Sheet, and Reserve Study. ## 1. Go to Financials Click **FINANCIALS** in the board portal's top nav bar. The page opens on **Fiscal Year** (current year by default — four year buttons across the top let you switch between this year and the three before it), followed by seven stat cards: Reserve Fund, Operating Fund, Monthly Fee, Total Income (YTD), Monthly Insurance, Total Expenses (YTD), and Net. Below that are four tabs: **Monthly Summary**, **Budget vs Actual**, **Balance Sheet**, and **Reserve Study**. **Confirmed directly against the database:** Total Income (YTD) matched the real sum of that year's completed payments exactly. As of 2026-07-30, the **Operating Fund** card is a live-computed figure — seed balance (as of the last manual reconciliation) plus every completed payment and posted expense since that reconciliation date — not a static number, so it moves automatically as real transactions happen rather than only when someone manually re-types it. The **Reserve Fund** card is still the manually-reconciled figure it's always been (reserve-side auto-sync is a separate, not-yet-built follow-up) — update it via `admin/board.php`'s "Reconcile Fund Balances" whenever the real reserve balance changes. ## 2. Monthly Summary tab This tab is sourced from **`payment_history`** — real completed payments, as they happen. It includes: - **Collection Status** for the current month: expected dues (units × monthly fee), collected, outstanding, and a collection-rate percentage with a progress bar. - **Expense Breakdown** and **Income Sources** bar charts for the selected year. - A **Monthly Income & Expense Summary** table, one row per month, with a YTD total row at the bottom. Late fees over $15 (the MN SF1750 cap effective January 1, 2026) are flagged with a ⚠ both inline and in a dedicated review box. **Confirmed directly:** the YTD Total Income figure on this tab matched the real `payment_history` sum for the year exactly, down to the cent where shown. ## 3. Budget vs Actual tab This tab looks like it should show the same income and expense figures as Monthly Summary, but **it's sourced from a different pair of tables** — `actual_income` and `actual_expenses` — not `payment_history`. These tables aren't automatically kept in sync with real payments; they're populated separately, by manual entry, CSV import, or a "GL Backfill" button on the superadmin Financial Management page. **Update, 2026-07-29 — the income side of this is now automatic.** This tab used to be able to show **$0** income here even when `payment_history` had real completed payments for the same association/year, because nothing ever wrote to `actual_income` automatically — it was confirmed live on Pine Arbor at one point ($1,358 vs $2,725 for the same association/year, on the same page). That gap is now closed: every payment marked Completed automatically posts a matching `actual_income` row the moment it completes, and the pre-existing historical backlog was backfilled once to reconcile older payments too. You shouldn't see Monthly Summary and Budget vs Actual disagree on income for this reason anymore. **The expense side has no equivalent auto-population path, and still doesn't.** `actual_expenses` is only ever populated by manual entry or CSV import — there's no "expense equivalent" of a completed payment that posts itself automatically, so a **$0** expense total can still mean "nobody's logged the actuals yet" rather than "nothing was spent." The tab's banner doesn't call this out on the expense side the way it does for income, so don't read a $0 expense line as verified just because there's no warning next to it. This also affects the **NET INCOME** row at the bottom of this tab, and the **Balance Sheet** tab's income/expense summary (see below) — both combine real budgeted figures with `actual_expenses`, so a misleadingly rosy "net" figure is still possible whenever expenses have real budgets and real spending but nothing logged yet on the expense side. ## 4. Balance Sheet tab A traditional assets/liabilities/fund-balance layout: Operating Cash, Reserve Cash, Accounts Receivable under Assets; Prepaid Assessments under Liabilities; and a Total Income / Total Expenses / Net Income summary at the bottom. **Worth knowing:** this tab's Total Income figure is sourced from `payment_history` (matching Monthly Summary), while its Total Expenses figure is sourced from `actual_expenses` (matching Budget vs Actual) — the same two-different-sources situation as above, just combined onto one tab instead of split across two. Confirmed directly: on the same test association, this tab showed a real Total Income figure alongside a **$0.00** Total Expenses figure, for the same underlying reason (no `actual_expenses` rows yet) — producing a Net Income figure that looks better than the association's real cash position, once real expenses do get logged. ## 5. Reserve Study tab The **Current Reserve Balance** and **Percent Funded** figures here are real — confirmed directly against the association's stored reserve fund balance. **Everything else on this tab is not yet built, and should be treated as placeholder content, not real data:** - **"Fully Funded Target"** is a single hardcoded number (**$1,712,000**) — confirmed directly by loading this tab on two completely different associations and seeing the identical figure both times. It isn't calculated from anything association-specific. - The **"Top 5 Upcoming Capital Expenditures"** table (Asphalt Shingle Roof Replacement, Full Street and Driveway Reseal, etc.) is the exact same hardcoded list on every association — confirmed the same way. The code has its own comment acknowledging this directly: *"Replace with database query when reserve_study_items table is built... these are placeholder values for demonstration."* This isn't a display bug — it's a feature that hasn't been built yet, and this guide is documenting it as such rather than describing the placeholder numbers as if they were real. - **View Reserve Study / Download PDF do generate a real PDF** — this part isn't a stub — but **the downloaded file is always named `Pine_Arbor_Reserve_Study_{year}.pdf`, regardless of which association you're actually viewing.** Confirmed directly: downloaded it while logged in as a board member of a completely different association (not Pine Arbor), and the file that came back was still named for Pine Arbor. Whether the *contents* of the PDF are correctly association-specific wasn't independently verified as part of this audit — only the filename, which is definitely wrong for every association except Pine Arbor itself. --- That's the Financials page: real balances and real Monthly Summary figures, a Budget vs Actual tab that's only as current as whoever last updated Actual Income/Expenses (and doesn't warn you about the expense side the way it warns you about income), a Balance Sheet that inherits the same gap, and a Reserve Study tab whose top two-thirds is placeholder content pending real reserve-study data — with a real PDF download that's currently mislabeled for anyone not on the Pine Arbor association.