Property COA Wizard
Overview
The Properties module needs a specific set of accounts to post to — rent income, mortgage interest, deposit liability, depreciation, and so on. Rather than making each user hand-wire these mappings, the Property COA Wizard creates the 12 accounts in one click (using sensible Canadian-residential defaults) and writes a workspace.propertyAccountDefaults map that every auto-posting flow reads from.
Run the wizard once per workspace, when you first enable Properties. You can re-run it later to add a missing account, but it won’t overwrite accounts that already exist.
The 12 accounts
| Key | Suggested number | Type | Used by |
|---|---|---|---|
rentIncome | 4300 | Income | Rent invoice generator; rent receipt JEs. |
lateFees | 4310 | Income | Manual late-fee invoices. |
tenantDepositsHeld | 2300 | Liability | Deposit intake / disposition. |
propertyTax | 5200 | Expense | Manual property-tax bills. |
insurance | 5210 | Expense | Manual insurance bills. |
repairs | 5220 | Expense | Repair & maintenance bills. |
utilities | 5230 | Expense | Utilities bills. |
managementFees | 5240 | Expense | Property management bills. |
mortgageInterest | 5300 | Expense | Mortgage payment split. |
depreciation | 5900 | Expense | Monthly depreciation JE for building. |
buildings | 1700 | Asset (fixed) | Convert-to-operating JE; depreciation contra. |
land | 1710 | Asset (non-depreciable) | Convert-to-operating JE. |
Account numbers are suggestions — if the client already uses a different numbering scheme, edit each account before clicking Seed accounts.
Screen layout
Top banner: Current completion state — “12 / 12 accounts mapped” when fully configured, or “4 missing” with a one-click “Seed missing” button.
Table: One row per slot. Columns: Slot key, Suggested number, Suggested name, Picker (active CoA accounts of the matching type), Status (Mapped / Missing).
Creates any unmapped account using the suggested number + name + type, then writes it to the defaults map. Idempotent — if an account with the suggested number already exists, it’s re-used rather than duplicated.
Per-row. Points the slot at an existing account of the matching type. Useful when the client already has, say, a 4300 — Rental income account in place.
Persists the full map to workspace.propertyAccountDefaults. Uses a targeted $set so legacy workspace members aren’t re-validated on save.
How the defaults are consumed
Every auto-posting flow in Properties reads from this map:
- Rent invoice generator —
rentIncomefor the line item account. - Residential-rent HST auto-exemption — applied to rent line items regardless of the workspace tax code (HST, GST, GST_PST, GST_QST, PST, QST, SALES_TAX).
- Deposit intake —
tenantDepositsHeldon the credit side. - Deposit disposition —
tenantDepositsHeldon the debit side; deduction targets are picked per-row. - Mortgage payment —
mortgageInterestfor the interest expense portion. - Convert to operating —
buildingsandlandfor the capitalisation JE. - Depreciation cron —
depreciationfor the expense line,buildingsas the contra accumulated-depreciation.
If a required slot is missing when one of these flows runs, the backend rejects the request with Account default "X" is not configured — run the Property COA wizard. No half-posted JEs, no silent miscoding.
Actions
First-time setup
- Enable Properties for the client (see Enable Properties guide).
- Open Settings → Books → Property account defaults.
- Click Seed missing. All 12 accounts are created using the suggested numbers + names and mapped into the defaults.
- Click Save defaults.
Align with an existing chart of accounts
If the client already tracks rental income separately (common for clients transitioning from another platform), skip the seeding step:
- For each slot, click the picker and select the existing account.
- Slots with no matching existing account — click Seed missing to create just those.
- Click Save defaults.
Re-run after adding a slot
When a future release adds a new required slot (e.g. separate parkingIncome), the banner will show “1 missing” until you re-run the wizard. The existing 12 mappings are untouched.