CommunityPay generates Reserve Funding Status Reports (RSR) as institutional packets — structured reserve fund analyses produced from live ledger data, bound to a cryptographic hash, and linked to the evidence chain.
This page describes what an RSR contains, what it does not contain, and why the distinction matters.
What an RSR Is
An RSR is a point-in-time analysis of an HOA's reserve fund health, generated from production accounting data. It includes:
- Current reserve fund balance and funding target
- Component register (all reserve-eligible assets)
- Funding status breakdown by component category
- 30-year cash flow projection
- Funding adequacy analysis
- Reserve study metadata (if a professional study exists)
- Reconciliation warnings
The RSR is scoped to the HOA, not to a specific unit. It answers the question: "What is the current state of this association's reserve fund, based on what the ledger knows?"
What an RSR Is Not
An RSR is not a professional reserve study. A professional reserve study requires:
- Physical site inspection by a qualified reserve analyst
- Component-by-component condition assessment
- Remaining useful life estimates based on observed condition
- Replacement cost estimates based on current market pricing
- Funding plan recommendations by a credentialed professional
CommunityPay does not perform site inspections. It does not employ reserve analysts. It does not estimate remaining useful life from observed condition.
Every RSR includes a mandatory disclaimer:
Generated from association records maintained in CommunityPay. No site inspection was performed. This report is not a substitute for a professional reserve study as required by applicable law. Component condition assessments, useful life estimates, and replacement cost projections should be validated by a qualified reserve study professional.
This disclaimer is embedded in the generator, not appended by the user. It cannot be removed or modified during generation.
Why This Distinction Matters
Many states require HOAs to obtain periodic professional reserve studies (in Washington, RCW 64.90.545 sets the requirement). An RSR does not satisfy that requirement. What an RSR does provide is a continuous, ledger-derived view of reserve fund health between professional studies — and a structured way to detect when the fund's actual position has diverged from the study's projections.
Data Sections
Reserve Study Metadata
If a professional reserve study is on file, the RSR includes:
| Field | Description |
|---|---|
| Study date | When the professional study was completed |
| Study type | Full, update, or update with site visit |
| Appraiser | Name of the reserve analyst or firm |
| Overdue flag | Whether the study is more than three years old, a fixed interval in the report |
If no study is on file, this section states that explicitly. The absence of a study is itself a risk signal.
Reserve Fund Status
Computed from the Fund model in the production ledger:
| Field | Source |
|---|---|
| Current balance | Fund.get_balance() — assets minus liabilities for the reserve fund |
| Funding target | The reserve fund's funding target |
| Percent funded | The reserve fund's percent funded |
The balance is not a separate number maintained for reporting. It is the same balance that the FundSegregationGuard enforces, that the integrity scan verifies, and that the enforcement dispatcher evaluates.
Component Register
The full register of reserve-eligible components, sorted by component ID for deterministic content hashing. Each component includes:
| Field | Description |
|---|---|
| Name | Component description |
| Category | Structural, mechanical, exterior, interior, etc. |
| Useful life | Total expected useful life in years |
| Remaining life | Years until expected replacement |
| Replacement cost | Estimated replacement cost |
| Status | On track, behind schedule, critical, or replacement due |
The register is sorted deterministically because the content hash must be reproducible. If two snapshots contain the same components in different orders, they would produce different hashes despite containing identical data. Deterministic sorting prevents this.
Funding Status Breakdown
Aggregate counts by component status:
| Status | Definition |
|---|---|
| On track | More than 10 years to failure |
| Behind schedule | 6 to 10 years to failure |
| Critical | 1 to 5 years to failure |
| Replacement due | Failure year reached or passed |
30-Year Cash Flow Projection
Year-by-year projection of the reserve fund's cash position, accounting for:
- A level annual contribution, equal to the sum of the components' annual reserve contributions (each component's replacement cost spread over the years remaining)
- Scheduled replacement events (from the component register)
- Projected balance at year-end
Each year that includes a replacement event identifies which components are being replaced and at what cost. This allows the reader to see not just the cash trajectory but the specific events driving it.
The projection states replacement costs at today's prices and assumes no inflation, no investment return, and no change in the contribution. Because it omits inflation, it understates what future replacements will cost by the inflation it leaves out.
Funding Adequacy Analysis
Compares the current annual contribution against the recommended annual contribution:
| Field | Description |
|---|---|
| Current annual contribution | The reserve contribution lines of the active or approved budget; zero when there is no budget line |
| Annual contribution needed | The sum of the components' annual reserve contributions |
| Shortfall or surplus | The difference between needed and current |
| Percent of needed | Current contribution as a percentage of needed |
| Recommended increase | The shortfall as a percentage of the current contribution |
This analysis answers: "Is the association contributing enough each year to meet its projected replacement obligations?"
Reconciliation Warnings
If the ReserveReconciliationService has open warnings, they are included in the RSR:
| Field | Description |
|---|---|
| Warning count | Total open warnings |
| Severity breakdown | Counts by severity level |
| Summary | Aggregated warning descriptions |
Reconciliation warnings indicate discrepancies between the reserve fund's accounting records and its expected state. They may indicate booking errors, missed transfers, or unrecorded expenditures.
Risk Flags
| Flag | Severity | Trigger |
|---|---|---|
| RESERVE_DEPLETED | CRITICAL | Less than 5% funded, which includes a reserve fund with no funding target set, because the report reads a missing percentage as zero |
| NO_RESERVE_STUDY | CRITICAL | No professional reserve study on file |
| SEVERELY_UNDERFUNDED | HIGH | Between 5% and 25% funded |
| STUDY_OVERDUE | HIGH | Professional study is more than 3 years old |
| UNDERFUNDED | MEDIUM | Between 25% and 50% funded |
| COMPONENTS_AT_RISK | MEDIUM | Components in critical or replacement-due status |
| CONTRIBUTION_SHORTFALL | MEDIUM | Annual contribution below recommended level |
| STUDY_DUE_SOON | LOW | Professional study due within 6 months |
| NEGATIVE_PROJECTION | LOW | Projected negative balance within 10-year horizon |
| DEBT_SERVICE_IMPACT | MEDIUM | The association has active debt obligations that affect reserve funding |
Risk flags are sorted by severity (CRITICAL first), then alphabetically by code within the same severity level.
Cryptographic Integrity
RSR packets use the same integrity infrastructure as all CommunityPay institutional packets:
- Content hash: SHA-256 of the canonical JSON snapshot (sorted keys, minimal separators, UTF-8, non-ASCII characters left unescaped)
- Version chain:
previous_packet_hashlinks consecutive reports for the same HOA - Immutability: Evidence snapshot and content hash cannot be modified after generation
- Lifecycle tracking: Append-only event log records creation, generation, delivery, and sharing events
An external party can verify the RSR's integrity without CommunityPay credentials by computing sha256(canonical_json(evidence_snapshot)) — serialized with sorted keys, the separators , and :, and ensure_ascii=False — and comparing the result to the stored content_hash.
Reserve Money and the Statement Set
Reserve money leaves the reserve fund only by a transfer the board has approved. A reserve bill is paid online only after the transfer that funds it has posted, so the reserve balance an RSR reads is the balance the ledger holds. The reserve schedule, with the per-component detail and the required supplementary information, also appears in the financial statement set and the annual package.
This describes production controls as of October 2026. Controls evolve; request a current posture packet for diligence.
How CommunityPay Enforces This
- Reserve balance computed from the same double-entry ledger that enforces fund segregation
- Component register sorted deterministically by ID for consistent content hashing
- 30-year cash flow projection with year-by-year replacement events
- Funding adequacy analysis: current vs. recommended annual contribution with shortfall computation
- Mandatory disclaimer: "No site inspection was performed. This report is not a substitute for a professional reserve study as required by applicable law."
- Reconciliation warnings surfaced from ReserveReconciliationService by severity