In addition to automatic bank feeds, you can manually import bank transactions from CSV files. This is useful when bank feeds aren't available or for historical data.
What is this page about
This page covers importing bank transactions from a CSV: the columns Light needs, how it validates and cleans your file, what happens after the import, and what to do when a file is rejected. Read it if your bank isn't covered by a feed or you are loading history.
On this page
- Manual Transaction Import
- CSV File Format
- Column Names
- Transaction Validation
- Handling Duplicates
- Data Cleansing
- Import Processing
- Transaction Post-Processing
- Importing to Multiple Accounts
- Handling Historical Data
- Excluding Incorrect Transactions
- File Format Examples
- Troubleshooting Import Issues
- Scheduling Regular Imports
- Best Practices
- Related Articles
Manual Transaction Import
To manually import transactions from a CSV file:
- Go to Accounting → Bank reconciliation and select the account
- Open the Unmatched tab
- Click the upload icon to open the Upload bank transactions dialog
- Drag your CSV file onto the upload area, or click the browse files link to pick it
- Click Upload to process the file
Light validates the file format and matches CSV columns to transaction fields by their header names.
CSV File Format
Your CSV must include a header row with these required columns:
Date: transaction date, in YYYY-MM-DD, DD/MM/YYYY, DD.MM.YYYY, or DD-MM-YYYY format
Amount: transaction amount in the account's currency. Use a positive amount for money in and a negative amount for money out. The amount cannot be zero.
Additional optional columns:
- Payer/Payee Name: payer or payee name
- Reference: reference number
- Transaction ID: unique identifier from your bank
- Memo: free-text memo
Column Names
Light matches CSV columns by their header names, so headers must use the names listed above. Header matching is case-insensitive. Light reads your file as semicolon-separated when the header row contains semicolons, and as comma-separated otherwise.
If your bank's export uses different column names, rename the headers in the file before uploading. Light provides a downloadable CSV template you can use as a starting point.
Transaction Validation
Light validates each transaction before importing:
- Date format: must be a valid date in one of the supported formats
- Amount format: must be a valid, non-zero number
- Required columns: the Date and Amount columns must be present
If validation fails, Light shows which rows have errors, such as "Invalid date on row '3'". Light imports nothing until every error is fixed, so correct the CSV and upload again.
Handling Duplicates
Each CSV upload imports every row it contains, so uploading the same transactions twice creates duplicates. Review your file before uploading, and avoid overlapping date ranges between imports.
For GoCardless feeds specifically, duplicate transactions are detected automatically and marked as Excluded so they don't affect reconciliation. Other feed providers and CSV imports don't auto-detect duplicates, so review your file before uploading.
If you accidentally import duplicates from a CSV, exclude them on the Bank reconciliation page.
Data Cleansing
Light applies some data cleansing during import:
- Whitespace trimming: removes leading and trailing spaces
- Amount normalisation: thousands separators written as commas, such as "1,000.50", are removed
- Date parsing: interprets the supported date formats listed above
Use a period (.) as the decimal separator in amounts, and remove any currency symbols.
Import Processing
Imports run in the background:
- Upload the file
- The import processes in the background
- The sync status is shown above the bank transactions list on the Bank reconciliation page
- Once complete, transactions appear in your account
Transaction Post-Processing
After import, transactions are available for reconciliation:
- Go to Accounting → Bank reconciliation and select the account
- Imported transactions appear with the Unmatched status
- Light automatically runs auto-reconciliation after each import
- Match any remaining unmatched transactions to accounting entries
Reconciliation is covered in more detail in other articles.
Importing to Multiple Accounts
Each import applies to a single bank account. To import for multiple accounts:
- Create separate CSV files for each account
- Upload each file to its corresponding account
Handling Historical Data
When importing years of historical data:
- Start with oldest transactions: import year by year
- Use batch imports: split large files into monthly chunks if needed
- Monitor progress: check that all transactions imported successfully
- Reconcile by period: reconcile each month as you import it
- Build up to current: once historical data is in, ongoing imports are easier
Excluding Incorrect Transactions
To correct an imported bank transaction, exclude it and import a corrected version:
- Select it on the Bank reconciliation page
- Click Exclude, and the transaction is marked Excluded and taken out of reconciliation
- Where needed, re-import a corrected version from an updated CSV
You can undo an exclusion at any time to bring the transaction back into reconciliation.
File Format Examples
CSV with required columns:
Date,Payer/Payee Name,Amount
2024-01-15,Office Supplies Co,-500.00
2024-01-16,Customer Payment,2500.00
CSV with additional details:
Date,Payer/Payee Name,Amount,Reference,Transaction ID,Memo
15/01/2024,Wire Transfer OUT,-10000.00,WIR-12345,TXN-001,Vendor payment
16/01/2024,ACH Deposit,5000.00,ACH-67890,TXN-002,Customer deposit
Troubleshooting Import Issues
"Invalid date on row 'X'": use YYYY-MM-DD, DD/MM/YYYY, DD.MM.YYYY, or DD-MM-YYYY format consistently
"Invalid amount on row 'X'": remove currency symbols, use a period as the decimal separator, and make sure the amount isn't zero
Missing Date or Amount column: the whole import fails and its status shows as failed, naming the column that was missing. Add the header and upload again, or start from Light's template so the names match
Scheduling Regular Imports
For accounts not supported by bank feeds:
- Export transactions from your bank monthly
- Set a calendar reminder to import
- Follow the import process
- Reconcile immediately after import
This keeps your Light account current even without automated feeds.
Best Practices
- Use bank feeds when available: feeds are more reliable than manual imports
- Validate CSV before upload: check a few rows for correct format
- Import frequently: weekly or monthly prevents large backlogs
- Reconcile immediately: reconcile imported transactions soon after each import
- Keep original export files: archive your bank exports for the audit trail
- Start from the template: use Light's CSV template so column names match