App Store Connect vs RevenueCat: which revenue number is real?

RevenueCat and App Store Connect never match. Why: tax, commission, time zones, exchange rates and refunds, and which number to trust for what.

By Torstein · · 5 min read

On this page
  1. The short answer
  2. Reason 1: "revenue" means different things
  3. Reason 2: the day boundary moves
  4. Reason 3: different exchange rates
  5. Reason 4: refunds and timing
  6. Reason 5: fiscal months vs calendar months
  7. Reason 6: some of it is an estimate
  8. And then there is GA4
  9. What to do with it
  10. How Plask handles it

If you run an app with RevenueCat, you have at least two revenue numbers for the same month, and they never agree. Add GA4 purchase events and you have three. None of them is wrong. They measure different things, at different times, in different currencies.

This post walks through every reason the numbers drift apart, then gives a simple rule for which one to use for which question.

The short answer#

  • Money that reaches your bank: Apple's Payments and Financial Reports. Nothing else is final.
  • Day to day trends: either RevenueCat or App Store Connect Sales and Trends, as long as you stick to one and compare it with itself.
  • Never: add RevenueCat and App Store Connect together for the same app. You count every sale twice.

Reason 1: "revenue" means different things#

RevenueCat's Revenue chart counts what the customer paid, with taxes still in it. It defines Revenue as "the total revenue generated in a given period, minus refunds and downward subscription payment adjustments recorded in that period", and only removes tax in two other variants: Revenue (net of taxes) and Proceeds, which also removes the store's commission (RevenueCat docs, Revenue chart).

App Store Connect has the same split under different names. Its customer price is "inclusive of any applicable taxes we collect and remit", and proceeds are the customer price minus applicable taxes and Apple's commission (Apple, financial report fields).

So the first check is boring but catches most mismatches: are you comparing RevenueCat's Revenue with Apple's proceeds? That gap is tax plus a 15 to 30% commission, and it will never close.

What you seeTaxes in it?Commission taken?
RevenueCat RevenueYesNo
RevenueCat Revenue (net of taxes)No (estimated)No
RevenueCat ProceedsNo (estimated)Yes (estimated)
App Store customer price / salesYesNo
App Store proceedsNoYes

Reason 2: the day boundary moves#

RevenueCat displays all charts in UTC (RevenueCat docs, Charts). App Store Connect shows Sales and Trends in UTC by default, but you can switch it to Pacific Time (Apple, differences in reporting tools). If you ever flipped that switch, a sale at 20:00 in California lands on different days in the two tools, and your daily charts will never line up.

Reason 3: different exchange rates#

Your customers pay in their own currency, and every tool converts at a different moment:

  • RevenueCat converts each purchase to USD "based on the exchange rate from the purchased currency to USD on the purchase date" (RevenueCat docs, display currency).
  • Apple's Sales and Trends "estimates sales and proceeds in USD using a rolling average of previous month's exchange rates", while Payments and Financial Reports use the rate applied when converting to your bank's currency (Apple, differences in reporting tools).

Three rates for one sale. With a big share of sales outside the US, this alone can move a month by a few percent.

Reason 4: refunds and timing#

RevenueCat deducts a refund "from the period in which the refund was processed", so last month does not change when someone gets their money back today (RevenueCat docs, Revenue chart).

Apple adds its own timing gap: "Transactions initiated in a particular month may not appear in Sales and Trends Reports until the customer's payment is processed, collected, and invoiced, possibly in the following fiscal month" (Apple, differences in reporting tools).

Reason 5: fiscal months vs calendar months#

Apple's financial reports are generated once a month on Apple's fiscal calendar, not on calendar months (Apple, financial reports). RevenueCat and almost every other tool use calendar months. Compare "September" in both and you are comparing two different date ranges.

Reason 6: some of it is an estimate#

RevenueCat is open about this: it estimates where the store gives no clear answer, for example on currency conversion, taxes and price changes, and for tax reporting it tells you to use the data from Apple, Google or Stripe instead (RevenueCat docs, Charts). Apple says the same about its own dashboards: proceeds in Sales and Trends are not final (Apple, units and proceeds).

And then there is GA4#

GA4 only sees what your app's tags send. For one of my own apps, MyVisualRoutine, GA4 showed a 28-day purchase revenue in an ad-heavy month that, taken at face value, would have meant the ads paid back many times over. That figure had to be checked against RevenueCat before anyone acted on it. GA4 is fine for "did something change", but it is the last place to look for "how much did I make".

What to do with it#

  1. Pick one source per app and stay with it. If you use RevenueCat, use it for that app's revenue and leave App Store Connect revenue out of your totals. Use App Store Connect for downloads and for checking payouts.
  2. Compare like with like. Proceeds with proceeds, UTC with UTC, calendar month with calendar month.
  3. Reconcile against the payout, not the dashboard. Once a month, check that the money that arrived is within a few percent of what your chosen source said. Exchange rates and fiscal months explain the rest.
  4. Expect small differences and ignore them. A 2 to 5% gap between two estimates is noise. A 30% gap means you are mixing gross and net, or counting something twice.

How Plask handles it#

Plask makes this rule automatic. When a product has both RevenueCat and an App Store Connect or Google Play connection, RevenueCat is used for the platforms it reports and the store's own revenue is left out for those platforms, with a note saying so. The store still counts for any platform RevenueCat does not cover. Every source is shown as net: proceeds for the stores and RevenueCat, gross minus fees and refunds for Stripe. Currency is converted at each day's ECB reference rate. The full rules, source by source, are on the methodology page.