/reconciliation/overview Beta
Reconciliation answers one question: does the money the bank says arrived match the payments the
system recorded?
Everything else follows from that. A statement line with no payment behind it is money you have
received but not credited to anyone. A payment with no statement line behind it is money you think
you have but the bank has never seen.
statement imported → lines matched against payments → what the engine could not decide goes to a human → exceptions resolved → the period is signed off.
Importing a statement never creates, changes or allocates a payment. Statement lines are
evidence. The only way this module writes a payment is the explicit Post payment action on a
line you have reviewed, and that action is idempotent — pressing it twice cannot double-post.
Before you start: two switches
Reconciliation is off until both of these are on. Neither reports an error when it is off — a run simply completes having examined nothing, which looks identical to “everything is already reconciled”.1
Turn the module on for the organization
The feature flag
payments_reconciliation must be enabled for your organization or branch.
Ask an administrator, or see Feature flags.2
Enrol each bank account
A bank account participates only when Reconciliation enabled is switched on for it, under
Bank accounts. Accounts are enrolled one at a time on purpose: you
reconcile the accounts you have statements for, not every account you have ever created.
Step 1 — Import a statement
Statements come in through the Bulk Upload wizard, not through a separate uploader on this page. The Imports tab is the history of what has been filed.1
Open the wizard
Bulk Upload → Bank Statements (for reconciliation).
2
Choose the account and the format
Both are required and neither can be guessed from the file — several banks export the same
column layout, and filing a statement against the wrong account would attribute one
organization’s money to another.
3
Map the columns (usually nothing to do)
The parser recognises the standard headers for each format. Map a column only when your export
uses a name it does not recognise.The single most valuable column is the Receipt / Reference No. — the M-Pesa receipt or bank
reference. An exact match on it reconciles a line automatically with no human step. Without it,
every line needs a person.
Step 2 — Matching
A match run starts automatically after an import, and you can start one any time with Reconcile now. Each unresolved line is scored against the payments on that account within the date window.
Confidence bands are 95 / 80 / 60. Auto-approve is off by default: the engine proposes, a person
disposes.
Step 3 — Work the worklist
Reconciliation → Worklist is the queue of lines that need a person. Open a line to reach the workbench, which puts the statement evidence beside the candidate payments and shows the per-component score for each one, so you can see why something was suggested. From the workbench:
Every one of these is recorded on an append-only trail with who did it and when.
Step 4 — Exceptions
An exception is a typed finding, not a generic error:Step 5 — Sign the period off
Reconciliation → Periods closes the loop. A period covers one bank account for one month, and it cannot be signed off while anything in it is unresolved — that refusal is the control. A signed period can be reopened by an administrator, but the reason is mandatory and is kept.Re-importing the same statement
Safe. There are two guards:- Line level — each line is hashed on its identity fields, so the same transaction cannot be staged twice even if the file is re-exported with different column order or spacing.
- File level — a file already staged for that account is recognised and skipped.
Troubleshooting
Related
- Bank accounts — enrolling an account
- Payments — how payments are recorded in the first place
- Bulk upload — the import wizard and its run log
- Allocations — what happens to a payment after it is reconciled