Day-to-dayUpdated 15 Oct 2026

Bank reconciliation: match your statement to your books

Import a bank statement CSV and match each line to a recorded payment or expense, so your books agree with your bank and nothing goes unrecorded.

Bank reconciliation is how you check your books agree with your bank: upload your bank statement (a spreadsheet, a CSV or a PDF) and Finocket lines each statement entry up against the payments and expenses you've already recorded. You confirm the matches and catch anything you forgot to enter.

Bank reconciliation: imported statement lines matched to your entries. (desktop view)
Bank reconciliation: imported statement lines matched to your entries.

What is a bank reconciliation statement (BRS)?

A BRS is the working that explains any difference between your bank balance and your books: entries in one but not yet the other. In Finocket, reconciling is doing that working live: every statement line ends up either matched to a recorded entry or standing out as a gap to fix.

Import a bank statement

  1. Download a statement from your bank in whatever format it offers. An Excel sheet (either .xlsx or the older .xls), a CSV or a PDF all work. You don't need to convert it first.
  2. Open Banking → Bank reconciliation and upload it.
  3. Give it a label you'll recognise later, like HDFC ****1234 Jun 2026.

Finocket reads each row into a date, a signed amount (positive for money in, negative for money out) and the narration, and copes with the different column orders and headings banks use, so you don't reformat the file first.

It works out what kind of file you gave it by reading the file itself rather than trusting its name, so a sheet saved with the wrong extension still imports.

PDF statements: read free, scanned only when needed

A PDF statement downloaded from net-banking carries its own text. Finocket reads that text directly (free, and exact, like an Excel file), rebuilds the date, narration, reference, debit, credit and balance columns, and opens the same preview an Excel import does, with the line Read directly from the PDF's text - free, no scan used. Duplicate checks and your bank rules work exactly as for Excel. It works from either button.

Before showing you anything, Finocket checks every row against the running balance the bank printed beside it. If the PDF is a scan or a photo with no text, or the rows it read do not add up to those balances, it does not guess: it scans the PDF instead, as it always did, and tells you why in one line. Only that scan counts as a scan, against your free scans, your credits or your own AI key, as the line under the scan button says.

A password-protected PDF asks for its password first (often your date of birth or customer id). The password opens the file in memory for that one read and is never saved.

A photo or a scanned PDF of a statement goes through Scan PDF or photo. The short line under that button says what the scan will use (a free monthly scan, credits, or your own AI key), and it updates as soon as the scan is read. See Scan to add for what each one means.

Excel statements and the preview

Excel workbooks (.xlsx and .xls) import the same way as CSV. Real bank exports carry a title block above the column headers (account name, period, a logo row), and that block is skipped. The header row is found wherever it sits, on whichever sheet holds the statement, and the bank is recognised from the headers just as it is for a CSV. If no bank format fits, a generic date / narration / debit / credit mapping is offered.

Nothing is saved when you pick the file. You see the rows first (how many were read, the date range, the debit and credit totals, and any lines that were skipped with the reason) and confirm before anything is written. A file that yields no rows tells you why: which sheet was read, where the header was looked for, and the closest formats that were tried.

Your bank isn't recognised yet?

When no known layout fits, the "Nothing to import" screen has a form right on it: Not seeing your bank? Tell us which one. Type the bank's name and send it; that raises a request with our team, along with the file's shape (which sheet, the header row, the closest layouts it scored against) so we can build a real parser for it. Nothing about the statement's numbers, narrations or account details is sent, only that structural trace.

A statement that does import, but only through the generic column reader, is worth the same signal: Finocket read it, but still doesn't know which bank it was. The import's confirmation toast carries a Which bank? button for exactly that case, which opens the same short form.

Re-importing a range you already imported

Pulling overlapping ranges is the normal way this gets used (June, then mid-June to mid-July for the rest). Finocket recognises the lines it already holds and skips them, so nothing doubles up, and it tells you how many it skipped.

