{% extends "ui/templates/base/layout.html" %} {% block content %}
Accounting · Bank Reconciliation
Compare normalized Bank Analyzer transactions with Tally Bank ledgers. Phase 20 remembers each client bank-account ↔ Tally-ledger mapping, can reconcile every mapped account in one action, supports wider cheque/clearing timing windows, and keeps reviewer resolutions. Tally access remains read-only.
Choose the completed client-bound analysis whose imported bank transactions you want to reconcile. The job can contain any number of bank accounts.
Mappings are remembered client-wise and company-wise. Once all accounts are mapped, future reconciliation runs do not require selecting the bank ledger again.
Use a wider timing tolerance for cheque issue/presentation or deposit/clearing differences. Amount and bank direction must still match exactly before the engine considers a Tally voucher as a candidate.
Runs preserve their results and never modify Tally.
| Run | Bank / Account | Period | Status | Result | |
|---|---|---|---|---|---|
| #{{ run.id }} | {{ run.bank_ledger_name }} {{ run.account_number or "All imported accounts" }} |
{{ run.date_from }} → {{ run.date_to }} | {{ run.status|replace('_',' ')|title }}{% if run.last_error %} {{ run.last_error }} {% endif %} |
{% set s = run_summaries.get(run.id, {}) %}
{% if run.status=='completed' %}
Matched {{ s.get('matched',0) }} · Probable {{ s.get('probable_match',0) }} · Timing {{ s.get('timing_difference',0) }}
Bank only {{ s.get('bank_only',0) }} · Books only {{ s.get('books_only',0) }} · Duplicate {{ s.get('duplicate_candidate',0) }}
Unreconciled net difference ₹{{ '%.2f'|format(s.get('unreconciled_net_difference',0)) }}
{% else %}—{% endif %}
|
Open |
| No reconciliation runs yet. | |||||
{{ selected_run.date_from }} → {{ selected_run.date_to }} · Status {{ selected_run.status|replace('_',' ')|title }}
| Result | Bank Statement | Tally | Why | Action |
|---|---|---|---|---|
|
{{ item.match_status|replace('_',' ')|title }}
{% if item.confidence %} {{ item.confidence }}% {% endif %}
|
{% if item.bank_transaction_id %}
{{ item.bank_date }} · {{ item.bank_direction }} · ₹{{ '%.2f'|format(item.bank_amount) }}
{{ item.bank_reference or '-' }}
{{ item.bank_narration }}
{% else %}—{% endif %}
|
{% if item.tally_voucher_number or item.tally_guid %}
{{ item.tally_date }} · {{ item.tally_voucher_type }} · ₹{{ '%.2f'|format(item.tally_amount) }}
Voucher {{ item.tally_voucher_number or item.tally_guid }}
{{ item.tally_reference or '-' }}
{{ item.tally_narration }}
{% else %}—{% endif %}
|
{{ item.match_reason }} |
{% if item.resolution_status and item.resolution_status != 'unresolved' %}
Reviewed: {{ item.resolution_status|replace('_',' ')|title }}{% if item.resolution_note %}
{% endif %}
{% if item.match_status=='bank_only' and item.bank_transaction_id %}
Open Accounting Queue
{% endif %}
{{ item.resolution_note }} {% endif %} |
| No reconciliation rows for this filter. | ||||