Uploading Bank Statements

If a bank account is not connected through open banking, you can import its transactions by uploading a PDF statement. AI Finance Team reads the statement page by page, extracts every line, and writes the transactions to the right bank account.

Uploading One

Go to Bank transactions in the workspace sidebar and click Upload statement, or drag the PDFs onto the page. Uploading needs the "Upload documents" permission, which every role holds by default.

Everything else about uploading works the same as for any other document, including drag and drop, ZIP archives, the 50 MB limit per file and what the progress panel shows: see Uploading Files.

One thing does not work: a statement sent in by email is not extracted. It is parked in Intake as Awaiting extractor, waiting for someone to deal with it. Upload statements here.

What Happens To It

Extraction starts the moment the file lands, always, and reads one page at a time. A long statement therefore takes minutes rather than seconds, and there is no page limit.

On the first page AI Finance Team reads the account number and looks it up in the workspace. IBAN (HU12 3456 7890 1234 5678 0000 0000) and domestic format (34567890-12345678) both work, and spaces and hyphens are ignored. If the account is not in the workspace yet but is listed under one of your companies in Master data → Companies, it is created and linked there.

If nothing matches, extraction still reads the whole statement. The rows are held, no transactions are created, and the statement ends as Failed, saying which account number it could not find. Nothing is lost: see When it needs you.

When the rows are written, the same pipeline that handles open-banking transactions takes over: transaction-type matching, partner resolution, categorisation and invoice matching.

What "merged" means

A statement line that exactly matches one transaction you already have in that account, same booking date and same amount, is merged into it rather than added. You end up with one transaction carrying both sources, which is what you want when open banking already brought the movement in.

That is why the Transactions column reads as a ratio, for example 24 / 26: twenty-six lines were extracted, twenty-four became new transactions, and two folded into transactions that were already there.

Where the fold would be ambiguous, nothing is folded. Two lines on the same day for the same amount, or two existing transactions that both match, are all inserted. Check those by eye.

The Statements Tab

The Statements tab on the Bank transactions page lists every upload: the file, the period, the account, the transactions ratio, the duplicate count, the status with its actions, and when it was uploaded. While a statement is extracting the ratio shows page progress instead, with a bar.

FilePeriodAccountTransactionsDuplicatesStatus / ActionsUploaded
Reamwell-2026-08.pdf2026-08-01 – 2026-08-31Reamwell HUF current24 / 26—CompletedYesterday
Slatebridge-2026-08.pdf—Slatebridge EUR
3 / 12 pages
—ExtractingToday
Quillmoor-2026-07.pdf2026-07-01 – 2026-07-3199999999-11111111-22222222: unmatched0 / 41—
FailedNo bank account found for 99999999-11111111-22222222. Add it, then complete the import.Complete import
2 days ago
Gearmont-2026-08.pdf—99999999-11111111-22222222: unmatched——
ExtractAssign accountDismiss
Today

Four statements: one finished, one still reading pages, one that found no bank account and is waiting for Complete import, and one that has not started.

StatusMeaning
PendingExtraction has not started yet
ExtractingRunning, page by page
CompletedEvery page was read
ErrorsSome pages could not be read; everything else was imported
FailedThe statement could not be imported

Any row that is not Pending opens the statement when you click it. A Pending row offers Extract, Assign account and Dismiss. Dismiss hides the statement for good: there is no undo.

When It Needs You

No bank account. The row says so and offers Complete import. Add the account under the company in Master data → Companies, then press the button: the rows that were held are written and the statement completes. Nothing needs re-uploading.

The statement is in another currency than the account. The upload fails outright and says which two currencies clashed. Delete it and upload it again against the right account.

Done with errors. Pages that could not be read contributed nothing; everything else was imported normally. The app does not tell you afterwards which page failed, so compare the statement against the PDF, or against the closing balance in the editor.

Something failed outright. The failed row in the progress panel offers Retry, which throws away the transactions that exist only because of this upload and starts again from page one. Any member can press it. The panel only shows what is running or finished in the last minute or so, so if it has gone, delete the statement and upload it again.

Checking The Rows

Clicking a statement opens it in a full-screen overlay: the PDF on the left, the extracted transactions on the right. On a narrow screen there is no room for the PDF, so you get the list alone.

  • Click a row to jump to that page in the PDF and highlight the date. Click it again to deselect.
  • Search and filter by partner, description or direction.
  • The category column shows what each transaction was booked to.
  • A yellow or red dot means the line was read with lower confidence. Check those against the PDF.
  • A Dup row, shown faded, is a transaction that was flagged as a duplicate. It is in the ledger, and the usual views filter it out.

The footer totals the transactions, the duplicates and the net amount.

Editing a statement

Edit, in the overlay header, opens the statement as a table you can work in. Accountants only, and not while extraction is running. On a wide screen the PDF sits to the left of the table; Hide PDF in the header gives the table the full width, and Show PDF brings it back.

You can correct any field, add a line the extractor missed, delete one it invented, restore it again, reorder the lines, and set the partner. The opening and closing balances are read off the statement header when there is one, and the editor warns you when your lines do not add up to them. It is a warning, not a block: save anyway if you know better. The editor keeps you from leaving with unsaved changes.

Deleting a Statement

Delete statement, also in the overlay header, needs a confirmation. It removes the transactions that came only from that file; anything that was also imported from another source stays.

Who Can Do What

  • Upload a statement: "Upload documents".
  • Assign an account, complete an import, edit or delete a statement: "Edit bank transactions", which accountants hold.
  • See the imported transactions: "View invoices and bank transactions".

See Roles and Permissions.

Tips

  • Add the account first. Entering the bank account under the company before you upload saves the whole "no bank account" detour.
  • Each statement has its own message thread, on the statement page. That is the place to ask your accountant about one specific upload.
  • Find the imported rows later with the Statement source pill on the Bank transactions list. A line folded into an existing transaction carries both Bank feed and Statement.
  • Scans work as long as the text is legible. A poor scan produces an incomplete statement rather than an obvious failure, so check the count.