Should you track revenue before or after app-store fees?
Last updated: November 5, 2026
SoleOS: One dashboard for revenue, traffic and live signals across every app, game and website you run. Start 7-day trial →
From the SoleOS answers series — written about our own product space; grounded in published definitions and documented behavior, never invented numbers.
Track gross revenue (what the customer paid) as your primary growth metric, and track net-of-fees revenue (what actually lands in your bank account) as your primary profitability metric. Don't collapse them into one number — the 15-30% Apple and Google take, plus Stripe's ~2.9%, means a portfolio with mixed web and mobile products will look very different depending on which line you report. Most founders get into trouble not by picking the wrong one, but by switching between them without labeling which is which.
Why this isn't a trivial accounting question
If you run a single SaaS product billed entirely through Stripe, the gap between gross and net is small and consistent — you can mostly ignore it. But the moment you run even one mobile app alongside a web product, the math stops being consistent across your portfolio.
Apple and Google take 30% on most transactions, 15% for developers under the Small Business Program (under $1M in annual proceeds) or for subscriptions past year one. Stripe takes roughly 2.9% + $0.30 on card payments, less with volume discounts, and nothing close to 15-30%. If you report "total MRR" across a portfolio where three apps are on RevenueCat and two SaaS products are on Stripe, gross revenue overstates your actual take-home for the mobile side by a factor you can't ignore — potentially $300-450 kept out of every $1,000 billed on mobile, versus roughly $970 on Stripe.
This matters for three concrete reasons:
- Comparing products fairly. A mobile app doing $5k/month gross and a SaaS doing $5k/month gross are not equally valuable businesses. The mobile app nets you roughly $3,500-4,250; the SaaS nets you roughly $4,800+. If you rank your portfolio by gross MRR alone, you'll misjudge where to spend your time.
- Taxes and bookkeeping. Your accountant needs net revenue (or at minimum, gross with fees broken out as a cost of goods sold line) to compute what you actually owe. Reporting gross as "revenue" and then separately expensing fees is accounting-correct, but if your dashboard only shows gross, it's easy to forget the deduction exists when you're doing mental math on runway.
- Runway and reinvestment decisions. You can only spend net revenue. If you're deciding whether to hire a contractor or buy ads, the number that matters is what's actually sitting in Stripe and bank transfers — not the sticker price customers paid.
The practical rule: track both, label both
The cleanest setup most solo founders land on:
- Gross revenue (or "billings") as the top-line growth number — useful for MRR trend lines, comparing month-over-month momentum, and talking about growth rate without the noise of fee-structure changes.
- Net revenue (gross minus store/payment fees) as the number you use for anything involving cash — runway calculations, "can I afford to hire," and comparing profitability across a mixed web/mobile portfolio.
The mistake to avoid is averaging or blending these without a label. If one dashboard tile says "$12,400 MRR" and you don't know whether that's gross or net, you'll eventually make a decision based on the wrong one — usually overestimating how much cash you actually have.
If you're pulling data from both RevenueCat and Stripe, this gets more concrete: RevenueCat typically surfaces revenue net of store fees for proceeds-related views, but can also show gross depending on which metric you pull, and reconciling that against what App Store Connect reports as actual payouts is its own exercise — payouts lag, include refunds and chargebacks, and get adjusted for currency conversion if you have international customers. Don't assume "RevenueCat MRR" and "Apple payout" are the same number on the same day. They're measuring related but different things, and the gap is normal, not a bug.
What to actually do with mixed products
If you run, say, three mobile apps on RevenueCat and four web products on Stripe:
- Decide on a convention (gross or net) for your headline portfolio number and stick with it across every product, every month.
- Keep the other number visible somewhere you check at least monthly — even if it's a second column, not the headline.
- When comparing per-product performance, always use net. Gross comparisons between mobile and web products inside the same portfolio are close to meaningless once fee structures diverge this much.
- Re-check your Small Business Program status annually if you're near the $1M threshold — this changes your fee rate and therefore your net, with no change in gross.
For exact formulas on how gross vs net is computed from each connector, the metrics dictionary lays out the precise math and the caveats per source, which matters because "net revenue" means something slightly different depending on whether it's coming from RevenueCat's proceeds field, a manual App Store Connect export, or a Stripe balance transaction.
Where this fits with reconciliation generally
This question is really a subset of a bigger one: how do you reconcile revenue numbers that come from different systems, with different fee structures, different refund windows, and different reporting lags? If you're doing this across a handful of spreadsheets, it's manageable for one or two products but gets error-prone fast once you're past three or four, especially if you're also trying to track projections. The portfolio approach isn't free of friction — reconciliation overhead is one of the real costs, not a myth.
Disclosure: SoleOS wrote this post about its own problem space — we build portfolio intelligence software and have an obvious interest in you thinking reconciliation matters. SoleOS pulls gross and net figures from RevenueCat, Stripe, App Store Connect, and Google Play and keeps them labeled separately rather than blending them into one number, specifically so you don't have to manually track which fee rate applied to which month. If you're running one product on one platform, you probably don't need this — a spreadsheet with a fees column works fine, and the free spreadsheet template is a reasonable place to start before paying for anything.
Frequently asked questions
Does MRR usually mean gross or net?
There's no universal convention — different tools default differently. RevenueCat's revenue metrics are often net of store commission by default in some views, Stripe MRR is typically gross of Stripe's own processing fee (since Stripe's fee is deducted separately as a charge, not baked into the subscription price), and manual spreadsheets vary by whoever built them. The fix isn't memorizing a universal rule; it's always checking which one a given dashboard or report is showing you, and labeling your own numbers explicitly.
Should I include refunds and chargebacks in net revenue?
Yes, if "net" is meant to represent cash you actually keep. A subscription that gets refunded in month two shouldn't still be counted as revenue in month one's net figure once you know about the refund — most tools handle this as a retroactive adjustment, which is part of why net figures for a given month can keep shifting for weeks after the month closes.
How do I compare a mobile app to a SaaS product fairly?
Use net revenue for both, and if you want to go a step further, net of ad spend or acquisition cost too, since mobile and web products often have very different acquisition economics. Comparing gross MRR across a mobile app and a Stripe-billed SaaS will almost always make the mobile app look relatively better than it actually is, because the 15-30% store cut isn't visible in the gross number.
What if I'm under the small business fee tier on Apple?
Then your net rate is closer to 85% of gross rather than 70-85%, which is a meaningful difference at any real revenue level. Track your trailing 12-month proceeds against the $1M threshold at least quarterly so you're not surprised by a mid-year rate change, and make sure whatever tool you use for net revenue tracking is pulling the correct fee tier rather than assuming a flat 30%.
Is there one tool that shows gross and net correctly without manual reconciliation?
No single connector gives you a perfect answer across stores and processors — App Store Connect, Google Play, RevenueCat, and Stripe each report revenue with their own definitions, lags, and adjustment windows. Whatever you use, check how a given tool defines its metrics before trusting the headline number, and consider testing it against a live demo with sample data before connecting real accounts.