Skip to main content
Bankflow
Back to blog
Integrations7 min readSeptember 9, 2026By the Bankflow Team

How to Automate Bank Statements with OneDrive

Watch a OneDrive folder for new statement PDFs, parse them without lifting a finger, and write the transactions back beside the file they came from.

OneDrive logo above a three-step diagram: a watched folder, the parsed transactions, and a CSV written back beside the statement

The Workflow in One Sentence

Point Bankflow at a OneDrive folder, and every bank statement that lands in it is parsed into transactions and written back as a spreadsheet, without anyone opening the app.

That is the whole idea. The folder becomes the interface. Your bank drops a PDF there, or you do, or a colleague does, and the structured version appears beside it. OneDrive is one of two connectors that work in both directions: it can be read from and written to, which is what makes the unattended version possible.

What a Watched Folder Does

A workflow input is a folder on a connected drive. You browse to it rather than typing a path, so there is no question of a typo pointing at nothing.

From then on, the folder is swept on a schedule, roughly every fifteen minutes. Each folder keeps its own sync cursor, which matters more than it sounds: if one folder falls behind because a large file is still processing, the others carry on independently, and none of them re-import what they have already seen. There is also a Run now button for when you do not want to wait for the next sweep.

You can watch more than one folder in a single workflow. The real cases are usually plural: statements arrive in two folders and the result goes to a drive and a webhook, so both ends of a workflow are lists rather than single values.

Telling Bankflow What the Files Are

Every workflow declares what it is reading, and the choice does more than label things:

  • Bank statements are parsed into transactions and balances and land in the ledger, where categorization and cashflow analysis apply to them.
  • Invoices and receipts are parsed into line items and totals, and are deliberately kept out of the ledger so they do not pollute your transaction history.

The choice also decides which files in the folder are even considered. A receipt is usually a photograph and a CSV is not a receipt however it is named, so a workflow reading invoices ignores things a workflow reading statements would pick up, and the other way round. This is why one folder can hold a mix without the pipeline getting confused.

What Gets Written Back

When the parse finishes, the output goes wherever the workflow says. For OneDrive that means a file written into a folder you picked, in CSV, XLSX, or JSON.

By default an output lands back where the file came from, which gives you the simplest possible arrangement: one folder, PDFs in, spreadsheets out, side by side. If you would rather keep them apart, each output names its own destination account and folder, so parsed results can go to a completely different folder, a different OneDrive account, or a different cloud entirely.

The columns match the manual export exactly, including whatever field presets you have already set up. A file that appears in the folder overnight is the same file you would have downloaded by hand.

Outputs are not limited to files. The same result can also be posted to a webhook, signed with an X-BankFlow-Signature header in the same way the API webhooks are, which is the path to take if something downstream should react rather than just receive a spreadsheet.

Setting Up the Connection

  • Connect OneDrive from the connected accounts screen. Microsoft will ask which account you want to use, every time, by design.
  • Create a workflow and add the folder you want watched as its input.
  • Choose what the documents are: bank statements, or invoices and receipts.
  • Add an output. Write a file back, post to a webhook, or both.
  • Switch it on. The sweep picks it up from there, and Run now proves it works before you walk away.

The permission Bankflow requests is Files.ReadWrite rather than read-only, for the obvious reason: the connection writes the parsed file back beside the statement it came from, and read-only access cannot do that. It also requests offline access, which is what makes a refresh token exist at all. Without it a connection works for about an hour and then needs reconnecting, forever.

Work Accounts, Personal Accounts, and Shared Drives

Microsoft accounts come in two flavours and most people have both. Bankflow always asks which account you are connecting rather than silently reusing whatever your browser happens to be signed into. That deliberate extra click prevents the most confusing failure in this whole area, where a reused work session produces an error about an application not being found in the directory, which reads like a broken product rather than the wrong account.

You can also connect more than one account per provider. A personal OneDrive and the practice's are two separate connections, distinguished by the account they belong to. Reconnecting an expired one updates it in place rather than leaving an orphaned credential behind.

Shared drives and shared folders work, and they are frequently the point. A folder shared with a bookkeeper becomes a drop box that parses itself.

The Loop Problem, and How It Is Handled

Read this part if you plan to write results back into the folder you are watching, which is the most convenient arrangement and also the most dangerous one.

The risk is obvious once stated: the workflow writes a CSV into a folder it is watching, the next sweep sees a new file, and CSV happens to be a format the import path accepts. Left alone, that is an infinite loop that bills you for it.

Bankflow remembers every file it writes, specifically so that the next sweep recognises its own output and skips it. This is not something you configure. It is on by default, because a feature that quietly costs money when used the intuitive way is not a feature.

Removing the Copy Once It Is Delivered

There is an option called Remove from Bankflow once sent, and it is meant for one specific shape of pipeline: the ones where Bankflow is a step rather than a destination, and the copy held here is a duplicate of something that now lives in your accounting system.

It is honoured only when every output landed. If one delivery failed, nothing is removed, because removing the local copy while the remote copy does not exist is how data actually gets lost. Credits are still charged and the billing record is kept either way.

What to Check in the History

Every file a workflow handled is listed, with parsing and delivery reported separately. That separation is the useful part, because the two fail independently: a statement can parse perfectly and never reach the drive, and if you only track one number you will not notice.

If a delivery failed, the error is recorded and the delivery can be retried. A failed write never affects the parse itself, which has already completed and is already in your ledger by the time any delivery is attempted.

Is OneDrive Right for This?

Choose it if your documents already live in Microsoft 365, if you want the folder to be both the inbox and the outbox, or if the people involved would rather share a folder than learn another tool.

Dropbox does the same job with the same two-way behaviour, so pick whichever your files are already in. Google Drive is a destination only, and the one that writes native Google Sheets.

Availability of each connector depends on the deployment you are using; the workflows screen offers exactly the connectors your account can actually use, so if one is missing there, it is not yet available to you. If OneDrive is not showing, the forwarding address is the fastest way to get the same unattended behaviour today, and Dropbox is the closest equivalent connector.

For the parsing side of the story, see how AI bank statement analysis works, or go straight to the feature list.

Turn your next statement into usable data.

Review the extracted transactions before export. No bank connection or credit card required.

Analyze a statement free