Double-entry accounting
A genuine double-entry ledger with a chart of accounts, sub-ledgers and reporting dimensions — not a transaction list with a report bolted on. Rent, fees, deposits, supplier invoices and depreciation all post into the same place, so the trial balance is the business rather than a monthly reconstruction of it.
What it does
Chart of accounts
Assets, liabilities, income and expense, with sub-ledger and reporting dimensions carried on every line so a figure can be traced to the property, unit, tenant, owner or vendor behind it.
Balanced batches only
A journal batch cannot post unless total debits equal total credits. This is a constraint, not a validation message — an unbalanced batch has no path into the ledger.
Immutable postings
Once an entry is posted it cannot be edited. Corrections are made by reversal and repost, so the original, the reversal and the correction all survive.
Automatic posting from operations
Lease billing, rent receipts, late fees, CAM settlements, supplier invoices and depreciation post themselves. Nobody re-keys an operational event into the accounts.
Idempotent by source
Postings are keyed on the event that caused them, so a retried webhook or a repeated job cannot double-post the same rent.
Owner statements
Management fees and owner payables accrue as the rent arrives, so an owner statement is a query rather than a spreadsheet.
How it works
The sequence an operator actually follows, not a feature list rearranged into steps.
- 1
An operational event happens — rent is received, an invoice is approved, a month closes.
- 2
The platform composes the journal lines, with the property, tenant or vendor carried as dimensions.
- 3
The batch posts only if it balances, and only once per source event.
- 4
A mistake is corrected by reversing the entry and reposting, with a reason recorded.
What the database guarantees
These hold whether or not the interface remembers to check.
- No batch posts unless debits equal credits.
- Posted entries and journal lines are append-only, enforced by database trigger.
- A correction always leaves the original entry and its reversal visible.
What it does not do yet
You will ask this in an evaluation, so here it is without being asked.
- No direct integration with external accounting packages. Export is by report, not by API sync.
- Consolidated multi-company reporting exists at the data level but has limited presentation in the interface.
Works with
These share the same database, so nothing is re-keyed between them.
