Skip to content

Revolut bank feed not working in Xero: causes and fixes

StatementClear7 min read

A Revolut feed usually stops in Xero for one of four reasons: the account is personal rather than Business, a currency account has no matching Xero bank account, the feed was connected after the period you're trying to reconcile, or the integration was disconnected on the Revolut side. Only the last one is a reconnect away, and even that leaves the gap it stopped over.

Work out which of the four it is before reconnecting

Disconnecting and reconnecting is the standard advice and it addresses one of these four. For the other three it changes nothing, and doing it on top of lines you already entered by hand is how duplicates get into the ledger. A few minutes of checking first saves unpicking them later.

  1. Check whether the account is a Revolut Business account. Personal and standard Revolut accounts have no Xero feed, so there is nothing to reconnect.
  2. Open the bank account in Xero and note the date of the last statement line that arrived. A feed that stopped dead on a specific day points at a dropped integration.
  3. Compare that date with when the feed was first connected. Xero's Revolut feed starts once you set it up, so anything before the connection date was never going to arrive.
  4. Count your Revolut currency accounts against your Xero bank accounts. Each one needs its own matching Xero account, and balances with nowhere to land produce no lines at all.

Cause 1: it's a personal Revolut account

Revolut's Xero feed is a Business account feature. A personal Revolut account being used for business, which is an extremely common setup, has no feed and isn't going to get one however many times somebody tries the integration screen. The account usually predates the company, the card works, and moving everything across means new details for everyone who pays you, so it stays.

There's no fix to apply here, only a choice between opening a Revolut Business account, importing a CSV every month forever, or feeding the statements the account already exports.

Cause 2: a currency account with no Xero account to land in

Revolut Business holds a separate balance per currency and each one exports and feeds separately. In Xero each of those needs its own bank account in the same currency, on a plan that carries multi-currency. A business holding four Revolut balances on a plan that carries one gets a feed for one of them and silence for the other three.

The symptom to recognise: one Revolut currency reconciles perfectly and the others show no lines whatsoever. That's an account mapping and plan problem rather than a broken feed, and reconnecting will not touch it.

Cause 3: the feed starts when you connect it

This is the one that catches people mid year-end. The Revolut feed is set up from Revolut's own integrations settings and begins delivering shortly after it's connected, which means it has nothing to say about the months before. If the account has been running since March and the feed went on in August, those months are not late, they're absent, and no amount of reconnecting will summon them.

It's worth being clear about this before you spend an afternoon troubleshooting a feed that's working exactly as designed. What you have is a history gap rather than a fault, and the fix is posting the earlier statements rather than fixing the connection.

Cause 4: the integration was dropped

The Xero connection is held on the Revolut side, and it can come off. Someone with the right permissions disconnects it, permissions change, or the connection is reauthorised and only some of the currency accounts get relinked. Nothing announces this inside Xero. The feed just stops producing lines and the account quietly drifts, usually noticed at month-end by whoever is trying to reconcile it.

Reconnecting from Revolut's integrations settings fixes the connection. It doesn't fix the ledger, because the feed picks up from the reconnection rather than backfilling what it missed. Note the last statement line date before you reconnect, because that date is the only record you'll have of where the gap starts.

Three of the four end in the same place

A personal account, a history gap and a dropped connection all leave you holding the same thing: Revolut has the transactions, the export has the transactions, and Xero doesn't. Xero's documented answer is the manual CSV import, which for Revolut specifically is more work than it sounds. The export carries both a Started Date and a Completed Date, fees sit in a separate column that isn't included in Amount but is reflected in Balance, and rows marked REVERTED never settled at all. Map any of those wrong and the account reconciles to a number that isn't the bank's.

StatementClear posts Revolut statements into Xero through the Bank Feeds API, so the lines arrive as feed lines rather than as another import. You map the columns once and it remembers them, duplicates are skipped so posting over a period the native feed already covered is safe, and the running balance is recomputed from your mapped amounts and checked against Revolut's own Balance column before anything reaches Xero. If unmapped fees or reverted rows would throw the account out, you find out then rather than at reconciliation.

Stop importing Revolut statements. Feed them instead.

StatementClear posts the statements you already export into Xero as live bank feed lines, deduped and balance-checked before anything reaches the ledger.

Frequently asked

No. A reconnected Revolut feed runs forward from the reconnection. Whatever accumulated between the drop and the reconnect stays missing until it's posted some other way, which is why an account can look healthy from today and still refuse to reconcile for last month.

No. The Xero feed is a Revolut Business feature. A personal account can still export statements, and those statements can still be posted into Xero, but the account itself cannot hold a native feed.

Each Revolut currency account feeds a matching Xero bank account in the same currency, and multi-currency accounts need a Xero plan that includes them. Any balance without a matching account produces no lines, which looks identical to a broken feed from the reconciliation screen.

If any of the period was imported by hand, check for duplicates around the joins first, and check whether Revolut's Fee column was mapped. Fees aren't included in the Amount column but they are reflected in Balance, so an import that maps Amount alone drifts by every fee charged.

Read next