Subscribe
← All articles
Oct 2, 2026

Why your payout does not match your sales

By Built and shut down a subscription platform on Stripe Connect, Telegram Stars and crypto payouts

A card payment terminal on a light blue background with a long printed receipt piling up in loops above it

Twelve people buy a $10 product from you in a week. That is $120 of sales, and the deposit that shows up at your bank is $77.92. Nothing has gone wrong. A payout was never a payment for a set of sales. It is whatever your balance came to on the day it was sent, after every fee, refund and dispute that touched the balance since the last one, including ones that belong to sales from weeks ago.

We built a payouts page for a product called Volta, which was ours and which we retired in August 2026. The page had four columns: a date, an amount, a status and Stripe's identifier for the payout. Nothing on it could tell a seller which sales a deposit contained. Volta closed before a live payout ever passed through that page, so what follows about it comes from reading our own code against Stripe's documentation, and the code does not come out of that well.

A payout is a batch

Stripe describes it this way: automatic payouts "occur routinely according to your payout schedule and can include funds from multiple transactions."[1] The payout object itself carries an amount, a currency and a status. Retrieving it, Stripe notes, "won't include the individual transactions that make up the total amount."[1]

So the number at your bank is a total with the workings removed. The workings exist, as a list of what Stripe calls balance transactions, and reading a payout means reading that list.

The sales in it are not this week's sales

Two clocks run before a sale reaches a payout. One is how long the money takes to become available, which Stripe sets per country and lists as 2 business days for the United States.[2] The other is your payout schedule: daily, weekly, monthly or manual. They are independent. "Choosing a payout schedule doesn't change how long it takes for your pending balance to become available. It only controls when payouts are sent."[2]

Put a calendar on it. On a daily schedule with that two-business-day timing, a sale made on Friday 30 October 2026 goes out in the payout of Tuesday 3 November. Add up your October sales, add up your October payouts, and the two will disagree by the last few days of both September and October. On a weekly schedule the drift is wider, and the first payout on a new account is its own case: Stripe typically schedules it "within 7-14 days" of the first live payment.[2]

A bookkeeper who matches deposits to a month of sales is comparing two different sets of transactions and will never get them to agree.

What one payout looks like itemised

Here is the $77.92 payout taken apart, for a US seller with their own Stripe account on the standard card rate of 2.9% + 30 cents[3]. Twelve sales at $10 became available. During the same days the seller refunded one earlier $10 sale, and a buyer disputed another.

LineCountGrossFeesNet
Charges12$120.00-$7.08$112.92
Refund of an earlier sale1-$10.00$0.00-$10.00
Dispute on an earlier sale1-$10.00-$15.00-$25.00
Payout$77.92

The fee on each $10 charge is 59 cents. The refund takes the full $10 back out and returns none of the 59 cents the original sale paid, because "Stripe's processing fees from the original transaction aren't returned."[4] The dispute takes $10 plus the $15 dispute received fee[3], and it takes them at once: when a dispute opens, Stripe "debits your balance for the payment amount and dispute fee."[5]

Both of those earlier sales had already been paid out in full, in some previous deposit. Their undoing lands in this one. That is the part a sales report cannot show you, since the refund and the dispute are not sales and do not belong to this week.

If the bad lines outweigh the good ones, the payout does not shrink to zero and stop. Stripe's own example: receive $100, refund $200 of prior payments, and with nothing else coming in "Stripe creates a payout that debits your bank account."[2]

On your own Stripe account you can get this table for any automatic payout. The payout reconciliation report has an Itemized download that lists "every payment, refund, dispute, fee, and other balance transaction included in the payout."[6]

A payout is pending until it is submitted to the bank, then in transit, then paid, "or to failed or canceled (within 5 business days). Some payouts that fail might initially show as paid, then change to failed."[7]

The reason is that Stripe learns about a failure from your bank, late. "It can take up to 5 additional business days for your bank to return the payout and inform us that it failed."[2] For that stretch a deposit can be marked paid on a screen and absent from your account.

The date beside the status is an estimate too. The field is defined as the "date that you can expect the payout to arrive in the bank"[7], and Stripe's report groups payouts "by the estimated arrival date shown on the Payouts page, not the date your bank posts the deposit."[6]

A bank account that only accepts credits will reject the debit described above; Stripe has a failure code for it, debit_not_authorized, and says accounts must be "set up for both credit and debit payouts."[7]

