Stripe bank feed for Xero: reconcile payouts against gross sales
Stripe connects to Xero as a payment service rather than a bank feed, which works when payouts are automatic and there is one Stripe account per org. Manual payouts, a second account and historical periods fall outside it. StatementClear posts the Stripe balance itself into Xero as a live feed.
Stripe's problem in Xero is not the absence of a feed - it is that the money arrives twice. Sales happen gross in Stripe, then land in the bank days later as one net lump with the fees already gone, and someone has to make those two stories agree. If the native Stripe feed covers your setup, good; if you are on manual payouts, running a second Stripe account, or facing a year of unimported history, that someone is you, every month.
14 days, no card. Connect Xero and post a real statement before you decide anything.
Where the native Stripe option falls short
Stripe connects to Xero as a payment service, and the resulting feed brings daily gross sales and fee lines into Xero. It works best with an automatic payout schedule and one Stripe account per org; manual payouts, second accounts, refunds, chargebacks and historical periods are where it frays.
A single Stripe payout can bundle hundreds of charges, minus fees, refunds and disputes, into one bank line. Stripe's own payout reconciliation export unpacks it: a CSV with gross, fee and net columns for every balance transaction, plus the charge IDs (ch_...) that tie lines back to individual payments. Signs need care - charges are positive, refunds and disputes negative, and the payout itself appears as a negative balance movement, so a careless import double-counts the payout against your bank feed. Each settlement currency runs its own balance and payout schedule, which means one clearing account per currency in Xero. Posting only the net lump hides your true processing cost and understates gross revenue.
The manual way, every month
- Log in and export a statement (and hope the format didn't change)
- Reformat columns, dates and signs until Xero's importer accepts it
- Upload the CSV into the right account and pray nothing doubled up
- Eyeball the balance, fix what broke, repeat next month
And after all that, it still isn't a feed - it's a one-off import you'll redo next month.
The StatementClear way: a real feed
Upload the statement and it posts into Xero as a live bank feed through Xero's Bank Feeds API - deduped, balance-checked and ready to reconcile. Not another file to import. Converters hand you a CSV; this arrives in Xero the way a bank feed does.
- Step 1
Connect Xero
Link your org and pick the account that is missing transactions.
- Step 2
Upload your Stripe statement
PDF, CSV or Excel - whatever you can export. Map the columns once and we remember the mapping.
- Step 3
We check it first
Duplicates are skipped, the running balance is verified, and sign errors are caught before anything posts.
- Step 4
It lands as a feed
Clean lines arrive in Xero through the Bank Feeds API, ready to reconcile.
Questions about Stripe and Xero
Where this comes from
Everything above about what Xero's native feed covers, what its manual import accepts and how feed lines reach a bank account comes from Xero's own documentation. The relevant pages are below, so you can check the claim rather than take it.
- About bank feedsXero's own account of which feeds exist, how they connect and what they do not cover.
- Import a CSV bank statementThe manual import: the formats it accepts, and how it handles lines it has seen before.
- Bank Feeds API overviewThe interface StatementClear posts through, and the reason a fed line is not an imported one.
Guides for Stripe in Xero
Related accounts
Stop importing Stripe statements. Start feeding them.
Connect Xero, drop in a Stripe statement, and watch the lines arrive as feed lines.
14 days, no card. Connect Xero and post a real statement before you decide anything.
Browse every bank and platform or read the Xero bank feed guides.