Free guide · JWillum products
How to clean a QuickBooks Online or Xero export before sending it to your accountant
Clean a QuickBooks Online or Xero transaction export before sending it to your accountant: headers, totals, -Split-, payees, dates.
Published · Updated
Your accountant asks for "a CSV of all transactions for the year". You export a Transaction List from QuickBooks Online or Account Transactions from Xero, open it, and it's messy: a report title and date range across the top, totals and opening balances mixed in with real rows, -Split- where an account should be, payee names like ACH DEBIT STORE 0421 ACME, and debits and credits in separate columns. Your accountant will either clean it up (and bill for the time) or send it back.
Here's how to turn it into one tidy sheet by hand.
Step 1: Export the right report
- QuickBooks Online: the Transaction List report (Date, Transaction Type, Num, Name, Memo/Description, Account, Split, Amount) or the Journal report (with Debit and Credit columns).
- Xero: Account Transactions (Date, Source, Description, Reference, Currency, Debit, Credit) or Bank Transactions (Date, Amount, Payee, Description, Reference, Account Code, Tax Type, Currency).
Export as CSV, not PDF or Excel-formatted, and keep an untouched copy.
Step 2: Remove everything that isn't a transaction
Delete these rows:
- the report title, company name and date-range lines above the header
- subtotal and total rows
- opening and closing balance rows
- blank spacer rows
You should end up with one header row and one row per transaction.
Step 3: Fix the dates
Convert all dates to YYYY-MM-DD. Be careful with slash dates: 03/04/2025 is 4 March in the US format and 3 April in the UK format. Check which format your file uses before converting, for example by finding a date with a day over 12. Guessing wrong silently moves transactions into the wrong month.
Step 4: Use one signed amount column
If the export has separate Debit and Credit columns, add a single amount column (for example debit as positive and credit as negative, or whatever your accountant prefers) and keep the originals next to it. Make sure every amount uses a . decimal with no currency symbols or thousands separators.
Step 5: Deal with -Split-
In a QBO Transaction List, -Split- in the Split column means the transaction hits more than one account. Don't guess the other side. Clear the placeholder, add a column like split_unresolved set to TRUE, and let your accountant check those in QBO.
Step 6: Clean payee names (but keep the original)
Bank-fed payees carry noise like ACH DEBIT, ACH CREDIT, INCOMING WIRE or STORE 1234. Make a cleaned payee column, but keep the raw text in its own column so nothing is lost.
Step 7: Flag, don't fix, the tricky stuff
Add a warnings column and note these rather than changing numbers:
- journal entries where debits don't equal credits
- rows with an empty account
- amounts that won't parse
- rows in a different currency with no exchange rate (don't invent one)
Finally, remove exact duplicate rows and save as CSV UTF-8.
Doing it faster: BooksExport Clean
BooksExport Clean is a single offline HTML file that does Steps 2–7 for you. Drop in a QBO Transaction List or Journal export, or a Xero Account or Bank Transactions export, and it detects the report type. It then:
- removes preamble, total and balance rows
- converts dates to ISO format, and makes you pick US or UK when dates are ambiguous (download stays blocked until you do; it never guesses)
- normalizes amounts and turns Debit/Credit into one signed
amount - clears
-Split-and flagssplit_unresolved - strips common payee noise while keeping
raw_payee - removes exact duplicate rows
It warns about unbalanced journals, empty accounts, unparsed amounts and multicurrency gaps without changing numbers or inventing accounts or exchange rates. You get a unified UTF-8 CSV plus a changelog of every automatic fix.
There's no QuickBooks or Xero login: you export the CSV yourself and the data stays on your device. It's for books exports only; plain bank statement CSVs are refused with a clear message. It's a formatting aid, not tax or accounting advice.
Related tools
- Stripe payouts muddying your books? StripeClear Journal turns a Stripe balance export into a balanced QuickBooks journal CSV.
- Billing hours? Tracker Invoice Lines turns Toggl, Clockify or Harvest exports into Xero or Wave invoice-line CSVs.
Official documentation
The tool for this job
BooksExport Clean
QuickBooks Xero Export CSV Cleaner — Offline Accountant Handoff
Clean QuickBooks Online or Xero export CSVs for accountant handoff: junk rows stripped, ISO dates and normalized amounts. Not tax advice.
This guide is also published on Gumroad.