Skip to main content
Convert·Into
Bookkeeping5 min read

Converting multi-currency bank statements for QuickBooks and Xero without breaking reconciliation

QuickBooks Online and Xero both assign currency at the ledger account level, not the transaction level, for anything you upload by hand. Here is how to set up the right accounts and split a multi-currency statement so reconciliation actually closes.

The Convert·Into team
Published · Updated

Skip the read

convert your statement now

PDF or scan

reconciled Excel in seconds

If you hold a Wise, Revolut or similar multi-currency business account and connect it to QuickBooks Online or Xero, you have probably watched a batch of GBP or EUR transactions land in the bank feed tagged as US dollars. The amounts are right. The currency is wrong. Reconciliation stalls because the ledger balance no longer matches the balance printed on the statement, and there is no button anywhere in the interface that lets you fix it after the fact.

This is a common report in QuickBooks support forums: a bookkeeper turns on multi-currency, links a Wise account, and finds every transaction imported as if it were USD, even the ones that were never USD to begin with. The problem is not a bug to wait out. It is a mismatch between how the source account works and how the accounting platform's chart of accounts is structured, and it needs a specific fix on the ledger side before you import anything else.

Why a single multi-currency account cannot map to a single GL account

A Wise or Revolut account is really several currency balances sitting under one account number. QuickBooks Online and Xero were not built around that shape. Both platforms assign one currency to each bank account in the chart of accounts, and that assignment governs how every transaction posted to it is read. Connect one multi-currency source to one GL bank account, whether through a live feed or a manual import, and every row inherits the currency of that single account regardless of what currency the transaction actually happened in.

That is exactly the failure described in the QuickBooks case: multi-currency was switched on, the Wise account was linked, and QuickBooks treated every incoming transaction as USD because that was the currency the connected account had been given. The GBP and EUR lines were not converted incorrectly so much as mislabelled from the moment they landed, which is a harder problem to unpick than a wrong exchange rate.

QuickBooks Online: one bank account per currency, no exceptions

The fix in QuickBooks Online is structural, not a setting you toggle. After enabling multi-currency in company settings, create a separate bank account in the chart of accounts for each currency your Wise or Revolut account holds. A business holding USD, GBP and EUR needs a USD bank account, a GBP bank account and a EUR bank account, each one assigned its currency at the moment you create it. That assignment cannot be changed once the account has transactions in it, so get it right before the first import.

Once those accounts exist, the source statement has to be split to match them.

Splitting a multi-currency export before you import

Wise and Revolut both let you export transaction history for an account, but the export covers every currency the account holds in one file. You need to break that file apart before either platform can use it correctly.

  1. 1

    Export the full transaction history

    Pull the complete statement or CSV export from Wise or Revolut for the period you are reconciling, covering every currency held in the account.
  2. 2

    Split the export by currency

    Filter the rows into separate files, one per currency, so the USD rows, GBP rows and EUR rows each sit in their own file with their own opening and closing balance.
  3. 3

    Convert each currency file into the layout your platform expects

    Turn each split file into a clean spreadsheet with consistent date, description and amount columns, ready for import.
  4. 4

    Import each file into its matching currency account

    Upload the USD file to the USD bank account, the GBP file to the GBP bank account, and so on, never mixing currencies into a single account.

This is manual work, and it does not scale gracefully if you are converting a year of statements across three or four currencies by hand. If you are also seeing dates or amounts misread on the way in, the fixes for dates importing as text and amounts importing as text apply the same way here as on a single-currency statement.

Xero: transaction-level FX only applies to a live feed

Xero handles multi-currency natively, and it is worth being precise about where its automation actually applies. When a foreign-currency transaction arrives through a live, direct bank feed connection, Xero converts it at the transaction level using its own FX rate of the day, posting the foreign amount and the home-currency equivalent together without you doing anything.

That automatic conversion is a property of the live feed, not of Xero's CSV import. A manually uploaded CSV carries no per-line currency code for Xero to read, and Xero does not look up a daily rate per row during a manual import the way it does for a connected feed. Every row you upload lands in whichever single currency the destination bank account was set to when you created it. Practically, that means a multi-currency Wise export headed into Xero by CSV needs exactly the same treatment as it does for QuickBooks: one Xero bank account per currency, each set to its currency at creation, and the source file split by currency before you upload anything. If you were assuming Xero's manual import path would sort the currencies out for you, that assumption is the thing to fix first.

If your accounts are not connected to a live feed at all, and you are converting statement documents by hand for either platform, the mechanics of what a bank feed can and cannot prove are worth reading alongside this, since a feed's automatic FX handling disappears entirely once you are working from a downloaded or converted statement.

Splitting statements by hand and keeping the currency accounts straight is tedious, and getting a column or a row wrong on one currency file throws off that entire ledger's balance.

Convert each currency file separately

Convert a statement into a clean, per-account layout ready to import into the matching currency ledger.

Verifying the reconciliation after import

Before you move on from the import, check each currency's ledger balance against the same currency's statement balance, not against a converted figure. This is a same-currency comparison: the GBP account in QuickBooks or Xero against the GBP closing balance printed on the Wise statement, with no home-currency conversion involved yet.

CHECK
EXPECTED
STATUS
USD account closing balance
12,480.16
match
GBP account closing balance
3,940.02
match
EUR account closing balance
2,105.77
mismatch, missing one row

A mismatch at this stage almost always traces back to a row that landed in the wrong currency file, a duplicate import, or a transaction that was deleted from the wrong account instead of the right one. Work through it the same way you would find the row behind any reconciliation gap, one currency ledger at a time, before you touch the consolidated, home-currency view of the business.

Once each currency account reconciles on its own, the home-currency translation that QuickBooks or Xero produces for reporting is a downstream calculation, not something you need to police line by line. Get the per-currency ledgers right first, and the consolidated figures follow from correct inputs rather than from a conversion you have to trust blindly.

Frequently asked questions

Can I import a multi-currency Wise or Revolut statement directly into one QuickBooks Online bank account?

No. QuickBooks Online assigns one currency to each bank account in the chart of accounts, and every imported row is treated as being in that account's currency. A Wise account holding USD, GBP and EUR needs a matching USD, GBP and EUR account in QuickBooks, with the statement split by currency before upload.

Does Xero convert foreign currency amounts automatically when I import a CSV?

No. Xero's transaction-level conversion using the FX rate of the day only applies to transactions arriving through a live bank feed connection. A manually imported CSV has no per-line currency field for Xero to read, so every row takes on the currency already set for that bank account.

Can I change the currency of a transaction after it has been imported?

No. Once a bank line posts to an account in QuickBooks or Xero, its currency is fixed by the account it landed in. If it posted to the wrong currency account, delete it and reimport it into the account set up for the correct currency.

How many bank accounts do I need to set up for a Wise account holding four currencies?

Four. Each currency held in a multi-currency source needs its own ledger bank account, set to that currency at creation, so the statement rows for that currency land against a balance denominated the same way.

What FX rate should I use for the opening and closing balance check?

Use the rate printed on the statement or the platform's own rate for the period, not a rate you look up separately. The point of the check is to confirm the ledger's closing balance in that currency matches the statement's closing balance in that same currency, before any home-currency conversion happens at all.