Monzo or Revolut CSV will not import into Xero: what I try
When a Monzo or Revolut Business CSV will not import into Xero, here is what I check: columns, dates, signs, and a five-row test before the full file.

You export from Monzo or Revolut Business, open Xero, and the bank statement import fails or lands wrong. The CSV looks fine in Excel. That is a familiar trap.
These apps export clean enough data for humans. Xero still wants a specific shape. Small mismatches blow up the whole import.
Open the raw file first
Do not start in Excel. Open the CSV in a plain text editor. Check the header row, the date strings, and whether money in and money out are separate columns or one signed amount. Excel loves to rewrite dates and strip leading zeros before you notice.
Columns Xero actually cares about
- A date column in a consistent format
- A clear amount (or separate money in and money out)
- A description or payee field that is not empty on every row
- No second header block halfway down the export
Extra columns are usually fine. Missing or merged amount columns are not.
Dates and locale
UK day-month order is the usual offender. If Excel has already turned dates into serial numbers, what you save out is not what Monzo or Revolut gave you. Import as text if you must use a spreadsheet, or skip the spreadsheet step entirely.
Signs and fees
Card payments, transfers, and fees sometimes land with the wrong sign after a manual tidy. Spot-check a withdrawal, a top-up, and a fee line. One flipped sign can make the statement balance look insane even when most rows are right.
Five-row test before the full statement
Copy five representative rows into a tiny CSV. Import that sample into Xero. Confirm dates, amounts, and descriptions. Only then convert the full export. It is dull and it saves re-uploading a month of transactions.
A shorter route when you are done fighting the file
I built CSVReady for this. Upload the Monzo or Revolut CSV, check the mappings, and download a file shaped for Xero (or QuickBooks Online / FreeAgent). You can try five rows free with no account and no bank login.
Try CSVReady: five rows free →
If a particular export keeps misbehaving, use the CSVReady contact form and leave the real statement data out of the message.
Need a hand with this?
Tell me what your business or agency needs. I can help scope the work and explain the next step.
Related Articles
Chromes Broken Developer Tools
Chrome has had a recent update where they've changed a few things in their dev tools. I feel they've concentrated on some really annoying features that we're not needed...
Why isn't overflow: overlay the norm across all browsers
A problem I came across alongside SVG in-built animations not working properly on Firefox was the rule overflow: overlay; not working there. It defaults to auto which doesnt help animations...
Laravel Tips That Make Production Applications Easier to Maintain
A collection of practical Laravel tips focused on making applications easier to maintain, debug, and hand over -- from someone who has been running a production Laravel platform for four years.