How to import a bank statement

To import a bank statement into SavingStat, export a CSV or PDF from your bank, pick its wallet and upload it. Every row comes back as a draft to review.

Export a statement from your bank

A bank statement import starts from a file. Not a login. SavingStat never asks for your online banking credentials. You sign in to your bank, export the transactions yourself, and upload what it gives you.

Either format banks usually offer will do. A CSV export is accepted up to 5 MB and a PDF statement up to 10 MB, checked as the file uploads; a file already sitting in your library is not measured again. Start with a single month. That is enough to show whether your categories match how you spend, and small enough that fixing the misses is not a chore.

Start the import

Open Imports and choose New Import.

  1. Pick the wallet the money came from. This is required, and it tells each row which balance it will move once you publish it.
  2. Drop the file onto the upload area, or browse for it. If you have uploaded it before, switch to From library and pick it from there.
  3. Optionally open Import instructions and describe anything unusual about how your bank writes its statements. What you write is kept in your settings and applied to every import.
  4. Press Start import.

SavingStat decides what it is looking at from the file name: .csv and .pdf are sent as statements, anything else as a receipt. A receipt that is not a JPEG, PNG or WebP is refused at this point rather than accepted and failed later. Otherwise you land back on the imports list with the new job at the top.

While the import runs

An import is queued first, then processed, and ends as either completed or failed. While it is being processed the list reports how many rows of the total it has got through, and both the list and the import's own page update themselves as it goes, with nothing to refresh.

Rows come back in batches rather than all at the end, so the review list fills up while the import is still running and you can start reading it before it finishes. If a job is still queued a couple of minutes on, the list says so. The file was accepted. Processing has not begun.

When the import finishes

Every row arrives as a draft, not a transaction. Drafts stay out of your transaction list and leave your wallet balances untouched, so nothing an import produces is in your data until you publish it.

The file is kept in your library and attached to each transaction the import creates, so you can open the statement a row came from later. A finished import can still carry a note about something it could not do, shown above the rows. Read it, then go on to reviewing the drafts.

If the import fails

A failed import says why in plain language, both in the list and on its own page, with the underlying message tucked behind a Technical details toggle.

Retry import puts the same file back in the queue. It clears the drafts the failed attempt left behind and keeps anything you had already published. Deleting the import is the other way out. It asks separately about the drafts and about any published rows.