Skip to content

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.

Start a free trial

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.

  1. Step 1

    Connect Xero

    Link your org and pick the account that is missing transactions.

  2. Step 2

    Upload your Stripe statement

    PDF, CSV or Excel - whatever you can export. Map the columns once and we remember the mapping.

  3. Step 3

    We check it first

    Duplicates are skipped, the running balance is verified, and sign errors are caught before anything posts.

  4. 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

The native option leans on an automatic payout schedule and a single Stripe account per org, runs a few days behind, and tends to leave refunds, chargebacks and payments taken outside Xero invoices as partial matches you finish by hand. StatementClear covers the rest: historical periods, manual-payout setups, and additional Stripe accounts. You upload Stripe's own exports and get feed lines in Xero, deduped and balance-checked.

Most bookkeepers keep a Stripe clearing account in Xero: gross charges and fee lines go in there, and the payout line then matches the transfer arriving in the bank feed. That keeps fees visible as a real cost and your revenue figures gross, not net. StatementClear posts whatever your Stripe export contains into the feed you set up for that clearing account.

A real feed. Lines are posted through Xero's Bank Feeds API and appear ready to reconcile, exactly as native feed transactions do. No import screen, no OFX juggling - converters give you another file, this gives you the feed.

Yes. The payment service marks invoices as paid, which is a different job. StatementClear feeds the Stripe balance account, so the gross activity, fees and payouts have somewhere to reconcile against, and the two never post the same line twice.

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.

Start a free trial

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.