Bank accounts

The accounts money moves through — setup, ledger mapping, payment routing, collection scope and payer-facing checkout.

Finance → Accounting → Bank Accounts → /banks

Every receipt, expense payment, refund, disbursement and wallet top-up names a bank account. The bank account record is what connects that movement to the general ledger and, for collections, to the paybill a tenant actually pays into.

What a bank account record holds

FieldPurpose
Account nameThe display name staff will choose from. Make it unambiguous.
Account numberThe account identifier. Also the key incoming bank/M-Pesa webhooks match on.
Bank name / display nameThe institution.
Account typeThe kind of account.
Ledger accountThe chart-of-accounts account this bank maps to. Without it, cash movements cannot post.
PaybillThe mobile-money paybill or till used for collections into this account.
Payment reference separatorHow a payer's account reference is composed, for automatic matching.
AutomatedWhether receipts into this account arrive automatically through an integration.
Admin onlyHides the account from payer-facing checkout entirely, regardless of Availability.
StatusActive or inactive.

Adding a bank account

  1. Create the account

    Name, bank, account number and type.

  2. Map it to the ledger

    Choose the chart-of-accounts cash/bank account. This is the step that makes reconciliation possible.

  3. Configure collection details

    Paybill and reference separator, where tenants pay into this account.

  4. Set automation

    Mark it automated if receipts arrive through an integration rather than being keyed in. If the account collects by M-Pesa STK push, set up the push credentials on the M-Pesa tab (see below).

  5. Activate it

    Only active accounts appear in payment, refund and disbursement forms.

The account drawer

Opening an account shows a set of tabs. Which ones appear depends on the account:

TabShowsWho can change it
OverviewBalance tiles (paid, arrears-relevant totals) and recent activity
M-PesaSTK push credential setup — only shown on accounts configured for Daraja pushAdmins
ActivityThe account's payment history
SharingWhich properties collect through this accountStaff with Banks permissions
AvailabilityWhich units and charge types may pay into this accountStaff with Banks permissions
SettingsHow the account behaves, in plain language, plus its identity detailsStaff with Banks permissions; identity fields are locked once the account has activity

M-Pesa / STK push setup

For accounts that collect by Safaricom Daraja STK push, the M-Pesa tab holds the consumer key, consumer secret, passkey and business short code. Once saved, the secret fields display masked — re-entering the shortcode alone does not blank the stored credentials.

Account sharing

Multiple properties can collect through the same settlement account — a paybill shared across a portfolio, for example. The Sharing tab lists every property you're allowed to grant, shows which are already sharing the account, and how much each has collected through it, so you can see the impact before withdrawing access. The property that owns the account can't be removed.

Availability

Sharing an account with a property doesn't mean every unit in it should pay there. Availability controls which units — and which charge types — may use the account, in three modes:

  • All units — no restriction (the default).
  • Include only — pick specific blocks or units allowed to pay into this account.
  • Exclude — allow everywhere except specific blocks or units.

Charge types (Rent, Water, Service Charge, and so on) are a separate, independent restriction on the same tab — leave unset for no restriction.

Settings and locked fields

The Settings tab explains, in plain language, what each switch on the account currently does (not just whether it's on) — active status, admin-only visibility, automation, and the payment reference format, complete with a live preview of what a tenant would see on their reference.

Once an account has real activity — payments received, resolvable STK credentials, or reconciliation turned on — its identity fields (account number, paybill, bank) lock. This protects the trail: an account number is the key every bank and M-Pesa webhook matches against, so changing it after receipts exist would split that history across two values. The form explains why a locked field can't be edited and what would break if it could.

If an account's identity is genuinely wrong, don't fight the lock — deactivate it and create a correct replacement. That keeps historical payments and ledger postings pointing at the account they actually happened against. A super admin can override a locked field directly, but only with a recorded reason, and it's a last resort.

Active and inactive accounts

Accounts can be deactivated rather than deleted. An inactive account:

  • no longer appears when recording new payments, expenses, refunds or disbursements;
  • keeps every historical movement, so past reconciliations and statements stay intact.

Payer-facing checkout

Where tenants pay through a portal or a checkout flow, the set of accounts they may pay into is derived from your bank accounts, filtered by Admin only, Availability, and — for a specific invoice — which charge type it's for and which payment rails the account actually supports (bank transfer, STK push, and so on). An account intended for owner disbursements should not appear as a rent-collection destination.

Review the payer-facing list whenever you add an account or change Availability, so a new internal account does not quietly become a tenant payment option.

Reference matching

Automatic matching of an incoming mobile-money or bank payment to a lease relies on the payer using the right reference. The payment reference separator defines how that reference is constructed, so the receipt can be attributed without a human reading it. The Settings tab shows a live preview of the composed reference, so you can confirm it before communicating it to tenants.

Communicate the reference format on invoices and in reminders. Most unmatched receipts are payers using a reference nobody told them to use.

Reconciliation

Enrolling an account

Statement reconciliation is opt-in per account. Open the account, press Edit, and switch on Reconcile this account's statements under Integrations.

Until it is on, the reconciliation engine skips the account entirely — including any statement already imported against it — and it does so without reporting anything. A match run over an unenrolled account completes having examined nothing, which on screen is indistinguishable from "everything already reconciles". Enrol the accounts you actually hold statements for, and no others.

The account's detail page reports the state as Enrolled / Not enrolled, and enrolling an account locks its account number against editing — the statements filed against it are matched on that number. See Payments reconciliation for the rest of the flow.

Working a reconciliation

  1. Work one account and one period at a time

    Mixing accounts is how items get double-counted.

  2. Match on reference, not amount

    Amounts repeat; references do not.

  3. Check all four directions of movement

    Receipts in, expense payments out, refunds out, owner disbursements out. A bank line with no counterpart in any of the four is an unrecorded transaction.

  4. Confirm the ledger balance

    The mapped ledger account's balance should equal the reconciled bank balance.

Common problems

SymptomCause and fix
Bank account not selectableIt is inactive, marked Admin only, or Availability excludes that unit or charge type.
Cash postings missing from the trial balanceThe bank account has no ledger account mapped.
Receipts arriving unmatchedPayers using the wrong reference, or the reference separator is misconfigured.
Tenant paid to the wrong paybillAn account exposed to payers that should not have been. Review Availability and the Admin only flag.
Can't edit account number, paybill or bankThe account has activity and its identity fields are locked. Deactivate it and create a corrected account instead.
STK push test passes but pushes still failTest only checks the consumer key and secret — a wrong passkey or short code won't show up there.
A property shares an account but its units still can't paySharing grants the property; Availability separately controls which units and charge types within it. Check both tabs.

Next steps