---
title: "Stripe Payouts That Reconcile and MRR From the Source"
canonical: "https://www.owox.com/blog/articles/stripe-payouts-reconcile-mrr"
updated: "2026-11-09"
---

# Payouts That Reconcile and MRR From the Source: Stripe Beside the Books

Stripe's dashboard shows gross volume, the bank shows deposits, the books show revenue, and a spreadsheet makes the three agree once a month. This article is the finance outcome of putting Stripe in the data warehouse beside the books, the orders and the subscriptions, told from one account's thirteen months: which three amounts and three dates the gap is made of, whether the payouts reconciled (140 of 146 to the cent, the four gaps named), how big fees, refunds and disputes are against gross, what MRR is when it is rebuilt from subscription items, what sits in open invoices and failed payments today, and what finance keeps control of.

[Data Modeling](/blog/topics/data-modeling) · Updated November 7, 2026 · 7 min read

![Payouts That Reconcile and MRR From the Source: Stripe Beside the Books](https://cdn.owox.com/www/content-marketing-article/stripe-payouts-reconcile-mrr/thumbnail/1-o3aa6c.png/public)

Stripe says one number: gross volume. The bank says another: the deposits that arrived. The books say a third: revenue, net of refunds, with fees as an expense. All three are right, and once a month someone builds the spreadsheet that proves it, deposit by deposit.

**This is what that spreadsheet turns into when Stripe’s tables sit in the data warehouse beside the books, the orders and the subscriptions.** The numbers below are one account’s thirteen months, read through one [business data model](/glossary/data-model); the account is small, so every figure can be checked by hand.

## Three amounts, three dates

Stripe keeps three records of the same sale, each with its own date. The charge says what was sold and when the customer paid. The balance transaction says what reached the Stripe balance after the fee, and when it became available for payout. The payout says what left for the bank and when it arrived. Gross volume is the first, revenue after fees the second, cash the third, and the usual argument is three people each holding one.

In the model they are three tables with a line between each pair, next to the tables the rest of the company already reads from. Charges meet the orders through the charge id the store saves; Stripe’s customers meet the accounts and the storefront customers on the ids and emails the business stores; Stripe’s subscriptions and invoices, the one-off invoices included, sit beside the business’s own.

![The business data model with Stripe in it: sessions, ad spend, orders, customers, accounts, subscriptions and invoices joined to Stripe’s balance transactions, charges, refunds, disputes, payouts, customers, invoices, subscriptions, subscription items and payment intents.](https://cdn.owox.com/www/content-marketing-article/stripe-payouts-reconcile-mrr/body/1-d3rfmu.png/public)

Over the thirteen months loaded, $227,495 was charged in 565 successful payments; $214,074 of it, 94%, reached the balance after refunds, disputes, fees and the rest of the balance activity; 146 automatic payouts carried it to the bank, the median payment three days after it was made.

## Did the payouts reconcile?

A bank deposit from Stripe is a lump. Behind it are the balance transactions that became available since the previous payout: charges net of fees, less the refunds and disputes in the same window. The first test of the loaded tables is whether they add up to the deposit.

| Payouts, 2 October 2025 to 6 November 2026 | Count | Amount |
| --- | --- | --- |
| Equal to the sum of their transactions, to the cent | 140 | 124,636.45 |
| Window older than the loaded history | 2 | 500.74 |
| A gap, between 1.59 and 96.93 | 4 | 819.30 |
| All automatic payouts | 146 | 125,956.49 |

**One hundred and forty match to the cent, and the six that do not each have a reason.** The first two drew on money that arrived before the loaded history begins on 1 October 2025; a load that starts earlier closes them, and the history is there to load. One is 96.93 short because a refund became available on the morning it went out and was carried against the balance instead. The other three are a transfer between two of the account’s own Stripe balances, booked as a pair of rows in the days before the payout; the payout carried one leg of the pair, and the gap is exactly that amount: 6.36, 1.59 and 3.11.

For finance the result is a column: each deposit has its list of transactions beside it, and the gap is zero or a named amount. The tables load on a daily schedule and the check is a query over them, so it reruns with every load and a new gap is a row to look at, the same way as any other [data quality check](/blog/articles/data-quality-checks-data-mart). The analyst guide carries the rule that builds the windows and the full table of gaps.

## The Turning Point

OWOX Data Marts

See your first report built in real time. _15 minutes._

1.  Connect your data warehouse
2.  Pick your metrics
3.  Get a live Google Sheets report

In the time it takes to write a ticket. Then imagine never writing that ticket again.

[Book a Demo](/book-a-call)

We'll use your actual use case

## Fees are a line, not a rounding error

Fees in this account came to $3,902 on $227,495 charged. The blended rate is 1.7%, and it describes nothing: a card payment of 29.00 cost 1.14, which is 2.9% plus 0.30, and the single $100,000 payment through a bank payment method cost 5.00. The fee line in the budget follows the payment mix, not a percentage of sales, and every balance transaction carries its fee, so the line is a sum rather than an estimate.

The rest of the bridge from gross to net is three more lines from the same table. Refunds took $8,587 across 14 refunds. Disputes took $5,630 across 6 chargebacks, plus 90.00 in dispute fees. Everything between $227,495 and $214,074 has a row, a date and a type, which is what it takes to book fees as an expense and refunds against sales rather than netting both into “Stripe income”.

## MRR from the source

MRR has no accounting standard behind it, so it is only as good as the definition written next to it. Rebuilt from the subscription items, price times quantity, yearly prices divided by twelve, over the subscriptions active on 6 November 2026, it came to **$7,258 across 45 subscriptions**: $5,975 from 38 monthly items and $1,283 from 7 yearly ones.

| Plans on 6 November 2026 | Subscriptions | MRR |
| --- | --- | --- |
| Monthly, $20 to $100 | 32 | 3,372.00 |
| Monthly, $100 to $500 | 6 | 2,602.84 |
| Yearly, $100 to $500 a year | 3 | 96.50 |
| Yearly, over $500 a year | 4 | 1,186.67 |

The status filter is the definition. Had canceled subscriptions been left in, the figure would have been $1,807 higher; the seven that never completed their first payment would have added $1,844 more. Both choices are finance’s to make once and keep; the table reruns under the same rule every day, so the board number and the operating number stop drifting apart. Stripe’s own MRR figure is not beside it here: nobody on this build could open that account’s billing dashboard, and a number nobody saw is not quoted. On your account that comparison is the first thing to run; the [MRR](/metrics/monthly-recurring-revenue) page has the usual definition, and the differences will come from the four choices Stripe makes for you: discounts, trials, metered prices and currency.

## The collections view

The same tables hold what is at risk today, read on 6 November with the month six days old. Seven invoices are open, worth $18,266, all first invoices of new subscriptions on automatic collection, each attempted at least once, none older than thirty days. Six customers carry Stripe’s delinquent flag. Over the thirteen months, 91 charge attempts failed for $30,074, 75 of them card declines, and 59 checkouts worth $26,581 were started and never finished. The six open disputes are all awaiting a response.

None of this is news to Stripe. It is new as one view, by customer, beside the invoice the business raised and the account it belongs to, so the follow-up goes to a name rather than a dashboard, and so the same figures exist for your account the day the tables land.

## What finance keeps

Nothing posts back. The connector reads Stripe; the data warehouse holds a copy; the ledger stays the ledger. That pair is the point: Stripe is where money moves, the books are where it is recorded, and the model joins them where they meet. Payouts match the bank deposits on arrival date and amount, which is where these tables meet the [QuickBooks month-end](/blog/articles/month-end-without-exports-quickbooks) piece.

A balance transaction is not edited once written: a later refund, a reversed dispute or a correction is a new row on its own date, so a month that reconciled stays reconciled and the change is visible as a row. Who can read the copy is the data warehouse’s own permissions, and finance can decide who holds access. What finance gives up is the monthly export; what it gets is the same bridge every morning, where the rest of the company already looks.

## What to ask for

Finance sets the conditions and checks the result. Three things to send to whoever owns the data warehouse:

1.  The [Stripe data source page](/data-sources/stripe): the fourteen tables, what each holds and how they join.
2.  The analyst guide: loading the tables and running the payout reconciliation and the MRR rebuild.
3.  The [Stripe payments dashboard](/dashboards/stripe-payments-dashboard): what the shared view looks like.

And one condition before anything else is built: the first deliverable is the payout table above, run on your own account. If the deposits do not add up to the cent, with every gap named, the dashboard waits.

## FAQ

## Frequently Asked Questions

How should Stripe fees and refunds be booked on the P&L?

Fees as an expense line, refunds against sales, and disputes as their own line with the fee Stripe charges for each one; never the three netted into a single "Stripe income" figure. Every balance transaction in Stripe's tables carries its type, its date and its fee, so each line is a sum of rows rather than an estimate. In the account we read, fees came to $3,902 on $227,495 charged over thirteen months, refunds took $8,587 across 14 refunds, and disputes took $5,630 across 6 chargebacks plus $90.00 in dispute fees. The blended fee rate of 1.7% describes nothing useful: a card payment of $29.00 cost $1.14, which is 2.9% plus 0.30, and a single $100,000 payment through a bank payment method cost 5.00. The fee line in the budget follows the payment mix, so the right number for your account is the sum of your own rows, not a percentage of sales.

Which subscriptions count in MRR built from Stripe data?

The ones finance decides count, with the rule written down once and applied every day. MRR has no accounting standard behind it, so the status filter is the definition. Rebuilt from Stripe's subscription items, price times quantity, yearly prices divided by twelve, over the subscriptions active on 6 November 2026, the account we read came to $7,258 across 45 subscriptions: $5,975 from 38 monthly items and $1,283 from 7 yearly ones. Leaving canceled subscriptions in would have added $1,807; counting the seven that never completed their first payment would have added $1,844 more. Stripe's own MRR figure will differ from a rebuilt one through four choices Stripe makes for you, discounts, trials, metered prices and currency, so the first thing to run on your account is the comparison, and the [MRR](https://www.owox.com/metrics/monthly-recurring-revenue) definition page has the usual convention to start from.

Can a reconciled Stripe month change after it closes?

Not in the tables. A balance transaction is not edited once it is written: a later refund, a reversed dispute or a correction arrives as a new row on its own date, with its own type. A month whose payouts matched their transactions to the cent therefore stays matched, and the change shows up as a row in the month it happened, where it can be booked. That is the difference from a monthly export, which is pulled again and overwrites the last one. When the tables load on a daily schedule, the payout check is a query over them that reruns with every load, so a new gap appears as a row to look at rather than as a surprise at the next close.

Does loading Stripe into the data warehouse change Stripe or the books?

No. The connector reads Stripe, the data warehouse holds a copy, and nothing posts back to Stripe or to the ledger. Stripe stays where the money moves and the books stay where it is recorded; the data model joins the two where they meet, which is the payout, matched to the bank deposit on arrival date and amount. The copy is read-only by construction, and who can read it is the data warehouse's own permissions, so finance decides who holds access to the payments tables and to the views built on them. What finance gives up is the monthly export; what it gets is the same bridge from gross to net to cash every morning, in the place where the rest of the company already reads its numbers.

How do I see what is at risk in Stripe before month-end?

As one view by customer, read from four of Stripe's tables: invoices, customers, payment intents and disputes. In the account we read on 6 November 2026, seven invoices were open for $18,266, all of them first invoices of new subscriptions on automatic collection, each attempted at least once and none older than thirty days; six customers carried Stripe's delinquent flag; over thirteen months 91 charge attempts had failed for $30,074, 75 of them card declines; 59 checkouts worth $26,581 had been started and never finished; and the six open disputes were all awaiting a response. None of it is hidden in Stripe, but there it is spread over several screens. In the data warehouse the same figures sit beside the invoice the business raised and the account it belongs to, so the follow-up goes to a name rather than a dashboard.

What should finance ask for first when Stripe goes into the data warehouse?

The payout table, run on your own account, before any dashboard. Each automatic payout is listed beside the sum of the balance transactions that became available since the previous one, and the gap is either zero or a named amount with its reason. In the account we read, 140 of 146 payouts matched to the cent; two drew on money from before the loaded history begins, and the other four had gaps between $1.59 and $96.93, each traced to a refund that became available on the morning of the payout or to a transfer between the account's own Stripe balances. If the deposits do not add up to the cent with every gap named, the dashboard waits. After that come the fee, refund and dispute lines from the same table and an MRR figure under a definition finance has written down; the [Stripe data source page](https://www.owox.com/data-sources/stripe) lists the fourteen tables the analyst will load.

## Topics

[Data Modeling](/blog/topics/data-modeling)

## Related articles

[Data Modeling · What is Apache Ossie? The Open Standard for Semantic Models, Explained · October 19, 2026](/blog/articles/apache-ossie)

[Data Modeling · Benefits of Data Modeling for Business Reporting · March 3, 2025](/blog/articles/benefits-of-data-modeling)

[Data Modeling · Best Data Modeling Tools in 2026 · July 21, 2026](/blog/articles/best-data-modeling-tools)

[See all articles →](/blog/articles)

## Links

Pages this page links to, on this site and on docs.owox.com. Where the page has a Markdown twin, its address follows the link.

- [Data Modeling](https://www.owox.com/blog/topics/data-modeling) — /blog/topics/data-modeling.md
- [business data model](https://www.owox.com/glossary/data-model) — /glossary/data-model.md
- [data quality check](https://www.owox.com/blog/articles/data-quality-checks-data-mart) — /blog/articles/data-quality-checks-data-mart.md
- [Book a Demo](https://www.owox.com/book-a-call) — /book-a-call.md
- [MRR](https://www.owox.com/metrics/monthly-recurring-revenue) — /metrics/monthly-recurring-revenue.md
- [QuickBooks month-end](https://www.owox.com/blog/articles/month-end-without-exports-quickbooks) — /blog/articles/month-end-without-exports-quickbooks.md
- [Stripe data source page](https://www.owox.com/data-sources/stripe) — /data-sources/stripe.md
- [Stripe payments dashboard](https://www.owox.com/dashboards/stripe-payments-dashboard) — /dashboards/stripe-payments-dashboard.md
- [Data Modeling · What is Apache Ossie? The Open Standard for Semantic Models, Explained · October 19,…](https://www.owox.com/blog/articles/apache-ossie) — /blog/articles/apache-ossie.md
- [Data Modeling · Benefits of Data Modeling for Business Reporting · March 3, 2025](https://www.owox.com/blog/articles/benefits-of-data-modeling) — /blog/articles/benefits-of-data-modeling.md
- [Data Modeling · Best Data Modeling Tools in 2026 · July 21, 2026](https://www.owox.com/blog/articles/best-data-modeling-tools) — /blog/articles/best-data-modeling-tools.md
- [See all articles →](https://www.owox.com/blog/articles) — /blog/articles.md
