Shopify Payments payouts to a Xero manual journal

In short: Shopify Payments' payouts export has one row per payout: charges, refunds, adjustments, reserved funds, fees and the total sent to your bank. A Xero manual journal per payout records what the payout was made of: gross sales, fees and refunds on their own lines, and the payout itself on a payout clearing account, because Xero does not accept bank accounts in a manual journal. Each journal adds up to zero, debits positive and credits negative, in the layout of Xero's manual journal import template. Drop the file below. It is converted on your device and never uploaded.

Convert your file

Shopify payouts to Xero manual journal

payouts_export.csv

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.

No file handy? or download the sample to look at it first.

The data in the sample is invented. It is converted on this device, the same way your own file would be.

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

1. Export the file from Shopify Payments

  1. In Shopify admin open Finances, then Payouts.
  2. Choose the dates and click Export.
  3. Upload the downloaded CSV here.

Why a raw Shopify payouts export fails in Xero (manual journal import)

The deposit from Shopify is charges minus refunds and fees, plus or minus adjustments. Entering the deposit as income understates sales and hides the fees. A journal entry per payout records each part and puts exactly the payout total on the payout clearing line.

Xero's bank statement import puts every line into one bank account, so a payout split into sales, fees and refunds needs either a clearing account in Xero or a journal. A manual journal per payout (or per month when the export does not link sales to payouts) books gross sales, fees, refunds and payments you sent to their own accounts, and the payout amount to a payout clearing account: a current asset account that is not a bank account, because Xero does not let manual journals post to bank or credit card accounts. When the deposit arrives in your bank feed, reconcile it in Xero against that payout clearing account (Receive Money coded to it), and the clearing account goes back to zero. Xero imports the journals as drafts, and you post them after checking.

What is unusual about the Shopify payouts file

  • One row per payout with Charges, Refunds, Adjustments, Reserved Funds, Fees, Retried Amount and Total.
  • Each paid payout becomes its parts plus the payout itself, so the Shopify balance nets to zero for every payout.
  • A failed payout's sales, refunds and fees are kept and stay in the Shopify balance; a later Retried Amount is paid out of that balance, not booked as income. Scheduled and in-transit payouts are left out.
  • A row whose columns do not add up to its Total is left out with a note.

What Xero (manual journal import) requires

  • Columns as in Xero's manual journal template: Narration, Date, Description, AccountCode, TaxRate, Amount and two pairs of tracking columns.
  • Narration and Date on the first row of each journal; the rows below with both left blank belong to the same journal.
  • Dates as dd mmm yyyy (05 Mar 2026) or dd/mm/yyyy.
  • Account codes, not names (for example 200). Debits positive, credits negative; each journal adds up to zero.
  • No bank or credit card accounts: the payout is booked to a payout clearing account (a current asset), and the bank feed deposit is reconciled against it.
  • Up to 300 lines per file (we split bigger files without breaking a journal). Journals are in your base currency.

2. Before and after

Before: the Shopify Payments payouts CSV as downloaded

Payout Date,Status,Charges,Refunds,Adjustments,Reserved Funds,Fees,Retried Amount,Total,Currency
2023-05-30,paid,53.96,-7.99,0.00,0.00,2.46,0.00,43.51,USD
2023-04-27,paid,75.91,0.00,10.47,0.00,4.33,0.00,82.05,USD
2022-11-21,failed,0.00,-179.54,0.00,0.00,0.00,0.00,-179.54,USD
2022-11-20,paid,1200.00,0.00,0.00,0.00,35.10,0.00,1164.90,USD

After: what Xero (manual journal import) receives

After: shopify-payouts-xero-manual-journal-payout-2022-11-20-to-2023-05-30.csv
*Narration*DateDescription*AccountCode*TaxRate*AmountTrackingName1TrackingOption1TrackingName2TrackingOption2
Shopify payout shopify-payout-2022-11-20-USD (BR-20221120-1)20 Nov 2022Gross sales - Shopify payout shopify-payout-2022-11-20-USD-1200.00
Fees - Shopify payout shopify-payout-2022-11-20-USD35.10
Deposit - Shopify payout shopify-payout-2022-11-20-USD1164.90
Shopify activity not yet paid out (2022-11-21, BR-20221121-1)21 Nov 2022Refunds - Shopify activity not yet paid out179.54
Taken from Shopify balance - Shopify activity not yet paid out-179.54
Shopify payout shopify-payout-2023-04-27-USD (BR-20230427-1)27 Apr 2023Gross sales - Shopify payout shopify-payout-2023-04-27-USD-75.91

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 (manual journal import)

  1. Make sure every account code in the file exists in your Xero chart of accounts (enter your codes in the options before downloading). The payout clearing code must be a current asset account, not a bank or credit card account: Xero does not accept those in a manual journal.
  2. In Xero, in the Accounting menu, select Manual journals.
  3. Click Import, then Browse, and select this CSV.
  4. Click Import, review the message, then click Complete Import. The journals arrive as drafts.
  5. Open the Draft tab and check each journal: add a tax rate to each line if the file has none, and tick "Show journal on cash basis reports" if you report on a cash basis (the template has no column for it). Then select the journals and click Post.
  6. When the deposit (or the net pay withdrawal) appears in your bank feed, reconcile it against the payout clearing account (Receive Money or Spend Money coded to that account), not against sales.

Questions

Why is my Shopify payout smaller than my sales?
Shopify Payments takes its fees and any refunds, adjustments and reserved funds before it pays out. The payouts export lists each, and the journal entry gives each its own line, so the payout total matches the deposit.
How does the payout reach my bank account in Xero?
Xero does not accept bank or credit card accounts in a manual journal, and a journal line cannot be reconciled against a bank feed line anyway. So each journal books the payout to a payout clearing account, a current asset account you create (for example Payouts in transit), not a bank account. When the deposit appears in your bank feed, reconcile it against that clearing account (Receive Money coded to it). Do not code the deposit to sales: the journal has already booked the sales, so that would count them twice.
What happens to failed payouts?
The sales, refunds and fees inside a failed payout are still recorded, but no money reached your bank, so the journal keeps that amount in the clearing account. When a later payout shows it as a Retried Amount, it comes out of the clearing account again instead of being counted as income twice. Scheduled and in-transit payouts are left out until they are paid.
What is not confirmed yet?
Xero's template download needs a Xero login, so we have not compared the exact header text (including the asterisks Xero puts on required columns) with a freshly downloaded template; the column names follow Xero's help page. We have also not confirmed Xero's default account codes, which tax rate names exist in each country, or whether imported journals arrive with "Show journal on cash basis reports" ticked. We have not imported the result into a real Xero organisation. Check the first journal before importing many.

Other ways to convert Shopify payouts

Other exports to Xero manual journal