Recued
Menu
← Back to recipes

Import a bank statement (CSV)

by recued-core v1 9 views

Use “Import a bank statement (CSV)” in Recued. Reads a statement CSV you exported from your bank, maps its columns the way you named them, and records every line in your own warehouse. Re-importing an overlapping export adds only what is new.

Complete workflow

Bank statement import 3 pinned recipes

Use “Bank statement import” in Recued to bring a statement you exported yourself — CSV from any bank — into your own warehouse, with no aggregator in the middle. Aggregators gate real account data behind an approved business account; a file needs no credentials and no third party sees your transactions. You name your bank's columns once, so nothing is guessed. Re-importing an overlapping export skips lines you already have instead of double-counting them. Feeds ledger-book and expense-ledger.

You are viewing one recipe in this workflow. Installing it opens the complete pack so its other recipes and background automations arrive together.

Use “Import a bank statement (CSV)” in Recued. Reads a statement CSV you exported from your bank, maps its columns the way you named them, and records every line in your own warehouse. Re-importing an overlapping export adds only what is new.

pack:statement-importbankingcsvimport
by recued-core pinned v1

Use “List statement lines” in Recued. Shows imported statement lines, most recently imported first, for one account or across all of them, with the net for the page.

pack:statement-importbankingrecordsread
by recued-core pinned v1
View pack details, dependencies, and permissions →

Why a file, not a bank login

Every open-banking aggregator gates real account data behind an approved business account, and talking to a bank directly needs PSD2 authorisation. A statement export needs neither, works for banks no aggregator covers, and no third party ever sees the transactions.

Setting it up once

Open your export and read the header row. Put those exact column names into the settings below. Two layouts are supported:

  • One signed amount column (common in the UK/US): set column_amount, leave the debit/credit pair blank.
  • A debit + credit pair (common in Europe and India): leave column_amount blank and set both column_debit and column_credit. Recued stores each column as its own figure and does not fold them together — which column means money out is a fact about your bank, and a stored line you can check against the paper is worth more than a tidier table. Listing recipes add them up when they show you a total.

Set exactly one of the two layouts.

Re-running is safe

Bank exports overlap by design — the last 90 days, every time. Each line's id is derived from its own content plus your account label, so importing the same export twice reproduces the same ids and adds nothing. The summary says how many you already had.

Give each account its own label. The id is scoped to it, so the same amount on the same day in two accounts stays two lines.

Check first

Turn on Check first and Recued reads the whole file, puts every line through exactly the checks a real import would, then throws the result away and tells you what would have happened. Nothing is recorded.

Do this the first time you map a bank. A column pointed at the wrong field imports perfectly — every line lands, nothing is refused — and the only sign is that the numbers are wrong. Reading the first few lines back before you commit is the only thing that catches it.

When a number will not read

A cell that cannot be parsed is stored EMPTY, never as zero, and the line still lands. The summary counts them and shows the first few with their line numbers, so you can open the file at that line. A zero would look like a real transaction for nothing and would quietly move your balance.

How it works 27 steps

Inspect the data fetches, transforms, gates, and output this recipe runs.

Process (27 steps)
file_id trim
Trim whitespace from setting file
has_file compare
Check if file id has data
file_guard guard
Stop if has file equals
acct trim
Trim whitespace from setting account label
has_account compare
Check if acct has data
account_guard guard
Stop if has account equals
file_read ?
csv_text decode_base64
Apply decode_base64
columns_all default
Apply default
columns filter
Filter by condition
money_all default
Apply default
money_present filter
Filter by condition
money_fields pluck
Extract field from each item
numeric_all default
Apply default
numeric_present filter
Filter by condition
balance_fields pluck
Extract field from each item
numeric_fields flatten
Flatten nested lists in
dedup_on flatten
Flatten nested lists in
imported ?
any_unreadable compare
Check if imported unparsed is greater than 0
any_refused compare
Check if imported failed is greater than 0
stopped default
Apply default
was_check compare
Check if imported dry run equals
mode ternary
Apply ternary
unreadable to_table
Format results as a data table
skip: step.any_unreadable equal false
refused to_table
Format results as a data table
skip: step.any_refused equal false
card to_summary
Format results as a summary card
Settings 12 configurable

Configurable at install. Defaults shown — change them anytime in Recued.

file setting = [object Object]
currency setting = GBP
delimiter setting = ,
check first setting = false
column date setting = Date
column debit setting =
account label setting =
column amount setting = Amount
column credit setting =
column balance setting =
column description setting = Description
thousands separator setting = ,

About

Tags

pack:statement-importbankingcsvimportreconciliation

Details

27 steps 12 configurable settings recipe_id: import-bank-statement