Both the preview and the message after you import say it in one line, for example “2 new, 1 already imported from an earlier upload”. If every line in the file is already in your books it says “Nothing new” and adds no empty statement, rather than suggesting the file could not be read.

You can see which ones. Open show which ones beside that message and every skipped line is listed with its date, narration and amount, so you can confirm they really are the rows you already had rather than taking the number on trust. If more than fifty were skipped the list is shortened, but the count beside it is always exact.

A line is recognised by its date, its amount and its narration together, so two genuinely identical transactions on the same day are both kept. A pair of ₹500 UPI payments to the same shop is ordinary, and losing one of them would be worse than skipping neither.

Every upload gets its own tab

Each statement you import stays on screen as its own tab, showing the file's name, the day you imported it and which bank format read it. Importing a second statement opens it and leaves the first one exactly where it was. Click its tab to go back. Nothing you import replaces anything you imported before.

Card statements carry a card icon and bank statements a bank icon, because a card payoff is matched across the two: the debit on your bank statement and the credit on your card statement are one event, and Finocket links them as a pair.

Narrowing a long statement

A month of a busy account runs to hundreds of lines, and the ones that still need you are usually a handful. Filters, above the table, cut it down to those:

  • Status: unmatched, matched, or ones you marked as not a business transaction. Matched as then narrows a matched line further: a payment you received, an expense, or a card payoff.
  • Suggestion: how sure Finocket is about the match it is offering. No suggestion is the one to reach for when you want the work that is genuinely left.
  • Direction, From / To date and Amount at least / at most. The amount boxes ignore the sign, so “at least 25,000” catches a 25,000 payment and a 25,000 spend alike. Pick Money in or Money out if you want only one of them.
  • The search box still looks inside the narration, so a UTR or a merchant name works alongside any of the above.

A typical use: set Status to Unmatched, Direction to Money out, Amount at least to 25,000 and the dates to last month. What is left is every large payment you have not accounted for, which you can then tick and record in one go.

Your filters live in the address bar, so the screen comes back the same after a reload and the link can be sent to whoever you are asking about a line. The tiles above the table keep counting the whole statement while a filter is on, so they answer “what is in this statement” rather than “what am I looking at”. And if a filter leaves nothing on screen, Finocket says so in those words, rather than telling you the statement is empty.

Recording several lines at once

Statement lines that have no match yet don't have to be entered one at a time. Tick the ones you want (or use the checkbox in the header to take everything on screen) and choose Review and record.

The review shows exactly what would be created before anything is written: each line as an expense or a receipt, its category, and every customer or supplier that does not exist yet. Finocket reads the payee out of the narration, so UPI-NARMADA RESTAURANTS -PAYTMQR1IBR3NDGD9 is proposed as Narmada Restaurants rather than left as it is. A name is created once however many lines mention it.

