Navigated to blog › accounting-csv-encoding-fix
Back to Blog
csv-import-guides

Fix Accounting CSV Encoding Errors: UTF-8, Windows-1252, and BOM

May 19, 2026
16
By SplitForge Team

Quick Answer

Accounting CSV encoding errors are platform-pair problems: the fix depends on which bank exported the file and which accounting platform is importing it. Chase exports UTF-8 without BOM — QuickBooks Online accepts this directly. Bank of America exports Windows-1252 — QuickBooks Online rejects it; re-encode to UTF-8 without BOM. Barclays exports UTF-8 with BOM — QuickBooks Online rejects the BOM prefix even though the encoding is correct; Xero accepts the same file because it strips the BOM before parsing.

Saying "convert to UTF-8" is incomplete advice when the file already is UTF-8 but carries a BOM. Use SplitForge Format Checker to detect both the encoding and BOM status of your file, then re-save without BOM for QuickBooks Online imports.

This guide covers bank-statement-specific encoding workflows. If you're diagnosing a general CSV encoding error unrelated to bank imports, see CSV Garbled Characters After Import? Fix UTF-8 vs ANSI Errors. For BOM removal as a standalone procedure, see How to Fix BOM (Byte Order Mark) Issues in CSV Files: Complete Guide (2025). This guide focuses specifically on the bank-by-platform matrix — which source encodings each accounting platform accepts.


Fast Fix: Fix Encoding for QuickBooks Online Import

If your QuickBooks Online import is failing with garbled characters or a rejected first field:

  1. Open SplitForge Format Checker and upload your bank statement CSV.
  2. Check the detected encoding and BOM status in the results panel.
  3. If encoding shows Windows-1252: re-save as UTF-8 without BOM (see §Re-encoding in Excel below).
  4. If encoding shows UTF-8 with BOM: re-save as UTF-8 without BOM — the encoding is correct but the BOM prefix causes QuickBooks Online to misread the first column header.
  5. If encoding shows UTF-8 without BOM: the encoding is not the problem. Check delimiter, date format, and column order.

What Causes CSV Encoding Errors in Accounting Imports

Character Encoding Basics

A CSV file is a plain text file. "Encoding" refers to the rule set that maps bytes in the file to characters. The two encodings that cause problems in accounting imports are:

UTF-8: The current universal standard. Represents every Unicode character. Bank of America's older export templates still produce Windows-1252, but UTF-8 is the default for most modern systems. Modern accounting platforms require UTF-8.

Windows-1252 (ANSI): A legacy Windows encoding that covers Western European characters. It is a superset of ISO-8859-1 (Latin-1). Files saved from older Excel installations or legacy bank export systems are often Windows-1252. The encoding works correctly for ASCII characters (A–Z, 0–9, common punctuation) but differs from UTF-8 for characters above code point 127 — accented characters, currency symbols like £ and €, and some punctuation variants.

For a bank statement containing only ASCII characters (amounts in USD, standard merchant names, dates in YYYY-MM-DD), a Windows-1252 file and a UTF-8 file are byte-identical for all content fields. The encoding error surfaces during import validation — the platform checks the file encoding header or byte pattern, rejects Windows-1252, and reports a generic "encoding error" or "garbled characters" message.

The BOM Problem

A BOM (Byte Order Mark) is a sequence of bytes at the start of a file that signals encoding type. UTF-8's BOM is three bytes: EF BB BF. It is optional — the UTF-8 standard does not require it — but Microsoft Excel adds it automatically when you use "Save As → CSV UTF-8 (comma delimited)."

QuickBooks Online rejects the UTF-8 BOM. When a BOM-prefixed file is imported, QBO reads the BOM bytes as part of the first column header name. A column named Date becomes <BOM>Date (where <BOM> is the three-byte prefix rendered as a special character). QBO cannot match this mangled header to its expected column list and fails the import.

Xero silently strips the UTF-8 BOM before parsing. The same file that fails QBO import succeeds Xero import without any modification.

The BOM problem is distinct from the encoding problem. A file can be correctly encoded as UTF-8 and still fail QBO import because it carries a BOM. "Convert to UTF-8" does not fix this — the file is already UTF-8. The fix is specifically "save as UTF-8 without BOM."


Bank-by-Platform Encoding Matrix

The encoding fix depends on the combination of source bank and target platform. The matrix below documents common bank export encodings and each platform's acceptance rules.

Bank Export Encodings

