Import a PayPal activity CSV into Xero

In short: PayPal's activity download has separate Gross, Fee and Net columns, date and time in separate columns, three rows for a currency conversion, and holds that never change your balance. Xero's statement import uses its own CSV template: a Date and a signed Amount on every line, plus Payee, Description, Reference and a cheque number column. Money out is negative. Drop the file below. It is converted on your device and never uploaded.

Convert your file

PayPal to Xero (CSV)

Download.CSV from PayPal Activity > Download

Your file stays on this device

It is read and converted by this page, inside your browser. Nothing from the file is uploaded, and the converter keeps working offline once the page has loaded.

One email when it ships. The address is used for nothing else. Details.

1. Export the file from PayPal

  1. Sign in to PayPal on a computer and open Activity.
  2. Click the Download icon (or go to Reports > Activity download).
  3. Choose a date range of up to 12 months and the CSV format.
  4. Pick "Balance affecting" transactions if you are offered the choice.
  5. Download the file (large reports are emailed) and upload it here.

Why a raw PayPal export fails in Xero

Xero would bring in every row the download contains, including holds, their releases and currency conversion rows, so the statement balance stops matching PayPal. Gross and fee need to be separate statement lines for the fees to be coded.

Xero imports the CSV line by line, so title rows above the table, balance rows, currency symbols in the amount, or separate gross, fee and net columns end up rejected or imported as the wrong amount.

What is unusual about the PayPal file

  • Columns can be added or removed in PayPal, so we read them by name.
  • Date and number formats follow your PayPal country (for example 01/31/2025 and 1,234.56 in the US, 31/01/2025 and 1.234,56 in Europe).
  • Fees are negative and Net is Gross plus Fee.
  • A purchase in another currency appears as three rows (the payment and two "General Currency Conversion" rows); each currency is its own balance.
  • Holds and their releases, and "Memo" rows, do not change your balance and are left out.
  • The file may start with an invisible byte-order mark.
  • Headers are translated if your PayPal is not in English; switch to English before downloading.

What Xero requires

  • Header matches Xero's template: *Date, *Amount, Payee, Description, Reference, Check Number.
  • One signed amount column: money out negative, decimal point, no symbols.
  • Up to 100,000 rows per file.

2. Before and after

Before: the PayPal activity CSV as downloaded

"Date","Time","TimeZone","Name","Type","Status","Currency","Gross","Fee","Net","From Email Address","To Email Address","Transaction ID","Shipping A...
"03/30/2025","18:22:05","PDT","","General Withdrawal","Completed","USD","-1,000.00","0.00","-1,000.00","seller@example.com","","9WD00000TEST0010","...
"03/28/2025","09:01:12","PDT","Sample Hosting Co","PreApproved Payment Bill User Payment","Completed","EUR","-20.00","0.00","-20.00","","","9WD0000...
"03/28/2025","09:01:12","PDT","","General Currency Conversion","Completed","USD","-21.84","0.00","-21.84","","","9WD00000TEST0008","","","","","","...
"03/28/2025","09:01:12","PDT","","General Currency Conversion","Completed","EUR","20.00","0.00","20.00","","","9WD00000TEST0007","","","","","","",...
"03/20/2025","14:10:00","PDT","Casey Buyerperson","Payment Refund","Completed","USD","-50.00","1.20","-48.80","","casey@example.com","9WD00000TEST0...
"03/18/2025","11:00:00","PDT","Sample Hardware Store","Account Hold for Open Authorization","Pending","USD","-1.58","0.00","-1.58","","","9WD00000T...
"03/18/2025","11:05:00","PDT","Sample Hardware Store","Reversal of General Account Hold","Completed","USD","1.58","0.00","1.58","","","9WD00000TEST...
"03/12/2025","8:15:30","PDT","Casey Buyerperson","Shopping Cart Item","Completed","USD","50.00","0.00","50.00","","","9WD00000TEST0003","","","Prin...

After: what Xero receives

After: paypal-2025-03-02-to-2025-03-30-xero.csv
*Date*AmountPayeeDescriptionReferenceCheck Number
03/02/20251250.00Riley ClientnameRiley Clientname - MONTHLY - $1 for the first 2 Months, then $6.99 / Month9WD00000TEST0001
03/02/2025-46.73FeeFee: Riley Clientname - MONTHLY - $1 for the first 2 Months, then $6.99 / Month9WD00000TEST0001 fee
03/12/202550.00Casey BuyerpersonCasey Buyerperson - Print, 8x10 "Sunset"9WD00000TEST0002
03/12/2025-2.24FeeFee: Casey Buyerperson - Print, 8x10 "Sunset"9WD00000TEST0002 fee
03/20/2025-50.00Casey BuyerpersonCasey Buyerperson - Payment Refund9WD00000TEST0006
03/20/20251.20FeeFee: Casey Buyerperson - Payment Refund9WD00000TEST0006 fee

Synthetic sample data that follows the real export layout, not a real account. The "after" output was produced from it by the same converter this page runs.

3. Import the converted file into Xero

  1. In Xero open Accounting > Bank accounts and choose the account.
  2. Click Manage account > Import a statement.
  3. Choose this CSV and click Import.
  4. Check the column mapping (Date, Amount, Payee, Description, Reference) and confirm the date format if asked.

Questions

Should I download "Balance affecting" or "All transactions"?
Pick balance affecting if you are offered the choice. Either way, the converter leaves out holds, their releases and Memo rows, because they do not change your PayPal balance.
Which date format does Xero need?
Xero lists both month-first and day-first dates as accepted and asks you to confirm the format when it is unclear. Choose United States for MM/DD/YYYY or Elsewhere for DD/MM/YYYY, and confirm the same format in Xero if it asks.
How are PayPal fees handled?
By default each payment is written as the gross amount plus a separate fee line, so the fee can go to a merchant fees expense account and the running balance still matches PayPal. Choose "Net amount only" in the options for one line per payment.
Can I import more than one month at once?
Yes. Xero imports the whole statement file you give it. Keep each file to one bank account in Xero, and avoid overlapping a period you already imported so you do not have to delete duplicate statement lines.

Other ways to convert PayPal

Other exports to Xero (CSV)

Common import problems