Skip to content

Bank-Reconciliation Detail Reports — Outstanding Checks / Deposits in Transit / Bank Deposits

Date: 2026-07-01

Problem / motivation

Peachtree's Account-Reconciliation section lists the uncleared items behind a bank rec: Outstanding Checks ("checks that have not yet cleared the bank"), Deposits in Transit ("deposits that have not yet cleared the bank"), and the Bank Deposit Report ("details for each bank deposit"). Our Bank Reconciliation flow stamps ledger_entry_lines.cleared_at when a line clears, so "uncleared" is simply cleared_at IS NULL on the bank account's ledger lines. Phase 5 of the Peachtree Report Parity tracker.

In scope

  • outstanding_checks(account_id, as_of_date?, generate_csv) — uncleared credit lines (money out / checks) on the account as of the date.
  • deposits_in_transit(account_id, as_of_date?, generate_csv) — uncleared debit lines (money in / deposits) on the account as of the date.
  • bank_deposit_report(account_id, date_filter, generate_csv) — all deposit (debit) lines on the account in a date range, cleared or not.
  • Posted entries only; as_of_date defaults to today. Path.REPORTS. CSV-exportable.

Out of scope

  • Other Outstanding Items — Peachtree's catch-all for uncleared items that are neither deposits nor checks; our ledger models everything as debit/credit lines, so the deposit/check split already covers them. Deferred as a distinct report.
  • Statement-level reconciliation summary — already covered by the Bank Reconciliation feature.

Data model changes

None. Reads posted ledger_entries / ledger_entry_lines (account_id, cleared_at, debit_amount, credit_amount) for the chosen bank/cash account. No migration, no new Path/Resource.

What's being implemented

  • Responseapp/graphql/reports/strawberry/bank_rec/bank_rec_report_response.py (BankReconciliationItemResponse).
  • Repositoryapp/graphql/reports/repositories/bank_rec/bank_rec_report_repository.py (uncleared_lines, deposit_lines).
  • Serviceapp/graphql/reports/services/bank_rec/bank_rec_report_service.py.
  • Queriesapp/graphql/reports/queries/bank_rec/bank_rec_report_queries.py.
  • Teststests/graphql/reports/test_bank_rec_reports.py.

GraphQL surface

outstandingChecks(accountId: UUID!, asOfDate: Date, generateCsv: Boolean! = false): GenericReportPage!
depositsInTransit(accountId: UUID!, asOfDate: Date, generateCsv: Boolean! = false): GenericReportPage!
bankDepositReport(accountId: UUID!, dateFilter: DateRangeFilter!, generateCsv: Boolean! = false): GenericReportPage!

type BankReconciliationItem { entryDate: Date!, entryNumber: String!, memo: String, debitAmount: Decimal!, creditAmount: Decimal! }

Frontend contract

  • Pick a bank/cash account. Outstanding Checks → sum creditAmount; Deposits in Transit → sum debitAmount; both are as-of a date (default today). Bank Deposit Report lists deposits over a range. generateCsv: truecsvUrl.

Future additions

  • Dedicated "Other Outstanding Items" report if a non-deposit/non-check classification is introduced.