SimpleBankConvertSimpleBankConvert home

Import PayPal Transactions into Xero

By SimpleBankConvertPublished October 17, 2026

To import PayPal transactions into Xero, set up PayPal as its own bank account in Xero, download your PayPal activity as a CSV, and turn each sale into two lines: the gross amount and the fee. Import one file per currency into the matching account. Then check the result against PayPal's running balance before you reconcile.

PayPal feed or PayPal activity download for Xero?

Use Xero's PayPal feed for transactions from now on, and use a PayPal activity download for anything older than the feed's start date. The feed needs no files and refreshes every 12 hours. It cannot reach back after it starts, so history before that point has to come from a download.

Xero's article on PayPal direct feeds sets out how the feed behaves. Three points shape the choice:

  • Once connected, the feed imports every 12 hours, and you can refresh it at any time.
  • It only includes transactions in the currency of the PayPal account you set up in Xero, and it skips anything worth 0.00.
  • If you want earlier transactions after the feed has started, Xero says you need to import them manually.

So most businesses end up using both. The feed runs from a chosen start date, and one or more activity downloads fill the months before it. The rest of this guide is about those downloads.

When a download is the only option

Xero lists business and personal PayPal accounts as eligible for the feed. If yours is not, or you are only catching up on a past year, a download is the whole job. The same applies if you are cleaning up before the feed is connected and want the history in place first.

Stripe works the same way

Stripe has its own feed in Xero and its own reports, and the split between gross sales, fees and payouts follows the same logic. The guide to importing Stripe transactions into Xero covers that side.

A PayPal account in Xero for each currency you hold

PayPal belongs in Xero as its own bank account, separate from your checking account, because it holds a balance of its own. If your PayPal holds more than one currency, give each currency its own account in Xero, so every file has one obvious place to go.

Xero's PayPal article says the same for feeds: if a PayPal account is already connected, you add a bank account for each currency you accept. For file imports, set it up the same way before you start:

  1. In Bank accounts, click Add bank account and search for PayPal.
  2. Give it a name that includes the currency, such as "PayPal USD".
  3. Choose the account's currency. Add a foreign currency to your organisation first if it is not listed.
  4. Repeat for each currency your PayPal balance holds.

The guide to importing a foreign currency bank statement into Xero covers what a non-USD account needs, the exchange rates Xero applies and the error you see when a file's currency does not match the account.

Why not put PayPal into your checking account?

Putting PayPal activity into the checking account mixes two balances. The checking account's statement balance in Xero then stops matching the bank, and every PayPal sale shows up where the bank statement has no matching line. Keeping PayPal separate lets each account reconcile to its own statement.

PayPal activity download columns a Xero CSV needs

A PayPal activity download has more columns than Xero's statement import uses. Keep the date, a name, the transaction type, the gross amount, the fee, the currency and the balance. Drop the rest before building the import file, or leave them unmapped on Xero's column screen.

PayPal's reference for the activity download report defines the columns. The ones that matter here:

PayPal column What PayPal says it holds Use in Xero
Gross The gross amount, including fees The main statement line
Fee The fee for that transaction A second statement line
Net Typically gross minus fees A cross-check, not imported
Currency The ISO 4217 currency code Decides which Xero account the row goes to
Balance The running available balance after the row The check after import
Type A description of the event code Helps you spot transfers and refunds

The same reference notes that one report covers at most 12 months, from any period in the last seven years. CSV reports are capped at 50,000 records, and bigger ones arrive split into several files inside a ZIP. A busy shop may need several downloads to cover one year.

Turning the download into Xero's layout

Xero's statement CSV needs one Amount column, with money in as positive and money out as negative. The Xero guide to CSV bank statements also says to delete opening and closing balance columns, because Xero works out the balance itself, and to remove empty rows. So the Balance column stays in your working copy for checking, but it does not go into the file you upload.

How do you put PayPal fees on their own Xero statement lines?

