What makes this useful: Create a daily exception view rather than relying on manual statement comparison. EarnThread's contribution is a topic-specific operating test that joins the customer promise, delivery boundary and evidence review for “Payment reconciliation basics for creator platforms”.

£322.20 lands in your bank account. Your storefront says you sold £360 this week. Neither number is wrong — and until you can explain the £37.80 gap line by line, you can't trust either of them.

Most reconciliation guides are written for finance teams with ERP software and a month-end close. You're a creator selling digital products: you need to know that this deposit equals those orders, minus those fees, minus that refund, and you need to know it in minutes, not afternoons.

This guide shows you exactly that. One worked payout with real numbers that add up, the exact Stripe screens each number lives on, and a weekly routine that takes about 15 minutes. The deposit is the answer. Reconciliation is just showing your working.

This is general guidance, not accounting advice. Check anything tax-related with your accountant.

Before you start

You need three things open, side by side:

  • Your Stripe Dashboard — or, if you sell through a platform like EarnThread, your Stripe Express dashboard (more on the difference below).
  • Your bank statement for the period you're reconciling, ideally a business account that receives nothing but creator income.
  • Your order list — the sales record from your storefront, with order IDs and dates.

One note on the numbers in this guide: the worked example uses Stripe's published UK rate for standard UK cards, 1.5% + 20p per transaction (opens in a new tab) (opens in a new tab). Rates differ by country, card type and currency conversion, so check the pricing page for your own country before you copy the maths.

Why your payout never equals your sales

A payout is not a sale. It's a batch: Stripe collects your charges, subtracts its fees, subtracts any refunds and disputes, and sends the remainder to your bank on a schedule.

Stripe records every one of those movements as a balance transaction (opens in a new tab) (opens in a new tab) — a charge, a refund, a fee, an adjustment, a payout. Reconciliation means taking one bank deposit and listing the balance transactions inside it until the total matches to the penny.

So the formula for every payout is:

If you can fill in that line for a payout, you've reconciled it. Everything below is just where to find each number.

Step 1: Find the payout and its exact amount

Start from the bank deposit, not the sales report. Open your bank statement, pick the most recent deposit from Stripe, and note the exact amount and date.

Then open the Payouts page (opens in a new tab) (opens in a new tab) in your Stripe Dashboard. Find the payout whose amount matches the deposit. Stripe shows an estimated arrival date for each payout; your bank may post it a day or so later, so match on amount first and date second.

You'll know it worked when one payout row in Stripe matches your bank deposit to the penny.

Step 2: Pull the payout reconciliation report

Stripe builds the matching list for you. Go to the Payout reconciliation report (opens in a new tab) (opens in a new tab), set the date range to include your payout's estimated arrival date, and find your payout in the Payout reconciliation section.

Two conditions, straight from Stripe's documentation (opens in a new tab) (opens in a new tab):

  • The report only exists for automatic payouts. If you pay yourself out manually, Stripe can't tell which transactions a payout "contains", so use the Balance report instead and treat your Stripe balance like a bank account.
  • Instant payouts are on you. Stripe states you're responsible for reconciling instant payouts against your own transaction history, because you chose the timing and amount.

Download the Itemized CSV for your payout. It lists every payment, refund, dispute and fee in the batch, each with a `gross`, `fee` and `net` column and a `reporting_category` that tells you what kind of movement it was.

You'll know it worked when the sum of the `net` column in the CSV equals the payout amount.

Step 3: Work the numbers — one real-shaped payout

_Hypothetical example:_ Priya sells a £30 Notion template pack from her storefront. In one payout week she makes 12 sales and issues one refund to a buyer who purchased twice by mistake. All 12 buyers paid with standard UK cards, so each sale costs her 1.5% of £30 plus 20p — £0.65 per transaction at Stripe's published UK rate (opens in a new tab) (opens in a new tab).

Her payout breaks down like this:

LineAmount
Gross sales: 12 × £30.00£360.00
Stripe processing fees: 12 × £0.65−£7.80
Refund: 1 × £30.00−£30.00
Net payout£322.20

