The bank statement importer turns the rows of a statement CSV into payment records, so income that arrived by bank transfer or standing order is recorded alongside your other giving. It’s a shorter version of the main import wizard that always imports Payments.

Before you start

  • Permission. You need importer:execute:import, the same as the main wizard. Without it the page explains which permission to ask your administrator for.
  • A CSV export of the statement. Download the statement from online banking as CSV and check it against Prepare a CSV file. Remove rows you don’t want recorded as payments, such as bank charges or transfers between your own accounts, before you start.
  • A stable transaction reference, if your bank provides one. Mapping it as an External Key is what stops a second import of the same statement recording those payments twice (see Importing the same statement again).

Open the importer

Open Data In and Out → Upload a file, then click Bank statement at the top of the page. The page is titled Import Bank Statement; All importers takes you back.

The importer has four stages: Select file, Map columns, Review & submit and Job status. There’s no What to import stage, because every row becomes a Payment, and no Pre-flight check, so take extra care in Map columns.

Import the statement

  1. In Select file, choose the CSV and click Next.
  2. In Map columns, map these fields. Each one is required; a row missing any of them fails:

    Field What to map
    Amount The transaction amount, as a plain number such as 25.00
    Currency Usually a Static value such as GBP, since statements rarely include it
    Status Paid, Pledged or Invoiced. A statement records money that has moved, so a Static value of Paid is usual
    Direction Inbound for money received, Outbound for money paid out

    Map Date Paid too, so each payment carries its transaction date.

  3. Map the optional fields where your statement supports them:
    • Contact Email links the payment to the contact with that email address. A statement description is not a reliable identity, so only map this when you’re confident the email belongs to an existing contact: the bank importer doesn’t create contacts.
    • Fundraising Activity links the payments to an existing fundraising activity.
    • Payment Method, and the Breakdown fields (purpose, terms of restriction, amount or percentage).
    • Under External Keys, add the bank’s transaction reference with a source name such as barclays.
  4. Click Next to reach Review & submit. Check the file, mapped and skipped column counts.
  5. Confirm How are dates written in this file? Most UK banks write dates as dd/mm/yyyy. This applies to every date column you’ve mapped.
  6. To reuse this setup for next month’s statement, turn on Save this mapping for next time and give it a name such as Lloyds monthly statement. See Save and reuse a column mapping.
  7. Click Start Import. You can’t cancel or undo an import once it starts.

Job status then shows progress and, when it finishes, the number of rows processed and any errors. If rows failed, click Download error report. The job also appears in Recent imports on the main Upload a file page.

The Import options panel doesn’t change the import yet

Above the wizard, Import options offers a Bank list, Discard negative transaction amounts and Attempt to match to fundraising or grant records. Your choices are shown on Review & submit, but a yellow note there explains they’re not yet sent to the import job:

  • Choosing a bank doesn’t apply a bank-specific layout. You map the columns yourself, whichever bank you choose.
  • Negative amounts are not discarded. Remove refunds and outgoing payments from the file, or map Direction so they’re recorded correctly.
  • No automatic matching to fundraising activities or grants happens. Use Fundraising Activity or Contact Email to make links you’re sure of.

The bank list includes Lloyds Bank, NatWest, Barclays, HSBC, Halifax, Nationwide, Santander, Monzo, Starling Bank, Metro Bank and Other / Generic CSV.

Importing the same statement again

When a row has an External Key that an earlier import already recorded for a payment, that row is skipped rather than recorded again. Without an External Key there’s no duplicate check, so importing an overlapping statement records those payments a second time. If your bank provides no transaction reference, trim each file so it starts where the last one ended.

If something goes wrong

  • A row fails with “Payment must have …”: one of Amount, Currency, Status or Direction was empty for that row. Map it, or give it a static value.
  • A row fails because the amount is not a valid number: check for currency symbols or text in the Amount column.
  • Dates look wrong on the payments: the date format didn’t match the file. Payments already written stay as they are; correct them, then use the right format for future imports.

See Job statuses and errors for reading the error report.