Swedish Bank CSV Formats Explained: Complete Reference
Published March 14, 2026 -- 9 min read
Every Swedish bank exports transaction data in a slightly different CSV format. Column names differ, separators vary, and encoding is inconsistent. This reference documents the exact format for each major bank so you can build reliable import workflows.
Quick Comparison
| Bank | Separator | Encoding | Date Format | Decimal |
|---|---|---|---|---|
| Handelsbanken | Tab | ISO-8859-1 | YYYY-MM-DD | Comma |
| SEB | Semicolon | UTF-8 | YYYY-MM-DD | Comma |
| Nordea | Semicolon | ISO-8859-1 | YYYY-MM-DD | Comma |
| Swedbank | Comma | UTF-8 BOM | YYYY-MM-DD | Period |
| Lansforsakringar | Semicolon | UTF-8 | YYYY-MM-DD | Comma |
| Fortnox | Semicolon | UTF-8 BOM | YYYY-MM-DD | Comma |
Handelsbanken
Handelsbanken exports transactions as tab-separated values with ISO-8859-1 encoding. This is one of the trickiest formats because modern tools default to UTF-8 and comma separators.
Column Layout
Bokforingsdatum Valutadatum Text Belopp Saldo 2026-01-15 2026-01-15 Spotify AB -129,00 15 432,50 2026-01-14 2026-01-14 ICA Maxi -387,45 15 561,50
- Bokforingsdatum: Posting date (when the bank processed it)
- Valutadatum: Value date (when money actually moved)
- Text: Transaction description
- Belopp: Amount (comma decimal, space thousands separator)
- Saldo: Running balance
Note: Amounts use space as thousands separator (15 432,50) which can cause parsing issues. Strip spaces before converting comma to period.
SEB
SEB uses semicolon-separated values with UTF-8 encoding. Their format includes a reference number column which is useful for reconciliation.
Column Layout
Datum;Verifikationsnummer;Text;Belopp;Saldo 2026-01-15;;Spotify AB;-129,00;15432,50 2026-01-14;12345;Loneutbetalning;32000,00;15561,50
Nordea
Nordea exports with semicolons and ISO-8859-1 encoding. They include both booking date and interest date.
Column Layout
Bokforingsdag;Belopp;Avsandare;Mottagare;Namn;Rubrik;Saldo;Valuta 2026-01-15;-129,00;;;Spotify AB;Kortbetalning;15432,50;SEK
Note: Nordea includes a Valuta (currency) column. For multi-currency accounts, this will show different currencies per transaction.
Swedbank
Swedbank is the most modern format -- UTF-8 with BOM, comma-separated, and period decimals. This is closest to standard CSV and easiest to parse.
Column Layout
Clearingnr,Kontonr,Datum,Text,Belopp,Saldo,Referensnr 8327,1234567890,2026-01-15,Spotify AB,-129.00,15432.50, 8327,1234567890,2026-01-14,ICA Maxi,-387.45,15561.50,ABC123
Lansforsakringar
Lansforsakringar uses semicolons with UTF-8 encoding. Each of the 23 regional companies may have slight variations.
Datum;Text;Belopp;Saldo 2026-01-15;Spotify AB;-129,00;15432,50
Fortnox Bank Reconciliation Format
For importing into Fortnox, you need a specific format with semicolons, UTF-8 BOM, and Swedish column headers:
Datum;Text;Belopp 2026-01-15;Spotify AB;-129,00 2026-01-14;ICA Maxi;-387,45
Key requirements: UTF-8 encoding with BOM (byte order mark), semicolon separator, comma decimal separator, YYYY-MM-DD dates, and exactly three columns.
Common Parsing Pitfalls
- Encoding mismatch: Handelsbanken and Nordea use ISO-8859-1, not UTF-8. Swedish characters (a, a, o) will be garbled if you read with wrong encoding.
- Decimal separators: Most Swedish banks use comma (1 234,56). Swedbank uses period (1234.56). Do not assume one format for all banks.
- Thousands separators: Handelsbanken uses space (15 432,50). This breaks parseInt() and parseFloat() -- strip spaces first.
- Multi-line descriptions: Some banks (especially Nordea) include line breaks in transaction descriptions. Use proper CSV parsing, not simple line splitting.
- BOM detection: Swedbank and Fortnox files start with UTF-8 BOM (EF BB BF). Strip the BOM before parsing or your first column name will be corrupted.
Universal Parsing Code
// Parse any Swedish bank CSV
function parseSwedishCSV(content, separator = ';') {
// Strip BOM if present
if (content.charCodeAt(0) === 0xFEFF) {
content = content.slice(1);
}
const lines = content.split(/\r?\n/).filter(Boolean);
const headers = lines[0].split(separator).map(h => h.trim().replace(/^"(.*)"$/, '$1'));
return lines.slice(1).map(line => {
const values = line.split(separator).map(v => v.trim().replace(/^"(.*)"$/, '$1'));
const row = {};
headers.forEach((h, i) => { row[h] = values[i] || ''; });
return row;
});
}
// Parse Swedish number: "15 432,50" -> 15432.50
function parseSwedishNumber(str) {
return parseFloat(str.replace(/\s/g, '').replace(',', '.')) || 0;
}Skip the format headaches
Bank Statement Converter handles all Swedish bank formats automatically. Upload any PDF, get clean, standardized output in your preferred format. No manual parsing required.