A mistyped account number is not guaranteed to fail at all. Stripe "might send payouts to the wrong bank account and might not be able to recover the funds."[2]

What our payouts page got wrong

Our page was filled by a job that ran once a day. For each seller it asked Stripe for the most recent payouts and wrote down any it had not seen before. A payout it had already recorded was skipped.

Skipped means the status we showed was the status on the day we first saw the payout, kept forever. A deposit first seen in transit would have read "In transit" on our page after it had landed. Worse, one first seen as paid would have gone on reading "Paid" after the bank returned it and Stripe changed it to failed. The column headed "Date" was Stripe's expected arrival date, with nothing saying it was an estimate.

And we never asked Stripe for the list of transactions inside a payout. A seller looking at $77.92 on our page had the total and an identifier, and the only route to the workings was to leave our product and open Stripe.

When the itemised list does not exist

The breakdown above depends on a setting. Stripe can list a payout's contents because, on an automatic schedule, Stripe decided what went into it. Take that decision yourself and the list is gone: "You control the timing and amount of manual payouts, so Stripe can't identify which transactions are included in each payout. You're responsible for reconciling payouts you create against your transaction history."[1] The same warning is given for instant payouts[6], and the API says listing a payout's transactions is supported "for standard automatic payouts" only.[7]

This reaches sellers on platforms too. The Stripe Express dashboard that a platform can hand its sellers has a Payout reconciliation tab, and "connected accounts on a manual payout schedule can only view the Balance summary tab."[8] Whether your schedule is automatic may be something your platform chose for you.

That is the cost of control here. Choosing when your money moves, or having it in minutes, is bought with the one report that explains a deposit.

On your next payout

Open the payout in Stripe, not in your platform, and download the itemised list. Check the refund and dispute lines against sales you thought were finished.

Reconcile deposit by deposit. Matching a calendar month of sales to a calendar month of payouts cannot work when a Friday sale is a Tuesday deposit.

Treat "paid" as provisional for five business days if the money is not in your account, and check that your bank account accepts debits before the first week your refunds exceed your sales.

If you sell through a platform, ask whether your payouts are automatic and where the itemised breakdown is. Ours could not have answered the second question.

Disclosure. The four-column payouts page, the once-a-day job that recorded each payout a single time and never updated it, and the missing per-payout breakdown are from our own build of Volta, so they carry no citation below. Volta was our product, it is retired, and it closed without a live payout passing through that page. Nothing here recommends it. The worked payout is an illustration built from Stripe's published rates, not a record of a real account. Every external quote is cited to Stripe's own page.

Sources

Every external figure in this article is cited to the provider's own published terms, checked 11 October 2026.

  1. 1.Stripe, Payout reconciliation - automatic payouts follow the payout schedule and can include funds from multiple transactions; for manual payouts Stripe cannot identify which transactions are included and the account holder is responsible for reconciling them
  2. 2.Stripe, Receive payouts - the payout schedule controls when payouts are sent, not how long funds take to become available; United States settlement timing of 2 business days; a negative balance produces a payout that debits the bank account; a failed payout can take up to 5 additional business days to be returned and may first show as paid; payouts sent to mistyped bank details might not be recoverable
  3. 3.Stripe, Pricing - 2.9% + 30¢ per successful transaction for domestic cards; $15.00 dispute received fee
  4. 4.Stripe, Refund and cancel payments - Stripe's processing fees from the original transaction are not returned on a refund; refunds use the available Stripe balance
  5. 5.Stripe, Disputes - when a dispute is opened Stripe debits the balance for the payment amount and the dispute fee
  6. 6.Stripe, Payout reconciliation report - the Itemized CSV lists every payment, refund, dispute, fee and other balance transaction included in a payout; the report is only available with automatic payouts; it groups a payout by its estimated arrival date, not the date the bank posts the deposit
  7. 7.Stripe, The Payout object - status moves from pending to in_transit to paid, or to failed or canceled within 5 business days, and some failed payouts initially show as paid; arrival_date is the date the payout can be expected to arrive; listing the transactions in a payout is supported only for standard automatic payouts; debit_not_authorized failure code
  8. 8.Stripe, Express Dashboard - the Reports section has a Payout reconciliation tab showing automatic payouts and the transactions they contain; connected accounts on a manual payout schedule can only view the Balance summary tab