BankDefault Export EncodingBOM PresentNotes
ChaseUTF-8 without BOMNoCompatible with all platforms
Bank of AmericaWindows-1252NoRe-encode to UTF-8 for QBO, Xero, Sage
Wells FargoUTF-8 without BOMNoCompatible with all platforms
CitibankUTF-8 without BOMNoCompatible with all platforms
BarclaysUTF-8 with BOMYesBOM causes QBO rejection; Xero accepts
HSBC UKUTF-8 with BOMYesBOM causes QBO rejection; Xero accepts
LloydsWindows-1252NoRe-encode to UTF-8 for all platforms
NatWestUTF-8 without BOMNoCompatible with all platforms

Note: Bank export encoding can vary by account type, export template version, and online banking interface update. Always verify with Format Checker before assuming encoding from bank name alone.

Platform Acceptance Matrix

PlatformUTF-8 no BOMUTF-8 with BOMWindows-1252Behavior on Rejection
QuickBooks OnlineAcceptedRejected — BOM prefix corrupts first column headerRejected — encoding validation failsGeneric "unable to import" or garbled first field
XeroAcceptedAccepted — BOM stripped silentlyRejected"Invalid file format" encoding error
WaveAcceptedAcceptedAccepted (limited)Garbled characters for non-ASCII content
Sage Business CloudAcceptedAcceptedRejected"File encoding not supported"
NetSuite (CSV import)AcceptedAcceptedRejectedEncoding mismatch on non-ASCII characters

Pairing-Based Fix Decision

Use the matrix to determine the correct fix for your source/target combination:

Chase → QuickBooks Online: No encoding fix needed. UTF-8 without BOM is accepted.

Bank of America → QuickBooks Online: Re-encode from Windows-1252 to UTF-8 without BOM before import.

Bank of America → Xero: Re-encode from Windows-1252 to UTF-8 (without BOM is fine; Xero strips BOM anyway).

Barclays → QuickBooks Online: Remove BOM — the encoding itself (UTF-8) is correct. Do not re-encode; only strip the BOM prefix.

Barclays → Xero: No fix needed — Xero strips the BOM automatically.

Lloyds → QuickBooks Online: Re-encode from Windows-1252 to UTF-8 without BOM.

HSBC UK → QuickBooks Online: Remove BOM only — encoding is already UTF-8.


How to Detect Encoding and BOM Status

SplitForge Format Checker detects the encoding and BOM status of a CSV file in one step. Upload your bank statement CSV and the results panel shows:

  • Detected encoding (UTF-8, Windows-1252, ISO-8859-1, or other)
  • BOM present (yes/no)
  • First three bytes in hex (for manual verification)
  • Recommended action for QuickBooks Online, Xero, and Sage import

Format Checker runs locally in your browser — the CSV file is not uploaded to any server during analysis.

Manual Detection in Notepad++ (Windows)

Open the file in Notepad++. The encoding is shown in the lower-right status bar. "UTF-8-BOM" means UTF-8 with BOM present. "ANSI" means Windows-1252 (Windows default). "UTF-8" without qualifier means UTF-8 without BOM.

Manual Hex Inspection

The first three bytes of a UTF-8 BOM file are EF BB BF in hexadecimal. Open the file in a hex editor (HxD on Windows, xxd on macOS/Linux). If the file begins with EF BB BF, a BOM is present. If the first bytes are FF FE, the file is UTF-16 LE (rare for bank exports but requires conversion).


Re-encoding Workflows

Excel: Save as UTF-8 Without BOM

Microsoft Excel's "CSV UTF-8 (comma delimited)" option adds a BOM automatically. To save UTF-8 without BOM from Excel, use one of these approaches:

Option A — Notepad++ conversion (recommended):

  1. Open the CSV in Notepad++.
  2. Go to Encoding menu.
  3. Select "Convert to UTF-8" (not "UTF-8-BOM").
  4. Save the file (Ctrl+S).

Option B — Python one-liner (for repeated use):

import codecs
with codecs.open('input.csv', 'r', 'windows-1252') as f:
    content = f.read()
with codecs.open('output.csv', 'w', 'utf-8') as f:
    f.write(content)

This reads Windows-1252 input and writes UTF-8 without BOM output.

Option C — Excel "Save As" to plain CSV: Save As → "CSV (Comma delimited)" (not the UTF-8 variant). This produces Windows-1252, which QBO still rejects — but it avoids the BOM. Follow with Notepad++ conversion to UTF-8.

BOM Removal Only (when encoding is already UTF-8)

If Format Checker shows "UTF-8 with BOM" (Barclays, HSBC UK, Excel-saved UTF-8 files):

