DocsControls

Cash-in-bank reconciliation at scale

All documentation pages

Every format parsed the same way, every line matched in passes, every break named

  • Domain: Finance & Accounting
  • Moment: After the money moves
  • Customer: A consumer finance issuer with high daily collection and disbursement volume

Reconcile every statement format through one controlled process.

The situation

A consumer finance issuer collects and disburses through many channels: direct debit, agent and retail counters, mobile transfers, card settlement, payroll deduction. Money lands in several bank accounts daily and must tie back to a source report.

The statements arrive every morning. One bank exports Excel. One produces a PDF built to be printed. One sends fixed-width text where the sign is a trailing character. Internal reports come from collections, disbursement and settlement, each with its own reference format.

Someone normalises all of it by hand before any reconciliation starts. That person is the control.

What breaks today

Normalisation runs before the control, so the control is always late. Split the column, fix the dates, strip the separator, decide whether a bracketed number is a credit or a debit. Nothing is matched until that finishes.

PDF statements require layout-aware reading. Column positions can shift when a description runs long, a page break can land mid-transaction, and a brought-forward line can look like a movement. One reading error can affect later opening balances.

Fixed-width files can change without warning. If one field widens upstream, every later position shifts. The amounts may still parse while carrying the wrong values.

Matching needs an ordered set of rules. Some lines carry a full payment reference, some carry a truncated reference, and others carry only a counterparty name. Late settlement and net batches add more variation. The current sequence of fallbacks and date windows often depends on one analyst.

A duplicate looks exactly like a genuine payment. A resubmitted direct debit, a reversal and re-post, and a real second payment of the same amount by the same customer on the same day are indistinguishable on a statement line. Match the wrong one and two ledgers stay wrong.

What Manuel does

Registers each source once. Files arrive by SFTP, API, database read, or email attachment through delegated Microsoft 365 permissions. Each has an owner, schedule, and expected format. An unfamiliar format is held for review.

Parses every format into one normalised record. Excel, PDF, and fixed-width text each produce the same fields: value date, posting date, amount, direction, currency, account, bank reference, counterparty, description, and source line. Each value keeps its source location.

Validates the file before it is used. Line count against the trailer. Opening balance against yesterday's close. Movements against the stated net movement. A file that fails does not enter the reconciliation.

Matches in passes, written as statements about the operation. Match by bank reference first. If unmatched, use account plus amount plus value date inside the agreed window. If still unmatched, use counterparty plus amount within tolerance. Variance above tolerance becomes an exception. Passes, windows and tolerances are versioned configuration with an owner.

Produces separate queues for matched, unmatched, and possible duplicate items. Unmatched items show the failed pass and closest candidates. Possible duplicates are held for review.

Writes the report from the same run. Opening balance, movements by category, matched and unmatched value by age band, and the book-to-bank difference with every component named. Every action keeps its actor, timestamp, reason and the records it touched.

What the customer gets

The day starts with review queues. The control normalises and checks the data as it arrives, so manual file preparation no longer delays the reconciliation.

A break carries its cause. "Unmatched" becomes "reference truncated by the bank" or "settled two days after value date". A named break can be given to an owner, with its age attached. An unnamed one goes back on the pile.

There is no measured before-and-after result for this workload yet. Discovery measures first-pass matches, fallback matches, items needing review, current preparation time, and the age of the unmatched queue. These measures become the acceptance criteria.

What stays with your existing systems

The bank stays the bank. The lending and collections systems stay the systems of record, and the general ledger keeps its balances.

Manuel reads statement files and source reports and returns matched results, exception queues and a reconciliation report. The first deployment is read-only and file-based. Nothing is written into your ledger until permissions and maker-checker are agreed. Write-back then arrives as a posting file you approve.

What a first scope looks like

Start with one account or a group of accounts that share a statement format. Use one historical month in every format the team receives. The first test uses files.

We parse, normalise, run the passes and return the three queues for a month your team already reconciled by hand. You compare our output against theirs, line by line, before anything touches a daily run. Acceptance is measured on your month.


Related: Pre-reconciliation detection / Settlement and fee integrity / Management reporting certification