Three things to check against your own payout:

  • The refund costs more than the refund. Priya returned £30 to the buyer, but the £0.65 fee on that original sale is not returned — Stripe's refund documentation states plainly that processing fees from the original transaction aren't returned (opens in a new tab) (opens in a new tab). That sale now nets her −£0.65.
  • A dispute would cost far more. If a buyer had gone to their bank instead of asking her for a refund, Stripe would debit the £30 plus a dispute fee — £20 in the UK, $15 in the US (opens in a new tab) (opens in a new tab), and the fee for receiving the dispute is non-refundable even if she wins. One dispute on a £30 product wipes out the margin on nearly two further sales.
  • Every line has an ID. In the itemized CSV, each row carries a `balance_transaction_id` and, for sales and refunds, a `charge_id`. Those IDs are how you tie Stripe's rows to your own orders in the next step.

You'll know it worked when you can rebuild your payout amount from gross, fees and refunds on paper — no unexplained residue.

Step 4: Match the CSV rows to your orders

Open the itemized CSV next to your order list. For each row with `reporting_category` of `charge`, find the matching order; for each `refund` row, find the refund you issued; `fee` and `dispute` rows explain themselves.

Match on IDs, not amounts. Two £30 orders on the same day are indistinguishable by amount; the `charge_id` is unique. If your storefront stores the Stripe payment ID against each order — EarnThread does this automatically — matching is a lookup, not a guess. Stripe also lets you include your own metadata columns in the CSV export (opens in a new tab) (opens in a new tab), so an `order_id` you set at checkout comes back out in the report.

Mark anything that doesn't pair up. A charge with no order, or an order with no charge, is an exception — and exceptions are the whole point of this exercise. Common culprits: a failed payment your storefront recorded as pending (see how to handle payment failures), or a refund issued directly in Stripe that never made it back to your order records (your refund workflow should always start from the order, not from Stripe).

You'll know it worked when every CSV row points at exactly one order, refund or dispute in your own records, and your exception list is explicit — even if it isn't empty.

Step 5: Close the loop at the bank

Last check: confirm the dates. Stripe's reconciliation report groups a payout by its estimated arrival date, and the documentation notes this is not necessarily the date your bank posts the deposit (opens in a new tab) (opens in a new tab) — weekends, holidays and your bank's own processing can shift it.

If a payout seems to have vanished between Stripe and your bank, don't panic-email anyone yet. Check the Payouts page for a failed payout first, then look up the payout's trace ID — a bank-side reference number available in the report — and give that to your bank.

You'll know it worked when your records show, for this deposit: the bank date, the Stripe payout ID, and the list of orders inside it.

Selling through a platform? What Stripe Connect changes

If you sell through a creator platform rather than your own Stripe account, your money flows through Stripe Connect, and you reconcile from a different screen. (New to this? Start with how Stripe Connect payments work for creators.)

On a Connect platform like EarnThread, you have your own connected Stripe account, and Stripe gives you the Express dashboard (opens in a new tab) (opens in a new tab) to see it: your balance, money on the way to your bank, the expected arrival date of your next payout, your payments, and your refunds and disputes. You log in at connect.stripe.com/express_login or through a login link from the platform.

Two practical differences from running your own full Stripe account:

  • You get two views of the same money — use both. The platform's sales dashboard shows orders and its fee per order (here's how platform fees work); your Express dashboard shows the balance transactions and payouts on your own connected account. Reconcile platform orders against Express payouts the same way as in Steps 1–5. If the two views disagree, that disagreement is your exception list.
  • The payout reconciliation report lives in Express too. The Express dashboard's Reports section includes a Payout reconciliation tab showing each automatic payout and the transactions inside it, per Stripe's Express dashboard documentation (opens in a new tab) (opens in a new tab). As with a full account, it only appears if your payouts are automatic.

The 15-minute weekly routine

Pick a fixed slot — Friday morning works, because the week's payouts have usually landed. Then:

  1. 01
    Open your bank statement

    and list every Stripe deposit since last week's check. (2 minutes)

  2. 02
    Match each deposit to a payout

    on the Payouts page or in your Express dashboard, amount first, date second. (2 minutes)

  3. 03
    Download the itemized CSV

    for each payout from the payout reconciliation report. (2 minutes)

  4. 04
    Confirm the formula

    for each payout: gross − refunds − disputes − fees = net. (3 minutes)

  5. 05
    Pair rows with orders

    by charge ID, and write down anything unpaired. (4 minutes)

  6. 06
    Act on exceptions

    — chase the failed payment, record the missing refund, or note the open dispute and its deadline. (2 minutes)

  7. 07
    File the CSVs

    in one folder per month. Your future accountant will price this into their quote.

