Skip to main content
All Guides
Stripe financial reportingStripe MRR calculationStripe reconciliationStripe Connect reporting

Complete Guide to Stripe Financial Reporting

Stripe financial reporting: MRR from Stripe data, refund handling, multi-currency, Connect payouts, reconciliation, and dashboard building.

4 articles·13 min read

Why Stripe Reporting Is Harder Than It Looks

Stripe processes over $1 trillion in payments annually. For SaaS companies, it is the de facto billing platform. But Stripe is a payment processor, not an accounting system. The gap between Stripe's data model and your financial reporting needs is where most companies struggle.

Stripe tells you that a customer was charged $99. It does not tell you whether that charge represents new MRR, expansion MRR, or a one-time payment. It does not separate recognized revenue from deferred revenue. It does not categorize refunds by reason or attribute them to the correct reporting period. All of that interpretation is your job.

This guide covers how to extract accurate financial reports from Stripe data, handle the edge cases that trip up most companies, and build dashboards that reflect your true financial position.

Understanding the Stripe Data Model

Core Objects

Stripe organizes financial data across several interconnected objects. Understanding these relationships is essential for accurate reporting.

ObjectWhat It RepresentsFinancial Relevance
CustomerA person or business you chargeCustomer count, segmentation
SubscriptionRecurring billing agreementMRR source, churn tracking
InvoiceBill sent to a customerRevenue recognition trigger
PaymentIntentA charge attemptCash flow timing
ChargeSuccessful paymentCash received
RefundMoney returnedRevenue reversal
PayoutTransfer to your bankBank reconciliation
BalanceTransactionEvery money movementSource of truth for accounting

The BalanceTransaction Is Your Source of Truth

For financial reporting, the BalanceTransaction object is the most important entity in Stripe. Every financial event — charges, refunds, disputes, payouts, fee deductions — creates a balance transaction with a net amount, fee, and timestamp.

When reconciling Stripe to your books, always start with balance transactions. They represent the actual money movement, including Stripe's fees, which charges and invoices do not.

Subscription Lifecycle Events

Each subscription event maps to a financial outcome:

Subscription EventMRR ImpactRevenue Impact
customer.subscription.createdNew MRRBegin recognizing revenue
customer.subscription.updated (upgrade)Expansion MRRIncreased recognition
customer.subscription.updated (downgrade)Contraction MRRDecreased recognition
customer.subscription.deletedChurned MRRStop recognizing revenue
customer.subscription.pausedPaused MRRPause recognition
customer.subscription.resumedReactivation MRRResume recognition
invoice.payment_failedAt-risk MRRRevenue at risk

Calculating MRR from Stripe

The Correct Method

MRR (monthly recurring revenue) should be calculated from active subscriptions, not from payment amounts. Here is why: a customer on a $1,200/year plan who pays annually contributes $100/month to MRR, but Stripe records a single $1,200 charge.

Step-by-step MRR calculation from Stripe data:

  1. List all active subscriptions (status: active or trialing with payment method)
  2. For each subscription, get the recurring amount per billing interval
  3. Normalize to monthly: divide annual amounts by 12, multiply weekly by ~4.33
  4. Sum all normalized monthly amounts
  5. Exclude one-time charges, setup fees, and usage overages unless they are contractually recurring

MRR normalization table:

Billing IntervalNormalizationExample
WeeklyAmount x 4.33$25/week = $108.25 MRR
MonthlyAmount x 1$99/month = $99 MRR
QuarterlyAmount / 3$270/quarter = $90 MRR
Semi-annualAmount / 6$540/6mo = $90 MRR
AnnualAmount / 12$1,188/year = $99 MRR

Use the SaaS metrics calculator to quickly calculate and track your MRR from subscription data.

MRR Movement Analysis

To understand growth, break MRR into components each month:

Net New MRR = New MRR + Expansion MRR + Reactivation MRR
             - Contraction MRR - Churned MRR

Tracking MRR movements in Stripe:

  • New MRR: Subscriptions where created timestamp falls in the current period and the customer has no prior subscriptions
  • Expansion MRR: Subscriptions where plan.amount increased via customer.subscription.updated
  • Contraction MRR: Subscriptions where plan.amount decreased
  • Churned MRR: Subscriptions that transitioned to canceled status
  • Reactivation MRR: Customers who had a previously canceled subscription and created a new one

Common MRR Calculation Mistakes

  1. Counting gross charges as MRR - Stripe fees are not subtracted from MRR. MRR is a gross metric.
  2. Including trial subscriptions without payment methods - These are not revenue-generating.
  3. Double-counting prorated charges - A mid-cycle upgrade generates a prorated charge AND changes the subscription amount. Only count the subscription change in MRR.
  4. Missing coupon/discount adjustments - A $99/month subscription with a 20% coupon contributes $79.20 to MRR, not $99.
  5. Ignoring multi-currency conversions - Convert all subscription amounts to your reporting currency at a consistent rate.

Read how to track MRR for a deeper dive into accurate MRR tracking methodology.

Handling Refunds and Disputes

Refund Types and Their Impact

