Revenue and subscriptions

Why Firebase Revenue and App Store Connect Revenue Don't Match

Updated 2026-09-144 min read

Short answer

They measure different amounts at different moments. GA4's in_app_purchase records the purchase the app observed, converted to your property's currency. App Store Connect reports sales — what customers were billed — and proceeds, after taxes and Apple's commission, with refunds handled on Apple's side. Expect a gap: reconcile the number of transactions first and the amounts second.

A subscription app closes its month. GA4 shows $9,400 in purchase revenue, App Store Connect shows $8,700 in sales and $6,900 in proceeds, and the founder wants one number for the investor update. The honest answer is that there are three, and each is right about something different.

What each system is counting

GA4 (Firebase)App Store Connect
Recorded fromThe app, when the purchase event is loggedApple's transaction records
AmountThe price of the purchase the app saw, in the property currencySales: amount billed to customers. Proceeds: customer price minus taxes and Apple's commission
TaxesWhatever the store price includedIn sales only where the App Store price includes tax
RefundsNot deducted automatically for App Store purchasesAccounted for in Apple's reports
RenewalsOnly where collected as app_store_subscription_renewIncluded in Apple's reports
Sandbox and test purchasesIgnored for in_app_purchaseNot included

Why the totals drift apart

  • Commission and taxes: proceeds are the customer price minus applicable taxes and Apple's commission, and the commission rate depends on the program you are in and, for subscriptions, on how long the subscriber has been paying
  • StoreKit 2: Firebase logs StoreKit 1 purchases automatically, but purchases made with StoreKit 2 have to be logged with Analytics.logTransaction(). Without that call they never reach GA4
  • Double counting: GA4's purchase figures include both purchase and in_app_purchase events, so an app that also logs its own purchase event for the same transaction counts the sale twice
  • Refunds: Apple's reports account for refunded purchases; GA4 keeps the original iOS purchase
  • Other platforms in the property: Google Play purchases from an Android stream are added to the same GA4 total
  • Currency and dates: GA4 converts amounts to the property currency and dates them in the property time zone, while Apple's reports use their own dates and exchange rates

The ordering matters when you investigate. Commission, tax and currency explain a gap in amounts. StoreKit 2, double counting, refunds and other platforms explain a gap in the number of transactions — and those are the ones that mean your analytics is wrong.

How to reconcile them

  1. Filter GA4 to the iOS stream

    Restrict purchase figures to the iOS app before comparing anything with App Store Connect.

  2. Compare transaction counts before amounts

    Count in_app_purchase events for the same days as App Store Connect's in-app purchase and subscription units. If counts agree and amounts do not, the difference is price, tax, currency or commission. If counts disagree, the difference is in the logging.

  3. Check the StoreKit version

    If the app uses StoreKit 2 and never calls Analytics.logTransaction(), GA4 is missing those purchases — often all of them.

  4. Look for a second revenue event

    Search the code for purchase events logged after a successful transaction, and break GA4 revenue down by event name. purchase and in_app_purchase side by side for the same sales means double counting.

  5. Compare with sales, not proceeds

    GA4 records what the purchase cost, so it lines up with what customers were billed. Proceeds are what you are paid and will always be lower.

Careful: Do not "fix" the gap by scaling GA4 revenue to match Apple. Use App Store Connect for money and GA4 for behaviour: which paywall, placement or cohort led to the purchase.

What goes wrong if you misread it

  • Reporting GA4 revenue as income overstates what the business earns by the commission, taxes and refunds
  • A move to StoreKit 2 looks like a sudden collapse in revenue when only the logging stopped
  • A duplicate purchase event doubles the conversion rate in every paywall analysis
  • Comparing a combined iOS and Android GA4 total with App Store Connect makes iOS look better than it is

What each number is for

QuestionUse
How much did we earn?App Store Connect proceeds, and Payments and Financial Reports for what was actually paid
How much did customers spend?App Store Connect sales
Which paywall, placement or cohort converts?GA4 purchase events, segmented
Is purchase logging working?GA4 transaction counts against App Store Connect units, per platform

How this looks in Appnaly

Appnaly keeps App Store figures and Google Analytics figures as separate sources instead of blending them into a single revenue number, because — as above — they count different things. Read money from the store, and use Analytics to understand which users and screens produced it.

App Store and Google Play guides

Related reading