Weekly matters more than thorough. Four payouts are a 15-minute job; a quarter's worth is an evening you will keep postponing, and a dispute you discover two months late is a dispute you've already lost by default.

When a payout straddles two months

The bank deposit date is not the sale date, and at month end the gap bites. Stripe holds a payment as a pending balance before it becomes available for payout — in the UK, the default settlement timing is 3 business days, and your very first payout can take 7–14 days (opens in a new tab) (opens in a new tab). Sell on 29 March and the money can land on 2 April.

Handle it with one rule: record the sale in the month it happened, and treat the payout as a transfer, not income. March's sales report should show the 29 March order; April's bank statement shows the deposit that contains it. Your reconciliation CSV is the bridge — it lists the charge date and the payout date for every row, so you can always say which month a pound was earned in versus paid in.

This also explains the most common month-end "discrepancy": March's storefront revenue will almost never equal March's Stripe deposits, because the last few days of March pay out in April. That's not an error. It's timing, and the CSV proves it.

Three mistakes that make reconciliation impossible

  • Mixing personal and business accounts. If Stripe payouts land in the account that also pays for groceries, every reconciliation starts with an archaeology dig. Open a separate account that receives only creator income and pays only creator costs — it's the single highest-leverage change on this page.
  • Recording the net deposit as your revenue. Your sales were £360, not £322.20, and the records that matter report it that way: in the US, for example, Form 1099-K reports your gross payment volume, and the IRS states the gross amount isn't adjusted for any fees, credits or refunds (opens in a new tab) (opens in a new tab) — those are subtracted separately. Book gross sales as income and fees and refunds as their own lines, or your books will never agree with what Stripe reports about you.
  • Ignoring refunds and disputes until they bite. Each refund silently eats its original processing fee, and each dispute debits the sale amount plus a non-refundable fee the moment it's filed, per Stripe's dispute documentation (opens in a new tab) (opens in a new tab). If your records only track sales, your "revenue" is a number nobody can reconcile — least of all you. Make refunds a first-class record in your refund workflow, not an afterthought.

A short word on VAT and sales tax

If you sell digital products to consumers abroad, tax is generally due where your buyer lives, not where you do — HMRC's guidance on digital services states the place of supply is the consumer's location (opens in a new tab) (opens in a new tab), and that when you sell through a digital platform, the platform is usually the one responsible for accounting for the VAT. Which side of that line you're on depends on exactly how you sell, so put this question to your accountant before your first cross-border sales quarter closes. This is general guidance, not accounting advice.

The habit that matters for reconciliation: keep tax collected as its own line, never blended into revenue, so the money you're holding for a tax authority never looks like money you've earned.

Reconciliation isn't a finance ritual — it's how a creator business knows its own numbers. Your next step: pick your most recent bank deposit and run Steps 1–5 on it today, then put the 15-minute routine in your calendar for Friday. EarnThread stores the Stripe payment ID against every order and runs payouts through your own connected Stripe account, so each deposit traces back to the exact orders inside it. Start free

Frequently asked questions

Why doesn't my Stripe payout match my sales?

Because a payout is your gross sales minus processing fees, refunds and any disputes, batched on a settlement delay. Download the itemized CSV from Stripe's payout reconciliation report: it lists every transaction inside the payout, and the sum of its net column equals the deposit to the penny.

How often should I reconcile payouts?

Weekly. At typical creator volume that's about 15 minutes, and it keeps the window short enough to catch failed payments and disputes while you can still act on them — dispute response deadlines are measured in days, not months. Monthly is the absolute minimum, timed just after month end.

Is the payout amount my revenue?

No. The payout is your net proceeds after fees and refunds. Record gross sales as revenue and fees and refunds as separate lines — tax reporting such as the US Form 1099-K is based on gross volume, unadjusted for fees or refunds, so books kept on net deposits won't tie out.

Why did my payout arrive in a different month from the sale?

Stripe holds each payment as a pending balance before paying it out — in the UK the default is 3 business days, and a first-ever payout can take 7–14 days. Sales from the last days of a month therefore land in the next month's bank statement. Record the sale in the month it happened and treat the deposit as a transfer.