Split every PayPal row that has a fee into two rows in your import file: one for the gross amount and one for the fee as a negative amount. Give both the same date. In Xero you can then match the gross line to the sale and code the fee line to a fees expense account.

A worked example

The rows below are made-up examples of a PayPal download for a small online print shop:

Date Name Type Gross Fee Net Currency
05/03/2026 Harbor Lane Books Payment received 240.00 -8.86 231.14 USD
05/04/2026 Lisa Moreno Payment received 36.50 -1.76 34.74 USD
05/06/2026 Cedar Post Inks Payment sent -112.40 0.00 -112.40 USD

Rebuilt for Xero, the same activity becomes five lines:

Date,Amount,Payee,Description,Reference
05/03/2026,240.00,Harbor Lane Books,Payment received,
05/03/2026,-8.86,PayPal,Fee on payment from Harbor Lane Books,
05/04/2026,36.50,Lisa Moreno,Payment received,
05/04/2026,-1.76,PayPal,Fee on payment from Lisa Moreno,
05/06/2026,-112.40,Cedar Post Inks,Payment sent,

The third row had no fee, so it stays as one line. The Net column is gone, because importing net amounts would hide the fees inside the sales.

Why not import the net amount?

Importing net amounts is quicker, but it records a 240.00 invoice as paid with 231.14. Each sale then has a small difference to explain, and the year's PayPal fees never appear as an expense on their own. Splitting the fee once, in the file, saves that work on every reconciliation.

If your download shows conversion lines

A PayPal balance that moves money between currencies may show the conversion as rows of their own in the download. If yours does, treat each side as a line in the account for its currency: money out of the USD account, money in to the EUR account. Check the Type column to see how your download labels them, and keep the Currency column as the guide to which file each row belongs in.

PayPal transfers and card-funded payments between Xero accounts

Money that moves between PayPal and your bank is a transfer in Xero, not income or an expense. Record it once as a transfer between the two accounts, then reconcile the PayPal line and the bank line against that one transfer. Card-funded PayPal payments need the same treatment, plus one more line.

Withdrawals to your bank

A withdrawal shows in the PayPal download as money out and on your bank statement as money in a day or two later. If you code both as income and expense, the business looks busier than it is. Code neither. Create a single transfer from PayPal to the bank, and both lines match it.

Payments funded from a bank account or card

Xero's PayPal article explains a case that confuses many people. When a purchase is paid through PayPal but funded from a bank account or card rather than a PayPal balance, three statement lines appear for one purchase:

  • the bank or card account shows money out,
  • the PayPal account shows the same amount coming in from that bank or card,
  • and the PayPal account shows the amount going out to the seller.

Reconcile the first two against a transfer from the bank or card to PayPal. The third line is the real expense. If you are building files from a download, keep all of those rows, or the PayPal balance will not add up.

Checking a PayPal import against PayPal's Balance column

PayPal's Balance column is the check for a PayPal import. Take the balance just before your first imported row, add every amount in your import file, and you should land on the balance shown on the last row. If you do not, a row is missing, duplicated or has the wrong sign.

Mistakes this check catches

  • A fee left out. The total is too high by exactly one fee.
  • A fee entered as positive. The total is too high by twice that fee.
  • A row in the wrong currency. A EUR payment sitting in the USD file shifts the total by an amount that matches nothing on the USD side.
  • A gap between downloads. One report ends on March 31 and the next starts on April 2.
  • Overlap with the feed. Your last file runs past the day the PayPal feed started, so a few days come in twice.

Other file formats

Some people convert PayPal's CSV to OFX so Xero needs no column matching. That works, but it adds a step you have to check. Whether converting CSV to OFX is worth it covers when it helps. Business bank exports in MT940 format are a different case again, explained in MT940 to OFX.

If your PayPal history is only available as PDF statements, SimpleBankConvert is being built to turn PDF statements into a CSV laid out for Xero. You can ask for early access. Either way, check the fee lines against the download before you reconcile anything.

All posts in Xero imports