Xero's bank feed shows each Stripe payout as one deposit. The deposit is net of fees, refunds and disputes, so if you code it straight to Sales, your profit and loss is wrong. The cleanest manual approach is to post each payout as a manual journal that splits out every component, then reconcile the bank line against it.
This guide covers getting the numbers from Stripe, building Xero's manual journal import file (AccountCode, TaxRate, signed amounts), and reconciling.
Before you start: set up a Stripe clearing account
Many bookkeepers don't post the journal straight to the bank account. They use a Stripe clearing account, a Current Asset or Bank account in Xero named "Stripe Clearing". The journal debits clearing for the net payout, and the bank-feed deposit gets coded as a transfer from clearing. This avoids awkward matching, because Xero bank reconciliation matches bank lines to transactions and payments, not directly to manual journal lines. Clearing should net to zero after each payout.
You'll also need account codes for:
- Sales (e.g. 200)
- Stripe Fees (expense, e.g. 404 Bank Fees)
- Refunds (contra-revenue, or Sales)
- Disputes / Chargebacks (expense)
- Stripe Clearing (e.g. 610 or whatever code you assign)
Account codes differ between organisations. Check Accounting → Chart of accounts for yours.
Step 1: Export the itemized payout reconciliation report from Stripe
In the Stripe Dashboard, open Reports → Payout reconciliation, set the date range, click Download, and choose Itemized. Each row is a balance transaction, with automatic_payout_id, reporting_category, gross, fee and net.
Filter to a single automatic_payout_id, then total gross and fee by reporting_category.
Step 2: Summarize the payout
Worked example (illustrative numbers only)
A UK-based business, GBP payout:
| reporting_category | gross | fee |
|---|---|---|
| charge | 2,400.00 | 52.80 |
| refund | -120.00 | 0.00 |
| dispute | -60.00 | 20.00 |
| other_adjustment | -5.00 | 0.00 |
Net payout = 2,400.00 − 120.00 − 60.00 − 5.00 − 52.80 − 20.00 = 2,142.20. That should equal the deposit in your bank feed.
Step 3: Build the manual journal
| Line | Account | Debit | Credit |
|---|---|---|---|
| Net payout | Stripe Clearing | 2,142.20 | |
| Stripe fees | Bank Fees | 72.80 | |
| Refunds | Sales Refunds | 120.00 | |
| Disputes | Chargebacks | 60.00 | |
| Adjustments | Bank Fees (or Suspense) | 5.00 | |
| Gross sales | Sales | 2,400.00 |
Debits: 2,142.20 + 72.80 + 120.00 + 60.00 + 5.00 = 2,400.00. Credits: 2,400.00. The journal balances.
Tax rates: the part that trips people up
Every line in a Xero manual journal carries a tax rate. Pick these carefully:
- If Stripe gross already includes VAT/GST that you account for elsewhere (for example on invoices), use No VAT / BAS Excluded / Tax Exempt (the name depends on your region) on the journal lines. Otherwise you'll double-count tax.
- Stripe processing fees are usually exempt from VAT in the UK, and GST treatment varies in AU and NZ. Check your Stripe tax invoice and ask your adviser.
- The import's TaxRate column needs the tax rate name exactly as it appears in your Xero tax rates (Accounting → Advanced → Tax rates). A one-character mismatch fails the import.
Step 4: Create the import file
In Xero, go to Accounting → Manual journals, click Import, and download the template. Don't rename or delete the column headings. The key columns are:
- Narration: the journal title, repeated (or filled in on the first row) for every line of the same journal
- Date: in your region's date format (dd/mm/yyyy for UK/AU/NZ)
- Description: optional line description
- AccountCode: the account code, not the name
- TaxRate: the exact tax rate name
- Amount: debits positive, credits negative; the lines of a journal must sum to zero
Example rows:
*Narration,*Date,Description,*AccountCode,*TaxRate,*Amount
Stripe payout po_XXXX,12/04/2026,Net payout,610,No VAT,2142.20
Stripe payout po_XXXX,12/04/2026,Stripe fees,404,No VAT,72.80
Stripe payout po_XXXX,12/04/2026,Refunds,201,No VAT,120.00
Stripe payout po_XXXX,12/04/2026,Disputes,405,No VAT,60.00
Stripe payout po_XXXX,12/04/2026,Adjustments,404,No VAT,5.00
Stripe payout po_XXXX,12/04/2026,Gross sales,200,No VAT,-2400.00(Template headers can differ slightly by region and version. Use whatever the template you downloaded shows, and swap in your own codes and tax rate names.)
Upload the file. Xero imports manual journals as drafts, so review each one and Post it.
Step 5: Reconcile the bank line
In Bank accounts → Reconcile on your main bank account, find the 2,142.20 deposit. Use Transfer and choose Stripe Clearing as the account. Your clearing account now nets to zero: the journal debited it 2,142.20 and the transfer credits it 2,142.20.
Check it every so often. Run an Account Transactions report for Stripe Clearing. If the balance isn't zero, a payout is missing either its journal or its transfer.
Common mistakes
- Wrong sign convention. In the import file, credits must be negative. If they're positive, the journal won't balance and the import errors.
- Tax rate names that don't match. "No VAT" is not the same as "No Vat".
- Account names in AccountCode. Xero wants the code.
- Coding the bank line to Sales. This skips the split and understates revenue and fees.
- Multi-currency. If Stripe pays out in a currency different from your base currency, handle the FX in Xero. This guide assumes the payout and the organisation share a currency.
Where PayoutPair saves time
Doing this weekly means repeating the filter, pivot, sign-flip and tax-rate entry every time. PayoutPair takes the Stripe payout reconciliation CSV and produces one balanced journal with gross sales, Stripe fees, refunds, disputes, adjustments and net to bank, ready for Xero's manual journal import. On the mapping screen you set the account code and tax rate for each line once. After that, the export follows the template layout, with signed amounts that sum to zero.
It's CSV-only. There's no Stripe connection and no access to your Xero file, so you still upload, review and post the draft yourself. You can try one CSV without an account or check a payout in the free calculator. The free plan covers 5 payouts a month. Solo is $9 a month for one business. Bookkeeper is $29 a month for up to 10 businesses, and Bookkeeper Plus is $79 a month for up to 40.
FAQ
How do I record Stripe payouts in Xero without an integration?
Export the itemized Stripe payout reconciliation report, summarize it by reporting category, and import a manual journal (Accounting → Manual journals → Import) that splits gross sales, fees, refunds and disputes. Then reconcile the bank deposit against a Stripe clearing account.
Are credits negative in Xero's manual journal import?
Yes. Debits are positive and credits are negative, and each journal's lines must sum to zero.
What goes in the TaxRate column?
The tax rate's name exactly as it appears in your Xero tax rates, for example "No VAT" or "BAS Excluded", depending on region.
Why use a Stripe clearing account?
Bank reconciliation in Xero matches bank lines to transactions and transfers. Posting the journal to a clearing account and then transferring from clearing to the bank keeps reconciliation one-to-one.
Do imported manual journals post automatically?
No. They import as drafts. Review them and post.
Can I include multiple payouts in one import?
Yes. Give each payout its own Narration and Date so Xero creates a separate journal for each.