Refund TypeFinancial TreatmentMRR Impact
Full refund (within period)Reverse entire chargeRemove MRR if subscription canceled
Partial refundReduce recognized revenueReduce MRR proportionally if plan changed
Prorated refund (downgrade)Credit for unused timeContraction MRR
Goodwill refundExpense or revenue reductionUsually no MRR impact
Dispute/chargebackRevenue reversal + feeAt-risk MRR, potential churn

Refund Accounting

Refunds should be recorded as a reduction in revenue for the period in which they are issued, not backdated to the original charge period. This aligns with standard accounting practices:

  • Refund issued: Debit Revenue, Credit Cash (or Refund Payable)
  • Stripe fee on refund: Stripe does not refund their processing fee on partial refunds. The fee is a sunk cost.
  • Dispute fee: Stripe charges a $15 dispute fee regardless of outcome. Record as an operating expense.

Dispute Management

Disputes (chargebacks) are both a financial and operational problem:

Financial impact of disputes:

  • Original charge amount is reversed immediately
  • $15 dispute fee per case
  • If you win the dispute, the charge is reinstated (minus the fee in some cases)
  • Dispute rates above 1% can trigger Stripe account review

Tracking disputes:

  • Monitor charge.dispute.created webhook events
  • Track dispute rate: disputes / total charges per month
  • Categorize by reason code to identify patterns
  • Maintain evidence templates for efficient responses

Multi-Currency Reporting

The Currency Challenge

If you accept payments in multiple currencies, financial reporting gets significantly more complex. Stripe processes each currency independently, which means your Stripe balance includes separate balances per currency.

Currency Conversion Approaches

ApproachAccuracyComplexityBest For
Transaction-date rateHighestHighCompanies with material FX exposure
Monthly average rateGoodMediumMost SaaS companies
Fixed quarterly rateAdequateLowSmall international revenue share

Recommended approach for most SaaS companies:

  1. Choose a reporting currency (usually USD)
  2. Convert each subscription's MRR at the exchange rate on the date of calculation
  3. Record exchange rate gains/losses monthly
  4. Use a consistent rate source (e.g., European Central Bank daily rates)

Multi-Currency MRR Example

CurrencySubscriptionsLocal MRRExchange RateUSD MRR
USD500$49,5001.00$49,500
EUR120EUR 11,4001.08$12,312
GBP80GBP 7,6001.26$9,576
CAD40CAD 5,2000.74$3,848
Total740$75,236

Exchange rate fluctuations directly affect your reported MRR even when no actual business changes occur. A 5 percent swing in EUR/USD on EUR 11,400 of MRR creates a $616 MRR movement that has nothing to do with customer activity.

Stripe Connect Reporting

What Stripe Connect Changes

Stripe Connect adds a layer of complexity for platforms that facilitate payments between buyers and sellers. Your financial reporting now involves three parties: the platform (you), the connected account (your merchant/seller), and the customer.

Connect payment flows:

Flow TypeWho Collects PaymentFee DeductionPlatform Revenue
Direct chargeConnected accountFrom connected accountApplication fee
Destination chargePlatformFrom platformTotal minus transfer
Separate charges and transfersPlatformFrom platformTotal minus transfer

Platform Revenue Recognition

Your platform revenue from Connect is typically the application fee or the spread between what the customer pays and what the connected account receives. This is fundamentally different from direct subscription revenue.

Connect revenue calculation:

Platform Revenue = Gross Payment - Connected Account Payout - Stripe Fees

Track application fees separately from subscription revenue in your P&L. They are different revenue streams with different characteristics, margins, and growth drivers.

Connected Account Payouts

When reporting on connected accounts:

  • Gross merchandise volume (GMV) is the total amount processed through your platform
  • Take rate is your platform's revenue as a percentage of GMV
  • Net revenue is your take rate amount minus Stripe processing fees

Most platforms report GMV and take rate separately. Investors care about both: GMV shows scale, take rate shows monetization strength.

Reconciliation

Stripe-to-Bank Reconciliation

Stripe pays out to your bank account based on your payout schedule (usually 2-day rolling for US accounts). Each payout bundles multiple transactions, making direct reconciliation non-trivial.

Reconciliation process:

  1. Download Stripe payout report for the period
  2. Match payout amounts to bank deposits (Stripe shows the payout ID and amount)
  3. Reconcile individual transactions within each payout to invoices/charges
  4. Verify fees - Stripe deducts processing fees before payout
  5. Check for holds - Stripe may hold funds for disputes or risk review

Read Stripe payout reconciliation for a detailed walkthrough of matching payouts to bank deposits.

Common reconciliation issues:

IssueCauseResolution
Payout doesn't match bank depositCurrency conversion, bank feesCheck Stripe payout currency vs. bank currency
Missing transactions in payoutRefund or dispute processed after payout creationCheck refund/dispute timestamps
Timing differencesStripe payout in transitAllow 2-3 business days for bank processing
Fee discrepanciesVariable fees (international cards, currency conversion)Review fee breakdown per transaction

Stripe-to-Accounting Reconciliation

