Back to BlogSecurity & Compliance

Owner Statements and Trust Accounting in Property SaaS

Rupak Amin

Founder & Lead Engineer, RAITHub

9 min read

Owner statements and trust accounting are where property SaaS stops being a CRUD app, because you are accounting for other people's money. Build the money side as a double-entry ledger in integer minor units, keep each owner's balance segregated, reconcile against the bank, and never rewrite history. An owner statement is then a report over the ledger, and it must balance to the cent.

This is general information, not accounting, tax or legal advice, and RAITHub does not provide an accounting product or a licensed service. Trust-accounting rules for holding client money differ by jurisdiction and are strict; confirm what applies to you with your adviser. If you would rather have the engineering built and tested for you, see how RAITHub would build this below.

What makes trust accounting different from ordinary billing?

Trust (or client-money) accounting means you hold money that belongs to someone else, an owner's rent, a tenant's deposit, until it is paid out or applied. In many places that money must sit in a segregated account, must never be mixed with the firm's own funds, and must be reconcilable at any moment. That is a much higher bar than ordinary SaaS billing (building online rent collection covers the collection side); the balances are not yours, and being out by a cent is a serious problem, not a rounding nuisance.

Why a double-entry ledger, not a balance column?

Because a single balance column you add to and subtract from has no history and no self-check: when it is wrong, you cannot tell why. A double-entry ledger records every movement as balanced debits and credits, so the books prove themselves, every amount came from somewhere and went somewhere. The full schema is in double-entry ledger database design in PostgreSQL; the property-specific part is the accounts you keep.

AccountRepresents
Owner liability (per owner)Money you hold that is owed to that owner
Tenant deposit (per tenancy)Deposits held, segregated and returnable
Trust bankThe segregated client-money bank account
Management fee incomeThe firm's own earned fee, moved out of trust
Contractor payableMaintenance costs owed, to deduct from an owner

How do you guarantee every statement balances?

Enforce two invariants in the database. First, every transaction's debits equal its credits (the ledger constraint). Second, money is stored as integer minor units, so there is no floating-point drift. An owner statement is then a query over that owner's ledger for the period: rent received, fees and costs deducted, net paid out, closing balance, and because the ledger balances, the statement balances by construction.

-- An owner statement is a report over the owner's liability account.
-- Opening + rent received - fees - costs - payouts = closing.
SELECT
  sum(amount_cents) FILTER (WHERE kind = 'rent_received')  AS rent_received,
  sum(amount_cents) FILTER (WHERE kind = 'management_fee') AS fees,
  sum(amount_cents) FILTER (WHERE kind = 'maintenance')    AS costs,
  sum(amount_cents) FILTER (WHERE kind = 'payout')         AS paid_out
FROM ledger_entries
WHERE owner_id = $1
  AND occurred_at >= $2 AND occurred_at < $3;   -- the statement period

Keep amounts as bigint minor units and let the double-entry constraint reject any unbalanced transaction, so a statement can never silently fail to add up.

How do you reconcile against the bank?

The trust ledger's balance must match the segregated bank account. Import the bank statement, match each line to a ledger entry, and flag anything unmatched on either side: a payment in the bank with no ledger entry, or a ledger entry not yet in the bank. A daily scheduled job can compute the trust balance and compare it to the imported bank balance, raising an alert on any difference, so a discrepancy is caught the day it appears, not at year end. Year-end and periodic reconciliation outputs are discussed for commercial portfolios in custom commercial property management software.

How do you keep the record trustworthy?

Make the ledger append-only. A mistake is corrected with a reversing entry and a new correct one, never by editing or deleting history, so the trail of how every balance was reached is intact. Record who did what in an append-only audit log (designing an audit log customers trust), and scope every balance to the firm and the owner so no one sees money that is not theirs (row-level security for multi-tenant Postgres). The first time an owner questions a statement, that record is what answers them.

How do you test owner statements and trust accounting?

TestWhat it proves
Every transaction balancesDebits equal credits; an unbalanced write is rejected
Statement reconcilesOpening + inflows - outflows = closing, to the cent
SegregationFee income leaves trust correctly; client money is never mixed
Bank reconciliationTrust balance matches the bank; unmatched lines are flagged
CorrectionsA fix posts a reversal; history is never edited
AccessAn owner sees only their own statement; cross-firm reads 404
// tests/accounting/statement-balances.spec.ts
import { test, expect } from 'vitest'
import { buildStatement, openingBalance } from '@/lib/statements'

