All case studies & publications

Accounting & Bookkeeping · Professional Services · Banking Operations

Bank Statement Download Automation

Anonymised engagement6 weeks
Client
Accounting firm · Bulgaria · 10-15 staff, books kept for 100+ client companies
Industry
Accounting & Bookkeeping
Department
Finance & Accounting
Region
Bulgaria
Duration
6 weeks
Delivery team
3 people

One missed bank account and the month closes on incomplete data. For this firm that risk came round twice a month: 70+ client companies, three bank portals, every login behind 2FA. Now nobody downloads a statement by hand.

A working model of the approach on sample data. It plays on its own and pauses when scrolled away; nothing here touches a live system.

The results

70+
client companies covered, twice a month
Every account, every bank, unattended.
3
banks automated through their portals
SMS and app-based 2FA handled.
~25 h
of manual work back every month
Roughly 300 hours a year.

The challenge

Our client is a Bulgarian accounting and financial-management firm of 10-15 people keeping the books for more than 100 client companies.

Before every closing, twice a month, someone logged in to three online banking portals, UniCredit Bulbank, ProCredit Bank and UBB, one company profile at a time, for more than 70 companies. Every login meant a 2FA challenge: an SMS code or an app confirmation. Then every account had to be opened, the statement and balance downloaded, the file renamed to the firm's convention and saved to the right SharePoint folder.

What it was costing them

  • Time. 5-6 hours per large bank and 1-2 hours for the smaller one, every run.
  • Key-person risk. Only the few people holding the banking credentials and receiving the codes could do it. Holiday or sick leave stopped the closing.
  • Data risk. One missed account meant a closing built on incomplete data, found only when the numbers did not tie.
  • A scale ceiling. Every new client company added manual hours. Growth cost headcount.
  • No API to fall back on. The banks offer no statement API for this use, so the only way in is the same web portal a person uses.
One closing, done by hand
  • 3 bank portals × 70+ company profiles × 2FA on every login = 11-14 h per closing, twice a month

The approach

We built an unattended statement retrieval robot on a self-hosted n8n platform. The banks are reached through their online portals with RPA, not through an API.

Our own RPA engine, native to n8n

Instead of licensing a separate RPA product per robot, we built our own browser automation connectors that run natively inside n8n workers, on the long-term-support version of Playwright. The library has more than 50 custom activities and can automate any browser-based application. The browser behaves like a real user: human-like input, timing and navigation. No RPA licence per robot, no separate robot runtime, and the robots scale with the n8n workers.

Configuration the accountants own

One Excel row per bank account: bank, company profile as named in the portal, company ID, account, authentication method, credential owner, destination path and an on/off switch. Adding an account, a company or a whole new client is a row, not a change request.

2FA, handled two ways

ChallengeHow the robot handles it
SMS one-time codeThe code is captured automatically and passed to the robot through a webhook, so the login completes on its own
App-based approvalThe credential owner receives a one-click form; the robot waits for the answer and continues. The approval stays with the person who owns the access

Built so the banks never notice a robot

  • Session-aware sequencing. Accounts are grouped by credential, so every company profile inside one bank is handled in a single session. No repeated logins, no lockouts.
  • One sub-automation per bank covers navigation, login, company and account selection, and download, assembled from the same activity library.

Filed where the next robot expects it

Statements and balances are downloaded as PDF and Excel, converted where a bank's export requires it, renamed to the firm's convention and uploaded to a dated SharePoint folder structure through the Microsoft Graph API. Credentials sit in an encrypted store.

  • Runs automatically on the 5th and 15th of each month, and on demand through an authenticated link.
  • Individual accounts can be switched off without touching anything else.
One configuration row to one filed statement
  • Configuration row
  • Bank sub-automation
  • 2FA handled
  • Download & rename
  • SharePoint folder

Technology

LayerWhat we used
Orchestrationn8n, self-hosted, worker mode
RPAOur own Playwright-based n8n nodes, 50+ activities
2FAWebhook capture for SMS codes, confirmation forms for app approvals, n8n data tables
FilingMicrosoft SharePoint, Microsoft Graph API
Configuration and securityExcel configuration, encrypted credential store

The outcome

BeforeAfter
Statement collection per closing11-14 hours across three portalsUnattended
Who can run itOnly the credential holdersNobody needs to
New bank accountAnother manual step every runOne configuration row
File naming and filingBy handOne convention, every time
  • Statement collection for 70+ companies across 3 banks runs unattended, twice a month.
  • About 25 hours of manual work removed each month, roughly 300 hours a year.
  • The closing no longer depends on who is in the office and holds the codes.
  • Every file arrives named and filed to one convention. That is what makes the downstream bank reconciliation robot possible: this robot is its input.
  • Onboarding a new bank account costs a configuration row instead of developer time.
  • A reusable engine. Any further portal or web application the firm uses can be automated from the same 50+ activities.

The risk most teams miss

Bank portals change their layout without notice. A robot without monitoring and a maintenance plan simply stops, and nobody notices until the closing. We build both in from day one.

Next step

Start the same conversation

Tell us the process that keeps breaking. We will come back with what it would take to fix it, what it would cost, and what we would measure.

Or write to us directly: •••••@•••••••.•••

  • A reply from a partner within one business day
  • Fixed scope and fixed fee, agreed before we start
  • The maps and the backlog are yours either way