Bank Reconciliation

Matching a bank statement's lines to payment vouchers, so the money that has actually arrived in the bank is confirmed against the vouchers staff have recorded. This page covers the Bank Reconciliation list and its three actions: Auto-match, Bifurcate and Close.

Where statements come from

There is no Upload statement button in this console. A bank statement is uploaded through the API (permission bank_statement.upload exists for that surface, not for a button here). Once a statement exists, it appears in this list and the console is where you work through its matching and finally close it.

The Bank Reconciliation list

Nav: Billing → Bank Reconciliation. Permission required to view the list: bank_statement.view. Like Payment Vouchers, there is no create or edit form — statements arrive via the API (see above) — but each row can be opened to a read-only detail view (below). Every column and action on this list still operates on the whole statement, not on its individual lines.

ColumnShows
statement_dateThe date of the statement, sortable.
Bank accountThe bank account the statement belongs to (bankAccount.name).
file_nameThe uploaded statement file's name.
StatusThe statement's processing/reconciliation status — badge, coloured as in the diagram below.
total_entriesHow many lines the statement contains in total.
matched_entriesHow many of those lines have been matched to a voucher.
unmatched_entriesHow many lines are still unmatched.

Filter

FilterNarrows by
StatusAny of the 6 BankStatementStatus values (see the diagram below).
Line detail is read-only

The detail view (below) lets you see a statement's individual lines, but you still cannot match or unmatch any one of them by hand there — the Lines table is read-only, with no relation-manager actions. The three totals columns (total_entries, matched_entries, unmatched_entries) are the only line-level visibility on the list itself; the actual matching happens through the aggregate actions below.

Screenshot placeholderThe Bank Reconciliation list — columns for statement date, bank account, file name, status and the total/matched/unmatched entry counts; the Status filter open above the table.

Viewing a statement Built

Use the View row action to open a statement's detail page — read-only, gated by the same bank_statement.view permission as the list. It has two info panels plus one child table:

Below the panels, a read-only Lines table: one row per statement line, showing the line number, transaction date, description, reference, debit, credit, running balance, processing status, match status and the payment voucher it matched (if any). Everything here is read-only — a statement is advanced through reconciliation by the Auto-match / Bifurcate / Close actions below, not edited as a form.

Screenshot placeholderThe Bank Statement detail page: "Statement" and "Reconciliation" info panels, with a "Lines" table below (line number, transaction date, description, reference, debit, credit, balance, processing status, match status, matched voucher).

The statement lifecycle

A statement moves through 5 states on its way to being reconciled, with a 6th (Failed) if parsing goes wrong. Uploading and parsing happen automatically; the three console actions work on a statement once it reaches Parsed.

Auto-match Built

Works through the statement's unmatched cheque/DD lines and matches each one, by instrument number and amount, to a single candidate voucher in state Deposited. Visible on statements in state Parsed or Reconciling.

Permissions

Requires bank_statement.reconcile (or super-admin).

  1. Find a statement with unmatched lines

    Filter by Status = Parsed or Reconciling, and check unmatched_entries is greater than zero.

  2. Select Auto-match

    Icon: link.

  3. Confirm

    A confirmation dialog asks you to confirm before running the match.

  4. Result

    For each cheque/DD line where instrument number and amount match a single Deposited voucher: that voucher is cleared (moves to Cleared), and any duplicate Suspense voucher covering the same money is cancelled. The statement's matched_entries/unmatched_entries counts recompute, and its status advances toward Reconciling.

Bifurcate Built

Splits a single gateway settlement line into the individual payments it actually represents. Only appears when at least one of the statement's lines needs this — a line whose internal processing status shows it is awaiting gateway splitting. Visible on statements in state Parsed or Reconciling.

Permissions

Requires bank_statement.reconcile (or super-admin) — the same permission as Auto-match.

  1. Look for the Bifurcate button

    It only shows up on a statement that has a line description the system recognises as a Razorpay or CCAvenue settlement and that still needs splitting. If you don't see it, the statement has no such line right now.

  2. Select Bifurcate

    Icon: arrows-pointing-out.

  3. Confirm

    A confirmation dialog asks you to confirm before proceeding.

  4. Result

    The system detects which gateway (Razorpay or CCAvenue) the line came from, fetches that gateway's settlement detail, and records the individual settlement payments as vouchers so each can be matched separately.

Close Built

Finalises the statement once every line has been resolved. Visible on statements in state Parsed or Reconciling.

Permissions

Requires bank_statement.close (or super-admin) — note this is a different permission from the one that guards Auto-match and Bifurcate.

  1. Make sure every line is resolved

    Run Auto-match and, if it appears, Bifurcate first until unmatched_entries is zero (or you have deliberately decided the remaining lines need no action).

  2. Select Close

    Icon: lock-closed, colour success.

  3. Confirm

    A confirmation dialog asks you to confirm before closing.

  4. Result

    The statement moves to Reconciled and is finalised.

Close is blocked while lines are still pending

Close is refused if any line on the statement is still awaiting a match, or still awaiting gateway bifurcation. Work through Auto-match and Bifurcate until nothing is left pending, then try Close again.

Screenshot placeholderThe Auto-match confirmation dialog on a Parsed statement.
Screenshot placeholderThe Bifurcate confirmation dialog, shown only when a gateway-settlement line needs splitting.
Screenshot placeholderThe Close confirmation dialog, and the error notification shown when Close is refused because lines are still pending.

What isn't in this console Planned / elsewhere

See also