Untick a line to leave it for later, or mark it as not a business transaction (an owner's personal transfer, say), and it stops appearing every time you reconcile.

Choosing who a line belongs to

Reading the payee out of the narration is a guess, and it fails on plenty of real statements. On every line in the review you can choose the client or supplier yourself and add a note in your own words.

The picker knows which way the money went: a payment out offers your suppliers first, money in offers your customers, and the other side is still there under a heading because a supplier does occasionally refund you. Search by name, GSTIN or phone.

Choosing somebody does more than fill a box. Finocket then stops guessing entirely for that line. It will not read a name from the narration and it cannot create a second record for a firm you already have. It is also how a receipt that names nobody becomes recordable: pick the customer and the warning clears in front of you.

Your note is added after the bank's own narration rather than replacing it, so the statement text you will reconcile against later is still on the record.

Two things the review will tell you rather than guess at. A line dated inside a period you have locked is shown and left alone, so reconciling an earlier year never rewrites books you have already filed; the owner can move the lock date in Profile → Business if that is what they want. And a receipt whose narration names nobody needs a customer chosen before it can be recorded, because a receipt in Finocket always belongs to someone.

Cash taken from an ATM is recorded as a transfer to Cash, not an expense. The money has not been spent; it has moved between two of your own accounts.

How matching works

For every statement line, Finocket suggests the closest entry already in your books (a customer payment for a credit, an expense for a debit), looking a few days either side of the statement date for the same amount. If the suggestion is right, Confirm match in one tap and the line marks reconciled. Matched wrongly? Unmatch and pick again.

Lines with nothing to match stand out. An unmatched credit usually means a receipt you haven't recorded yet; an unmatched debit, a bill still to enter. Record the missing entry (press ⌥P/Alt+Shift+P or ⌥E/Alt+Shift+E), come back, and match it.

Bank rules: auto-categorise recurring lines

For lines that repeat every month (a Swiggy spend, your office rent, a recurring subscription), set up a bank rule so Finocket recognises them for you. A rule watches for narration text (case-insensitive, e.g. SWIGGY), an optional amount range, and a direction (money in or money out), and when a line matches every condition it suggests an expense category, a specific match, or the client or supplier the line belongs to.

The party a rule chooses behaves differently from the other two, on purpose. A bank line has no record yet, so there is nothing to attach a customer to. Instead, the review sheet opens with that party already chosen on every matching line, and you change it or leave it before anything is written. So a rule for SWIGGY can say both “this is a food expense” and “it is owed to Bundl Technologies”, and you stop re-typing the second one every month.

A rule only suggests. It shows a chip on the line with one-tap Accept (which books the categorised expense or links the match through the normal path, fully audited) or Dismiss. Nothing is ever posted silently, and a rule with no conditions matches nothing (so it can never fire on every line). Build a rule in two taps from any unmatched line with + Rule, or manage them on the Workflows screen, which is the AI workflows icon in the system dock on a tablet or computer rather than a menu row.

Money coming in: capital, loans and other income

A rule made from a money-in line asks where that money goes instead of asking for an expense category. Choose Share capital or Director or partner loan for money a founder or director puts in, Other income for interest or a refund that is not a sale, or Customer receipt for a customer paying you. Accept on the chip books the line: capital, a loan or other income post one entry (bank debited, that ledger credited; the ledger is created the first time if your chart of accounts does not have it), and a customer receipt opens the review sheet so you can pick the customer. The same choice is on every money-in line in the review sheet.

Create rule fills in the stable part of the narration (the sender’s name or UPI handle, not the reference number that changes every time) and takes the direction from the line. Before you save it says how many lines waiting on this statement the rule matches; zero means the words are too specific. Capital letters and extra spaces never matter on either side.

Reviewing your rules

Bank rules at the top of the reconciliation screen lists every rule: what it looks for, what it books, and how many waiting lines it matches now. From there you can Edit, Pause (the rule stays, it just stops suggesting) or Delete a rule, and a rule that could never match a line is flagged. A new rule applies straight away to the lines already waiting, and the “Bank rule created” message says how many and links to this list.

A bank rule understands exactly three kinds of condition: the narration contains some text, the amount is at least, at most or exactly a figure, and the money went in or out. The rule editor offers only those, and you always pick the direction yourself. If a rule as written could never match a line (no conditions, blank text, an amount that is not a number, or an “at least” above its “at most”), the editor says which condition is the problem and keeps Save off until it is fixed, so a rule cannot sit there quietly matching nothing.

A party or category you choose once is remembered beyond banking, too: the same rule engine now watches every import into Finocket (a scanned receipt, a spreadsheet row, a migration from another system), not only bank statements. Pick “Bundl Technologies” for a Swiggy line once, and the next Swiggy row Finocket sees in any import already has that party suggested, the same way a bank rule suggests one on the reconcile screen. It is still only ever a suggestion you accept or change; nothing is filled in and approved for you.

Recording UPI transactions

Record UPI receipts as payments with mode UPI and UPI outgoings as expenses paid by UPI. On the statement they appear as ordinary credits/debits and match the same way, and the Cashbook's UPI tab then agrees with your bank.

Access & control

Statements and matches are owner-scoped: the owner imports and confirms. An invited accountant or teammate can open the reconciliation and see where things stand, read-only. Banking is a module. Turn it on under Settings → Modules & features if the screen isn't visible.

Statements that arrive by email

If you connect a mailbox to Mail Intake, a bank or card statement e-mailed to you is imported through the same statement formats as an upload, so the lines land here without you downloading anything. A locked PDF opens on its own once you save its password. Bank alerts are shown separately as “from alerts” and are never added to your balance until the statement itself arrives.

Related: Day Book, Cashbook & Outstanding, Payments & TDS.

Does this work offline?

Frequently asked questions

Does importing a PDF bank statement use scan credits?

Not when the PDF has text, which a statement downloaded from net-banking does. Finocket reads that text directly, free, checks every row against the printed running balance, and opens the same preview as an Excel import. Only a scanned or photographed PDF, or one whose rows do not add up, is scanned - and the screen says so before it counts as a scan.

What is a bank reconciliation statement (BRS)?

The working that explains the difference between your bank balance and your cash book: cheques not yet cleared, receipts not yet recorded, bank charges not yet booked. Finocket does the line-by-line matching for you so the differences surface as unmatched entries.

How do I import my bank statement into Finocket?

Download the CSV from your bank's netbanking, upload it on the Bank reconciliation screen and label it. Finocket parses dates, amounts and narrations across the formats Indian banks commonly use.

Does Finocket auto-match bank transactions to my invoices?

It suggests matches: for each statement line it finds recorded payments or expenses of the same amount within a few days of the date. You confirm each match with one tap; nothing is matched silently.

Why doesn't my bank balance match my books?

Almost always: an unrecorded entry (bank charges, an expense paid directly from the account), a receipt you haven't entered, or timing (a cheque issued but not cleared). Reconcile the month and the unmatched lines show you exactly which.

Can Finocket connect to my bank account directly?

Not yet. This is statement-import reconciliation, not a live bank feed. You bring the CSV, which keeps you in control of exactly what gets read.

Can I reconcile a credit-card statement?

Yes. Add the card under Banking → Credit cards, then on the reconcile screen pick that card under Account before importing its statement. A card statement is the mirror of a bank's. Finocket flips the signs so a spend reads as money out (matching a recorded expense) and a payment reads as money in, then card spends match your expenses just like bank lines.

How do I record paying my credit-card bill without double-counting?

When you pay the card bill from your bank, use Mark as card payoff to link the bank line (money out) to the card's payment line (money in). That records a contra (a transfer between the two accounts) so the original spends stay booked once as expenses and the payoff is never counted as a second expense. The two lines link atomically: neither is left showing as unmatched.

Can Finocket tell me when unmatched lines are piling up?

Yes. The Unreconciled bank lines automation at /agents watches how many statement lines are still unmatched and how old the oldest one is, and speaks up when the pile is growing rather than shrinking. Reconciling is far quicker weekly than in one sitting at year-end, and this is what makes the weekly happen.

Does the automation match the lines itself?

No. Matching stays one tap per line by you, exactly as on this page. Nothing is ever matched silently, by you or by an automation. It counts what is waiting and brings it to your attention.

My bank isn't recognised - what do I do?

On the 'Nothing to import' screen, use Not seeing your bank? Tell us which one to name it - that raises a request with our team along with the file's shape (which sheet, where the header sat, the closest layouts it scored against), never the statement's own numbers or narrations. If the file DID import, just through the generic column reader, the import's confirmation toast has a Which bank? button for the same purpose - Finocket read the file but still doesn't know which bank it was.

Where can I see how an import went after the confirmation message is gone?

The reconcile screen itself keeps a small received / approved / imported / reconciled count for the statement's import, refreshed from your data rather than kept only in that first message - so it is still there if you navigate away and come back, or reload the page.

Related articles