Notepad++ method:

  1. Open in Notepad++.
  2. Encoding menu → select "UTF-8" (not "UTF-8-BOM").
  3. Save.

The encoding remains UTF-8; only the BOM prefix is removed.

Python one-liner:

with open('input.csv', 'r', encoding='utf-8-sig') as f:
    content = f.read()
with open('output.csv', 'w', encoding='utf-8') as f:
    f.write(content)

utf-8-sig reads UTF-8 with BOM and strips the BOM on read. Writing with utf-8 produces UTF-8 without BOM.

Windows-1252 to UTF-8 (Full Re-encoding)

If Format Checker shows "Windows-1252" or "ANSI" (Bank of America, Lloyds, older bank exports):

Notepad++ method:

  1. Open in Notepad++.
  2. Encoding menu → select "Convert to UTF-8."
  3. Save.

Verify after conversion: Re-open Format Checker and re-upload the converted file. Confirm encoding shows UTF-8 without BOM before importing.


Platform-Specific Import Notes

QuickBooks Online

QBO's bank statement import accepts UTF-8 without BOM only. The import wizard does not expose an encoding selection option — the file must be correctly encoded before upload. A BOM-prefixed file produces the symptom "first column header appears as a special character or blank" in the column mapping screen. A Windows-1252 file produces "garbled characters" or an "unable to recognize file" error.

QBO's import template requires specific column headers: Date, Description, Amount (or separate Debit/Credit columns depending on template version). Column header garbling from a BOM prefix will cause a template mismatch even if the data rows are correctly encoded.

Xero

Xero accepts both UTF-8 with and without BOM. It also accepts ISO-8859-1 (Latin-1) for many imports. Windows-1252 files are rejected. Xero's error message for encoding failure is "Invalid file format" — less specific than QBO's garbled-characters symptom. If Xero rejects a file that appears to be correct format, check encoding before investigating other causes.

Wave

Wave is the most permissive of the major platforms for encoding. It accepts UTF-8 and Windows-1252. BOM-prefixed files are accepted for most import flows. If non-ASCII characters appear garbled after Wave import, the source encoding may be ISO-8859-2 (Eastern European) or another non-Western encoding — re-encoding to UTF-8 resolves this.

Sage Business Cloud

Sage Business Cloud requires UTF-8. BOM-prefixed files are accepted and the BOM is stripped during import. Windows-1252 files are rejected with "File encoding not supported." Note that Sage 50 UK uses Windows-1252 internally — bank statement exports from Sage 50 UK need re-encoding before import into Sage Business Cloud or any cloud platform. For a full Sage encoding and import error reference, see Fix Sage CSV Import Errors: Sage 50 and Business Cloud Guide.


Common Encoding Error Symptoms and Causes

SymptomMost Likely CausePlatform AffectedFix
First column header shows ‘ or similarUTF-8 content read as Windows-1252AnySource file is UTF-8; platform expects Latin-1; re-save as UTF-8
First column header shows as blank or ?BOM bytes read as column header prefixQuickBooks OnlineRemove BOM; encoding is correct
£ and € show as £ and €Windows-1252 opened as UTF-8AnyRe-encode source from Windows-1252 to UTF-8
Import fails with "unrecognized format"Encoding mismatch at file levelQBO, Sage, NetSuiteDetect with Format Checker; re-encode to UTF-8
Column mapping shows unexpected extra columnBOM prefix splits first column nameQuickBooks OnlineRemove BOM
All data rows import correctly; headers misalignHeader row encoding differs from data rowsRare — mixed encodingRecreate header row in plain UTF-8

FAQ

Upload your bank statement CSV to detect encoding and BOM status in one step — then use the re-encoding workflow for your source bank and target platform.

✅ Format Checker detects encoding and BOM status in one step — no manual hex inspection required ✅ Processing runs in your browser — bank statement CSV content is never uploaded to a server ✅ Use the re-encoding workflow above to produce a clean UTF-8 without BOM output ✅ After re-encoding, re-run Format Checker to confirm encoding is correct before importing


Continue Reading

More guides to help you work smarter with your data

csv-import-guides

Bank Statement CSV Formatting Guide for QuickBooks, Xero, and Wave

Your bank statement CSV fails to import because bank exports use date formats, column headers, and encoding that accounting software rejects without warning.

Read More
csv-import-guides

Fix Currency Symbols in Accounting CSV Files for QuickBooks and Xero

Your accounting CSV fails to import because dollar signs, euro symbols, and thousands commas in Amount fields look correct in Excel but reject on import.

Read More