What You Can Import
- Transactions: Date, amount, description, category
- Account Statements: Bank statements in CSV format
- Credit Card Statements: Transaction history exports
- Investment Activity: Trades, dividends (with appropriate column mapping)
- Historical Data: Bulk import of past transactions
CSV import is a one-time operation. For ongoing syncing, use Plaid, SimpleFIN, SnapTrade, or Coinbase integrations.
Supported File Types
CSV Files
- Standard CSV: Comma-separated values
- TSV: Tab-separated values
- Any Delimiter: Configure custom delimiters during import
- Character Encodings: Automatic detection (UTF-8, ISO-8859-1, Windows-1252, etc.)
- Max Size: 5 MB per file
PDF Statements (AI-Powered)
- Bank Statements: Parsed using AI (OpenAI GPT)
- Credit Card Statements: Extract transactions from PDF
- Max Size: 10 MB per file
- Format Validation: Checks for valid PDF headers
Prerequisites
Export from Your Bank
Download a CSV export from your bank’s online portal:
- Log into your bank’s website
- Navigate to transaction history or statements
- Look for “Export” or “Download” button
- Select CSV format (if available)
- Choose date range for export
Importing a CSV File
Choose Import Type
Select the type of import:
- Transaction Import: Most common (bank/credit card transactions)
- Other types: May be available depending on configuration
Select Account (Optional)
Choose which Sure account to import into:
- Select an existing account
- Or create the account first, then import
Upload CSV File
- Click “Choose File” or drag and drop
- Select your CSV file
- Click “Upload”
Configure Column Mappings
Map CSV columns to Sure fields:
- Date Column: Which column contains transaction dates
- Amount Column: Which column contains amounts
- Description Column: Which column contains descriptions
- Optional Columns: Map category, account, balance, etc.
- Date Format: Specify how dates are formatted (MM/DD/YYYY, DD/MM/YYYY, etc.)
- Amount Format: Positive/negative handling, decimal separator
Preview and Confirm
Review the preview:
- First few rows of imported data
- Mapped fields and transformations
- Any warnings or errors
Column Mapping Guide
Required Fields
| Sure Field | Description | Example CSV Values |
|---|---|---|
| Date | Transaction date | 2024-01-15, 01/15/2024, 15-Jan-2024 |
| Amount | Transaction amount | 123.45, -50.00, 1,234.56 |
| Description | Transaction description | WALMART #5123, Coffee Shop |
Optional Fields
| Sure Field | Description | Example CSV Values |
|---|---|---|
| Category | Transaction category | Groceries, Dining, Transport |
| Account | Account identifier | Checking, Savings, *1234 |
| Balance | Running balance | 5,432.10 |
| Notes | Additional notes | Business expense |
| Check Number | Check number | 1001, 1002 |
| Type | Transaction type | debit, credit, withdrawal |
Amount Handling
Positive/Negative Convention:- Some banks export debits as negative, credits as positive
- Others export all as positive with a separate Type column
- Configure during column mapping step
,(comma): European format →1.234,56.(period): US format →1,234.56
- Stripped during import (e.g.,
$123.45→123.45) - Account currency determines final currency
Date Format Detection
Sure attempts to auto-detect date formats, but you can specify:MM/DD/YYYY- US format (e.g.,12/31/2024)DD/MM/YYYY- European format (e.g.,31/12/2024)YYYY-MM-DD- ISO format (e.g.,2024-12-31)DD-MMM-YYYY- Text month (e.g.,31-Dec-2024)
Import Templates
Sure can detect and suggest import templates for common banks:- Chase Bank: Predefined column mappings
- Bank of America: Predefined column mappings
- Wells Fargo: Predefined column mappings
- Custom Templates: Create your own for reuse
- You’ll see a “Template Suggested” badge
- Click “Apply Template” to auto-configure column mappings
- Review and adjust if needed
PDF Import (AI-Powered)
Import transactions directly from PDF bank statements using AI:AI Processing
Sure sends the PDF to OpenAI GPT:
- Extracts transaction data
- Parses dates, amounts, descriptions
- Returns structured data
Review Extracted Data
Review AI-extracted transactions:
- Check for parsing errors
- Verify amounts and dates
- Assign to correct account
Character Encoding
Sure automatically detects file encoding using therchardet gem:
- UTF-8 (most common)
- ISO-8859-1 (Latin-1)
- Windows-1252 (Windows Western European)
- UTF-16
- Others
- Re-exporting from your bank with UTF-8 encoding
- Opening the file in Excel and saving as “CSV UTF-8”
- Using a text editor to convert encoding
Managing Imports
Viewing Import History
All imports are tracked:- Go to Settings → Imports
- View list of all imports with:
- Status (pending, processing, completed, failed)
- Import date
- Number of transactions
- Associated account
Reverting an Import
If you imported incorrect data:
Source: app/controllers/imports_controller.rb:105
Deleting an Import
To permanently delete an import record:- Navigate to the import
- Click “Delete”
- Confirm deletion
- The import record
- Associated file uploads
- Does NOT delete transactions (use Revert first if needed)
Troubleshooting
”File Too Large”
Cause: CSV exceeds 5 MB (or PDF exceeds 10 MB). Solution:- Split the file into smaller date ranges
- Import multiple smaller files sequentially
”Invalid File Type”
Cause: File is not a valid CSV or PDF. Solution:- Ensure file extension is
.csvor.pdf - Check that CSV uses standard delimiters (comma, tab)
- Verify PDF is not corrupted
”Unable to Parse Dates”
Cause: Date format not recognized. Solution:- Check your date format (MM/DD/YYYY vs DD/MM/YYYY)
- Manually specify date format in column mapping
- Ensure dates are in a single column (not split across multiple)
“Duplicate Transactions”
Cause: Importing the same data multiple times. Solution:- Sure does not auto-detect duplicates for CSV imports
- Manually mark duplicates in transaction view
- Or revert the incorrect import first
”Garbled Characters”
Cause: Character encoding mismatch. Solution:- Re-export CSV as UTF-8 from your bank
- Open in Excel → Save As → CSV UTF-8
- Or use a text editor to convert encoding
”Max Row Count Exceeded”
Cause: Import contains too many rows. Solution: Split into multiple smaller imports. Source: app/controllers/imports_controller.rb:26Best Practices
- One Import Per Statement: Import one bank statement at a time
- Date Ranges: Don’t overlap date ranges between imports
- Review Before Publishing: Always preview data before finalizing
- Save Templates: Create templates for banks you import from frequently
- UTF-8 Encoding: Always export CSVs as UTF-8 when possible
- Backup First: Export existing Sure data before large imports
- Test with Small File: Test with a few rows first, then import full file
Alternative: Use Integrations
For ongoing syncing, consider using automated integrations instead:Plaid
Automated bank syncing for 12,000+ institutions
SimpleFIN
Privacy-focused alternative for US banks
- One-time historical imports
- Unsupported banks
- Manual accounts with occasional data entry
- Testing and development
API Reference
Creating an Import
Publishing an Import
Reverting an Import
File Size Limits
Allowed MIME Types
Additional Resources
Transaction Management
Learn about managing imported transactions
Account Reconciliation
Reconcile imported transactions with bank statements