test('a statement closes to opening plus net movement', async () => {
  const s = await buildStatement({ ownerId: 'o1', period: '2026-09' })
  const expected = (await openingBalance('o1', '2026-09'))
    + s.rentReceived - s.fees - s.costs - s.paidOut
  expect(s.closingBalance).toBe(expected) // to the cent
})

Buy, build or hire?

OptionWhat you getChoose this when
Dedicated trust-accounting softwareA product built for client money, often with local compliance featuresYou need a packaged, supported accounting product and it fits your market
A general accounting packageBooks, but not property- or trust-awareSimple portfolios where an accountant bridges the gap
A custom ledger in your SaaSOwner statements and trust balances inside your product, on a ledger that proves itselfAccounting is part of your platform and must tie to rent, leases and maintenance
A managed QA team on your buildBalance, reconciliation and access suites gated in CIYou have the ledger but "the books always balance" isn't proven on every build

How long does it take to build yourself?

The double-entry ledger, owner-statement reporting and the balance tests are in the 6 to 12-week backend range; bank reconciliation and audit tooling sit at the top of it, in phases. The main risk of doing it yourself is treating client money like ordinary billing: a single balance column and floating-point maths produce statements that don't reconcile, and with money that isn't yours, that is the one failure a property manager cannot absorb. Because trust-accounting rules vary and are strict, scope the compliance requirements with your adviser before you build.

Why RAITHub for this

RAITHub runs integer-money accounting with database-enforced limits and a hash-chained audit log on Sundor Skin (146 tables, 530+ tests), and Stripe rent collection on PropDesk (1,024 tests). The ledger and money-flow engineering is the API and backend development service, inside SaaS development. See the real-estate industry page. RAITHub builds the engineering; your adviser owns the accounting and compliance.

When you don't need us

  • Dedicated trust-accounting software fits your market. A packaged, locally-compliant product may be the safer route.
  • Your portfolio is small and your accountant handles the books. A general package may be enough.
  • You need an accounting or compliance product or advice. RAITHub provides neither; use a qualified adviser and, where required, a licensed product.

How RAITHub would build this

  • Scope: a double-entry ledger in integer minor units with per-owner and per-tenancy segregation, owner-statement reporting, bank reconciliation, append-only corrections, an audit log, and firm- and owner-scoped access.
  • Timeline: 6 to 12 weeks for a backend-heavy money system, in phases; a narrow first slice can fit a 4 to 6-week fixed scope.
  • What you receive: the balance, reconciliation and access suites gated in CI, runbooks, the product on accounts you own, IP assigned to you and an NDA as standard.
  • Ways to buy it: a fixed-scope build, a dedicated monthly team, or a QA plan if you only need the accounting test suite.
  • Next step: a free 15-minute technical audit, then a fixed written quote.

See the QA as a Service page, or book the free 15-minute audit. This is general information only; confirm trust-accounting rules with your adviser.

Documentation checked on 10 October 2026.

Frequently asked questions

What is trust accounting in property management?

Accounting for money you hold that belongs to someone else, such as an owner's rent or a tenant's deposit, until it is paid out or applied. In many jurisdictions it must sit in a segregated account, never mixed with the firm's funds, and be reconcilable at any time. The exact rules vary, so confirm them with your adviser.

Why use a double-entry ledger for owner statements?

Because a single balance column has no history and cannot check itself. A double-entry ledger records every movement as balanced debits and credits, so each amount came from somewhere and went somewhere, and an owner statement built over it balances by construction rather than by hope.

How do you make sure a statement balances to the cent?

Store money as integer minor units so there is no floating-point drift, and enforce in the database that every transaction's debits equal its credits. The statement is then a query over the owner's ledger, and opening plus inflows minus outflows equals the closing balance exactly.

How do you reconcile trust money against the bank?

Import the bank statement, match each line to a ledger entry, and flag anything unmatched on either side. A scheduled job can compare the trust ledger balance to the bank balance daily and alert on any difference, so a discrepancy is caught when it appears rather than at year end.

Does RAITHub provide accounting or compliance advice?

No. RAITHub builds the engineering, a ledger, statements and reconciliation that are correct and tested, but it does not provide accounting, tax or legal advice, and does not offer a licensed accounting product. Trust-accounting rules are strict and vary by jurisdiction; confirm what applies to you with your adviser.

trust accountingowner statementsproperty management saasdouble-entry ledgerclient moneyreconciliation

Ready to discuss your project?

Book a free 15-minute technical audit with our engineering team.