DocPro ยท Agent
PTAS DocPro Bank Statement Agent
PDF, scan or export from any bank: date, narration, amount and balance split out cleanly, with balances checked page to page.
Input
What the Bank Statement Agent reads
A statement is a ledger that has to reconcile against itself. Reading it correctly means proving that, not just lifting the rows.
Reads
Bank PDFs
Statements downloaded from net banking, in whichever column order and date convention that bank uses this year.
Reads
Scans and passbooks
Printed statements and stamped passbook pages, photographed or scanned, with image quality reported as confidence rather than refusal.
Reads
CSV, XLS and MT940 exports
Exports arrive already structured and still need the same enrichment and the same continuity proof, so they run through the same agent.
Detects
Columns and direction
Debit, credit, balance and value date identified per statement. Single-column layouts with Dr and Cr markers are resolved to a signed amount.
Detects
Date conventions
Day-first, month-first and two-digit years settled from the sequence of the whole statement, not guessed one row at a time.
Reads
Multi-currency and multi-account
Each transaction keeps its own currency. A statement covering several accounts is split into one ledger per account.
Output
What comes back for each row
Every transaction returns as a typed row, and the statement as a whole returns with a verdict on whether the rows add up. The figure is one page of seven.
Statement page 3 of 7 · Illustrative example
When that sum does not hold, the extraction is reported as incomplete rather than returned looking clean. It is usually a page that never arrived.
Balance proved
Opening plus every row equals closing, on every page.
Narration parsed
UTR, counterparty and invoice reference lifted out of free text.
Typed rows
Date, signed amount, balance, currency and transaction type.
Validation and confidence
The balance is the checksum
If the running balance does not carry from one page to the next, something was missed. The honest output is to say so rather than hand back a clean-looking file.
Confidence on a statement is per row, and per field within the row. A clean PDF scores near the top on everything. A photographed passbook scores well on dates and balances and lower on narration, because stamp ink and handwriting sit over it. The continuity proof is separate from confidence: a statement can read with high scores on every row and still fail to balance if a page never arrived.
Review is a control, and on statements it has one specific job: settle the rows the agent could not. A reviewer sees the row, the two candidate readings and the balance movement that argues for one of them. The choice is logged, and the balance proof is re-run with the corrected row before the statement is released. A held row is the check doing its work, not a reading that failed.
Illustrative output
One page of a statement, as reconciliation receives it
The second row of the page in the figure above, in full. Account, counterparties and amounts are invented for this page and are not customer data.
On the statement
Returned (illustrative)
{
"document_type": "bank_statement",
"account_last4": "4471",
"period": "2026-08-01/2026-08-31",
"page": 3,
"pages_total": 7,
"opening_balance": 1842910.00,
"closing_balance": 1453700.00,
"continuity": "balanced",
"transactions": [
{
"row": 2,
"value_date": "2026-08-14",
"narration": "NEFT MERIDIAN COMPONENTS UTR N2608141",
"amount": -270220.00,
"balance": 1572690.00,
"type": "neft_out",
"counterparty": "Meridian Components",
"reference": "N2608141",
"confidence": {
"value_date": 0.99,
"amount": 0.99,
"counterparty": 0.94,
"reference": 0.97
}
}
],
"review": []
}
Downstream
After the rows are read
Typed rows are the input to reconciliation, not the result of it. These pages cover the matching and the posting.
Bank Reconciliation Automation
01The solution page: statement rows matched to ledger entries, every break explained.
FinSuite Bank Reconciliation
02The module that consumes these rows, runs the match and posts the adjustments.
DocPro API
03Batch submission at month end, webhook delivery per statement.
FAQ
Questions Teams Ask
Which banks are supported?
Any bank, because there is no per-bank template to maintain. The agent works out the column layout, the date convention and the balance direction from the statement itself, so a bank nobody has mentioned before behaves like one we see daily. A genuinely new layout shows up as lower confidence on the affected columns, not as a refusal.
How do you know the extraction is complete?
The running balance is the proof. Opening plus the rows read has to equal closing on every page and across the statement. When it does not, the extraction is reported as incomplete rather than returned as if it were fine. That is how missing pages usually surface.
Can it read a scanned or photographed statement?
Yes, including passbook scans and pages photographed at an angle. Image quality affects confidence rather than causing a refusal, and low-confidence rows are flagged individually instead of the whole statement being rejected.
What is returned for each transaction?
Value date, narration, a signed amount, running balance, currency, a transaction type where it can be determined, and whatever was extractable from the narration: counterparty, reference, UTR. Each field carries its own confidence score, and the statement as a whole carries the continuity verdict.
Does it categorise transactions against our chart of accounts?
It types them: NEFT, RTGS, UPI, cheque, charge, interest, reversal, where the narration and the bank's own markers make the type clear. Mapping to your chart of accounts is reconciliation work and happens in FinSuite or your own system, using the typed rows and the parsed references.
Keep reading
Related Capabilities
DocPro
The platform this agent runs on: the workflow, the trust model and the other five agents.
Read more →DocPro Invoice Agent
The invoice a UTR in a narration usually points back to.
Read more →Bank Reconciliation Automation
The business problem these rows feed into.
Read more →DocPro API
Batch and webhook delivery for month-end statement runs.
Read more →Next step
Send the statement nothing else reads
The scanned one, the multi-currency one, the passbook. Upload one now, or bring a quarter of them to a demo.