Skip to content

Trust Accounting

Per-client trust ledgers, so a pooled account cannot hide one overdrawn client.

The short answer

Trust Accounting gives a law firm one trust ledger per client, with a balance computed from that ledger's own movements rather than stored where a person could correct it. Matters tie every deposit and disbursement to the work it belongs to, IOLTA is a flag on the account, and monthly three-way reconciliation becomes a record with a date. The board counts ledgers below zero.

Request this module

Last updated

What it is for

The bank account balances and one client's ledger does not. That is the whole distinction, and it is the one a general ledger is built to hide. A pooled trust account can be reconciled perfectly to the bank while a single client sits under water, which means their disbursement was funded out of somebody else's retainer. No regulator calls that an accounting error. It is commingling, it is the fastest route to a bar complaint, and the firms it happens to are almost never the ones stealing. They are the ones whose spreadsheet netted several clients into a single figure.

Platform
Odoo
Category
Regulated records
Works with
Odoo 18 · Odoo 19
Technical name
law_firm_trust_accounting
Status
Direct from webbox
Pricing
Paid

What is inside it

  1. 01

    Client ledgers

    A trust account belongs to a client and its balance is the arithmetic of its own transactions. No stored figure exists for anyone to adjust, and IOLTA is a flag on the account.

  2. 02

    Movements

    Each deposit and disbursement names its account and its matter, so money is traceable from receipt to payout. Funds received against no matter get their own figure, not a rounding difference.

  3. 03

    Reconciliation

    The bank statement, the trust ledger and the client ledgers have to agree monthly and be evidenced. Here the reconciliation is itself a record, so what was reconciled and when is a row.

  4. 04

    The board

    Six tiles, led by overdrafts because it is the only one with a disciplinary consequence, then unallocated funds. Clicking a tile opens the ledgers it counted.

What it looks like in practice

  1. The pool is healthy and one client inside it is not

    Six ledgers share one pooled account. The pooled balance looks perfectly fine, and a single client ledger sits below zero.

    Balances are computed per ledger and never netted, so the overdrafts tile counts the ledger rather than the account and opens that client when clicked. A firm reading it weekly finds the overdraft in the week it happens rather than at the annual examination.

    Trust balance
    $245.0k
    Overdrawn ledgers
    1
    Deposits this period
    $75.5k

    Figures from the module's own demo data, on a fresh install. Install with demo data and open the Trust Accounting board.

    Client ledgersThe board

  2. Money arrives and no matter is named on it

    A deposit lands in the pooled account, and nobody has yet said which matter it belongs to.

    Unallocated funds gets a tile of its own rather than a line at the bottom of a report, because it is the next question an examiner asks after overdrafts. The tile opens the records holding it.

    Unallocated funds
    $12.5k

    Figures from the module's own demo data, on a fresh install. Install with demo data and click the Unallocated funds tile.

    MovementsThe board

  3. An examiner asks for the date the last reconciliation was done

    The firm reconciles its trust account each month in a spreadsheet that gets saved over, so the only evidence is the current version of one file.

    The reconciliation becomes a record carrying its own date, which turns the answer into a row somebody can point at. Statements are not imported, which is what most bar rules assume anyway.

    Behaviour of the shipped code.

    ReconciliationClient ledgers

What it deliberately does not do

No bank feed
Statements are not imported. Reconciliation is recorded against figures you enter, which is also what most bar rules assume.
No time and billing
Matters group trust movements. Recording time, raising fee notes and applying trust to an invoice are not here.
No jurisdiction rule pack
Overdrafts and unallocated funds are surfaced. Which forms your bar wants, and when, is yours to know.
Not the Odoo general ledger
Client money is deliberately kept apart from the firm's own accounts. Nothing here posts to account.move.

Questions

Can I install this on Odoo Online?
No. Odoo Online cannot install modules that contain Python, so this runs on Odoo.sh or a self-hosted instance. Check the versions listed above for the series and edition it is verified against.
Does it import my bank statements?
No. There is no bank feed. Reconciliation is recorded against figures you enter, which is what most bar rules already assume, so the record proves the exercise happened on a stated date rather than proving a statement matched automatically.
Does it post to Odoo Accounting?
No, and deliberately not. Client money is kept apart from the firm's own accounts, and nothing here writes to account.move. These ledgers are a separate register, which is the entire reason client funds live outside operating funds in the first place.
Can it do time and billing against a matter?
No. Matters exist here to group trust movements and name what each deposit or disbursement was for. Recording time, raising fee notes and applying trust money to an invoice sit outside this, so your practice-management system keeps that work.

Have something to build?

Tell us the problem. We'll come back with a plan, a price, and who'd actually build it.

  • Free scoping call
  • Reply within 1 business day
  • No lock-in