Payments & finance

Stripe to Xero payout reconciliation

Stripe to Xero reconciliation breaks each Stripe payout into the charges, refunds and fees inside it. It matches charges to invoices, posts fees and refunds to the agreed accounts and leaves a payout total that agrees with the bank deposit.

An example of how the studio would build it. No live services are connected.

From a Stripe payout to books that balance.

  1. Step 01

    Payout sent

    Stripe reports a payout to the bank, with its amount and the date it is expected to arrive.

  2. Step 02

    Payout broken down

    List every charge, refund, fee and adjustment that makes up the payout, from Stripe’s balance transactions.

  3. Step 03

    Invoices matched

    Match each charge to its Xero invoice by a shared reference, then record the payment against it.

  4. Step 04

    Fees posted

    Post Stripe fees and refunds to the agreed accounts, so the total equals the bank deposit.

  5. Step 05

    Mismatches flagged

    Send anything without a clear match, or any difference in the total, to a person to review.

The result

Books that balance without losing a Friday afternoon.

Each Stripe transaction is posted to Xero once, using its ID as the reference. If the payout doesn’t match the bank line exactly, it is held for review rather than forced to balance.

Before we connect it.

Where this is useful

Useful when Stripe pays out one lump sum for many sales and someone has to work out which invoices it covers. A sensible first version prepares the matches for a person to approve in Xero before anything is posted automatically.

What we need to connect

  1. 01Read access to Stripe payouts and balance transactions, including fees, refunds and disputes.
  2. 02Xero access to invoices, contacts and the bank account the payouts land in, with permission to record payments.
  3. 03A reference shared by Stripe and Xero, plus the account codes and tax treatment agreed with your accountant.

What needs careful handling

Payouts can include refunds, disputes, currency conversion and adjustments from earlier periods, not just recent sales. Each Stripe transaction ID should be posted once, so a retry cannot record a second payment. Anything without a confident match is flagged, because a wrong match is harder to unpick than a gap.

Questions people ask.

Doesn’t Xero already connect to Stripe?

Xero’s own Stripe connection works well for invoices paid through Xero. A custom flow helps when payments come from elsewhere, such as a website checkout or subscriptions, or when fees and refunds need posting in a particular way. We check whether the built-in option is enough first.

Will this replace my bookkeeper or accountant?

No. It removes repetitive matching, but account codes, tax treatment and anything flagged still need a person who knows your books. The aim is to give them a short list of exceptions instead of every line.

All automation examples