Your accounting system should mirror Stripe's balance transactions. Monthly reconciliation steps:

  1. Export Stripe balance transactions for the month
  2. Categorize by type: charges, refunds, disputes, fees, payouts, transfers
  3. Match to accounting entries: revenue, refunds, bank deposits, expense
  4. Verify totals: Sum of all balance transactions should equal net change in Stripe balance + payouts
  5. Investigate discrepancies: Any difference indicates a missing or incorrect entry

Target: zero discrepancy between Stripe balance transaction totals and your accounting records.

Revenue Reconciliation

Revenue reconciliation verifies that your reported MRR/revenue matches the actual subscription data:

Expected Monthly Revenue = Sum of (Active Subscriptions × Monthly Normalized Amount)
Actual Revenue = Sum of (Invoices Paid in Period, excluding one-time charges)
Difference = Timing adjustments, proration, coupons, mid-cycle changes

If the difference exceeds 3-5 percent, investigate. Common causes: mid-cycle plan changes creating prorated amounts, coupons not accounted for, or trial-to-paid conversions being misclassified.

Building Dashboards from Stripe Data

Essential Stripe Dashboard Metrics

Build a dashboard that answers your key financial questions using Stripe data:

Revenue dashboard:

  • MRR (current, trend, movement components)
  • MRR by plan/product
  • New vs. expansion vs. churned MRR
  • ARPU (average revenue per user)
  • Revenue by currency

Cash flow dashboard:

  • Gross volume processed
  • Net volume after fees
  • Refund rate and amount
  • Payout timeline and amounts
  • Stripe balance (funds in transit)

Health dashboard:

  • Churn rate (subscription cancellations / active subscriptions)
  • Failed payment rate and recovery
  • Dispute rate
  • Average days to receive payout

Data Pipeline Architecture

For accurate dashboards, build a data pipeline from Stripe:

  1. Webhooks for real-time events (subscription changes, charges, refunds)
  2. API polling for periodic snapshots (active subscriptions list, balance)
  3. Data warehouse for historical analysis (sync Stripe data to your database)
  4. Calculation layer for derived metrics (MRR, churn rate, NRR)
  5. Visualization for dashboards (your app, Metabase, or similar)

The SaaS metrics calculator provides a starting point for understanding your metrics before building custom dashboards.

Stripe Sigma and Reporting

Stripe offers two built-in reporting tools:

Stripe Dashboard Reports (free): Basic reports on payments, payouts, and customers. Useful for quick checks but limited customization.

Stripe Sigma (paid): SQL-based querying against your Stripe data. Powerful for custom analysis but requires SQL knowledge and carries additional cost ($0.02 per query row read).

For most early-stage SaaS companies, exporting data via the API or CSV and analyzing in a spreadsheet or dedicated tool is more cost-effective than Sigma.

Common Stripe Reporting Pitfalls

Mixing Up Charges, Revenue, and Cash

These are three different numbers:

ConceptWhat It RepresentsSource
Gross chargesTotal amount charged to customerscharge.amount
Net chargesCharges minus Stripe feesbalance_transaction.net
Recognized revenueRevenue earned in the periodSubscription schedule + ASC 606
Cash receivedMoney deposited in your bankPayout amounts

A $1,200 annual charge creates $1,200 in gross charges, ~$1,165 in net charges (after ~$35 in Stripe fees), $100/month in recognized revenue, and a bank deposit that arrives 2 days later as part of a bundled payout.

Ignoring Stripe Fee Variability

Stripe's published rate of 2.9% + $0.30 per transaction is the starting point. Actual fees vary based on:

  • Card type: International cards cost more (+1-1.5%)
  • Card brand: Some cards carry higher interchange
  • Currency conversion: Additional 1% for cross-border transactions
  • Disputes: $15 per dispute regardless of outcome
  • Stripe products: Billing, Connect, Radar add their own fees

Use the Stripe fee calculator to model your actual fee burden based on your transaction mix.

Not Handling Webhooks Reliably

If your financial reporting depends on Stripe webhooks (and it should), you need reliable webhook processing:

  • Verify webhook signatures to prevent spoofing
  • Handle duplicate events (Stripe may send the same event multiple times)
  • Process events idempotently so replays don't create duplicate records
  • Monitor for missed events with periodic API reconciliation
  • Log all webhook payloads for debugging and audit

Learn more about handling Stripe reporting with multiple products to manage webhook complexity.

Getting Started

Stripe is a powerful payment platform, but it is not a financial reporting system. The gap between Stripe's data and your financial statements requires deliberate work to bridge.

Start with these steps:

  1. Audit your current MRR calculation - Is it based on subscriptions or charges? Are you normalizing annual plans correctly?
  2. Set up monthly reconciliation - Match Stripe balance transactions to your accounting entries
  3. Build a basic dashboard - Track MRR, churn, and cash flow from Stripe data

For automated Stripe financial reporting — including real-time MRR tracking, payout reconciliation, and revenue dashboards — try culta.ai. We connect directly to your Stripe account and handle the data transformation so you always have accurate financial metrics.

Ready to Take Control of Your Finances?

Apply what you've learned with our free calculators, or get real-time financial insights with culta.ai.