Reference🧭 Global overviewsAdvanced⏱ 22 min read

📱 Selling in app stores

Mandatory in-app purchase, 15% and 30% commissions, Apple and Google as merchants of record, store-decided refunds, subscriptions run outside the developer’s system, aggregated payouts, and what the DMA and anti-steering injunctions reopen

Who sells what, and what triggers in-app purchase

In-app purchase is the payment collection mechanism run by the app store itself, which the store requires for only part of what an app sells. The dividing line depends on what the customer receives and where they consume it. It does not depend on the amount, the country, or the business model. Digital content delivered in the app falls under in-app purchase. A physical good, or a service performed outside the app, falls under ordinary payment methods, and in that case both stores prohibit the use of their own system. The rule therefore cuts both ways. It mandates the store’s payment collection on one side of the line and bars it on the other.

Apple sets out this split in guidelines 3.1.1 and 3.1.3(e) of its App Store Review Guidelines. They reserve in-app purchase for digital goods and services, and they require another payment method whenever the good or service is consumed outside the app. Google Play states the same rule in its Payments policy: Google Play Billing is mandatory for purchases of digital content and features, and it is excluded for physical goods. Both documents are public, versioned, and amended several times a year. A reading from 2022 no longer matches the text in force. Check the version published at the time you settle your payment collection architecture.

What the customer buysRequired payment methodDeciding factor
Subscription to a service consumed in the appIn-app purchase requiredThe app itself delivers the service
In-game currency, lives, levels, virtual itemsIn-app purchase requiredDigital good consumed in the app
Unlocking a software featureIn-app purchase requiredThe unlock applies to the binary distributed by the store
Meal delivery, ride-hailing trip, hotel nightMerchant’s own payment processing; in-app purchase prohibitedThe service is performed in the physical world
Event ticketing, show ticketsMerchant’s own payment processingService consumed outside the app
Live one-on-one consultation, private lesson, telehealth visitMerchant’s own payment processing, allowed by AppleGuideline 3.1.3(d) covers one-on-one experiences; a class streamed to several people falls back under in-app purchase
Access to content already bought elsewhere (news, music, video, books)No payment collected in the appReader apps rules, guideline 3.1.3(a)
Enterprise subscription bought outside the app by a procurement teamNo payment collected in the appEnterprise services, guideline 3.1.3(c)
Donation to a recognized nonprofitOutside in-app purchase on both storesSpecific rules for charitable donations
Ad space bought by a business advertiserMerchant’s own payment processingAd management tool, not consumed by the end user
Where the line falls, category by category. Sources: Apple, App Store Review Guidelines 3.1.1 and 3.1.3; Google, Play Console Help, Payments policy. Accessed in 2026.
🔑
The criterion that shapes the architecture before the first line of code
What qualifies a sale is where the customer consumes what they paid for, not who collects the money. A fitness coaching service that streams videos in its app sells digital content, so it falls under in-app purchase. When the same service sells a one-on-one video session with a coach, it falls under the rules for one-on-one experiences and collects payment through its own means. A catalog that mixes the two needs two complete payment collection stacks, two pricing databases, and two sets of revenue accounts. The catalog’s content therefore dictates the payment architecture. An architecture settled before the catalog has to be rebuilt later, at a cost of several quarters.

Three intermediate regimes shift this line without erasing it. Reader apps under guideline 3.1.3(a) cover news, books, audio, music, and video; they can give access to content bought elsewhere but never sell it in the app. Multiplatform services under guideline 3.1.3(b) let users consume on iOS content acquired on another device. Free stand-alone apps under guideline 3.1.3(f) are free companions to a paid web tool subscribed to elsewhere, provided the app contains no purchase and no call to action to buy. None of these three regimes allows selling to the user in the app. Each allows in-app use of what was paid for elsewhere, and developers regularly misread that tolerance as permission to sell there.

The reader apps rule came from a commitment made to a national competition authority, not from a business decision by Apple. The Japan Fair Trade Commission closed an investigation into the App Store in September 2021. Apple had committed to let these apps include a link to an external website for account creation and management. Apple applied the commitment worldwide starting in 2022, as the External Link Account Entitlement. A rule negotiated with the Japanese regulator therefore applies to developers in every country.

⚠️
The penalty is not a fine
A breach of the payments policy is punished through the app’s distribution, not through the price of the transaction. The store rejects the update, removes the app, and may terminate the developer account, with no contractual penalty involved. Epic Games learned this on August 13, 2020. Apple and Google pulled Fortnite from their stores the day Epic added a direct payment mechanism to it. The litigation that began that day was still unresolved six years later. A publisher whose revenue comes from an app distributed through a store loses all of that revenue the day the app is pulled, with no immediate substitute channel. This imbalance between the two parties explains most of the power dynamics described in the rest of this guide.

The commission and its tiers

The store commission is the share of the sale price that the store keeps on each in-app purchase. The standard rate is 30% at both Apple and Google, and almost no developer pays the full rate all the way through. Four mechanisms bring it down to 15%, sometimes lower, depending on the developer’s size, the subscriber’s tenure, the industry, and the distribution territory. These mechanisms do not stack freely, and each has its own entry and exit conditions. A revenue model that assumes a single rate will be off by several percentage points from the rate actually applied.

30 %
standard commission rate on in-app purchases, Apple and Google
Apple, App Store commission schedule; Google, Play Console Help, service fees, 2026
15 %
reduced rate under the small business program, below $1 million in net proceeds per calendar year
Apple, App Store Small Business Program, in effect since January 1, 2021
$1M
annual threshold for Google’s reduced rate, applied to the first tranche of revenue each year
Google, service fees, in effect since July 1, 2021
0,50 €
Apple’s core technology fee per first annual install above one million, under the alternative EU terms, before its switch to a revenue-based commission
Apple, alternative terms for the European Union, January 2024; replacement by the Core Technology Commission announced for January 1, 2026
CaseApple App StoreGoogle Play
One-time purchase, developer above the threshold30 %30 %
One-time purchase, developer below the threshold15% below $1 million in net proceeds the previous calendar year, upon enrollment15% on the first $1 million of revenue each year, applied per account
Subscription, first year30 %15 %
Subscription, second year onward15% once the subscriber has accumulated one year of paid service15%, no tenure tier
Industry programsVideo Partner Program and News Partner Program at 15%Play Media Experience Program, reduced rates for some media services
Alternative billing offered alongside the store’sTerms specific to each territory where it is availableUser choice billing, 4 percentage points off the applicable rate
The same euro of sales, depending on the store and the developer’s situation. Sources: Apple, App Store Small Business Program and subscription documentation; Google, Play Console Help, service fees and user choice billing. Accessed in 2026.

The most consequential gap concerns the first year of a subscription. Google has charged 15% from the first billing since January 1, 2022, while Apple keeps 30% for 12 months of paid service before dropping to 15%. Many monthly subscriptions end before reaching 12 months. On those products, all iOS revenue bears the full rate, while the same product sold on Android bears the reduced rate. The same app’s P&L therefore differs by 15 percentage points between the two platforms, at the same list price.

⚠️
The tenure counter resets to zero
Apple’s 15% rate depends on the continuity of the subscriber’s paid service, not on how long they have been a customer. A long gap resets the count, and a returning subscriber starts another 12 months at 30%. Apple documents this reset period; check its current value before running any customer lifetime value calculation. A win-back campaign that brings back former subscribers after a long gap therefore yields less net revenue than the billing records suggest. The rate actually applied to each transaction appears in the store’s financial report, not in the revenue model that forecasts it.

Apple’s small business program requires the developer to enroll; it does not apply automatically to an eligible account. Eligibility is based on net proceeds for the previous calendar year, and crossing $1 million during the year moves the developer to the full rate for the rest of the year. The threshold is assessed at the developer level, across all apps, and associated accounts in the same group are aggregated. A publisher that splits its catalog across several entities to stay under the threshold risks a contractual adjustment and removal from the program.

The alternative terms Apple published for the European Union in January 2024 introduced an entirely different cost structure. They apply to apps distributed in the EU since March 6, 2024. A developer that accepts them pays a 17% commission, reduced to 10% if it qualifies for the small business program. It pays an extra 3% if it keeps using the App Store payment system, plus a core technology fee of €0.50 per first annual install above one million over 12 months. Apple added exemptions in May 2024 for small developers and nonprofits. It overhauled the structure in 2025, introducing an initial acquisition fee and tiered store services fees. It then announced that a revenue-based commission would replace the per-install fee on January 1, 2026. The schedule has changed several times since 2024. A table copied on a given date therefore goes out of date; the current values are on the page Apple publishes.

🔑
A per-install fee is not a per-sale fee
The core technology fee is an amount owed on an app’s first annual installs, regardless of any sale. Apple introduced it in the EU in 2024, where it breaks with the pricing logic used everywhere else in payments. A 30% commission costs nothing until a sale occurs, whereas a €0.50 fee per first annual install is triggered by a free download that brings in no revenue. An ad-funded game, a public service app, or a tool distributed to a few million users without direct monetization all bear a cost proportional to their audience. Apple has announced that a revenue-based commission will replace this fee on January 1, 2026. The choice between standard and alternative terms depends on the ratio of installs to revenue per install, as much as on the schedule in force on the day of the calculation. Comparing commission rates alone therefore leaves out the part of the cost that tracks download volume.

The store as merchant of record

The merchant of record is the party that legally sells to the end customer, issues the receipt, and bears the obligations attached to the sale. In an in-app purchase, the store plays that role: it buys the content from the developer and resells it to the end user in its own name. This status stems from a written tax rule whose reach goes well beyond VAT. It determines who issues the invoice, who decides on refunds, who deals with the customer, and who owns the relationship data. The developer performs none of these four functions.

🔑
Article 9a, and why the presumption cannot be rebutted
Article 9a of Implementing Regulation (EU) No 282/2011 was inserted by Regulation (EU) No 1042/2013 and has applied since January 1, 2015. It presumes that a taxable person taking part in the supply of electronic services through a portal, such as an app download platform, acts in its own name but on behalf of the provider. The presumption can be rebutted if the provider is explicitly designated as the supplier and the contractual documents reflect this. It can never be rebutted when the intermediary authorizes the charge to the customer, authorizes the delivery, or sets the general terms of the supply. An app store meets all three conditions. Its status therefore follows from the text itself, and a contractual clause saying otherwise has no effect on it.

The practical consequence shows up on the invoice. The customer gets a receipt issued by the store’s entity, with VAT charged at the rate of the country of consumption, and the developer’s name appears only as a description. The developer, for its part, supplies a service to that entity, which is usually based outside the developer’s own country. For EU customers, Apple contracts through Apple Distribution International Ltd, an Irish company, so a European developer’s supply falls under the business-to-business regime, with the reverse charge applied by the recipient. A French developer therefore charges no French VAT on its European App Store revenue. Yet the French consumer paid VAT on the purchase, collected and remitted by the store.

AttributeDirect web saleIn-app purchase
Seller under the contractThe merchantThe store, on its own account
Issuer of the customer receiptThe merchantThe store
VAT collection and remittanceThe merchant, VAT-registered or through the One-Stop ShopThe store, per the list of territories it publishes
Refund decisionThe merchantThe store, without the developer’s prior consent
Cardholder’s card disputeAgainst the merchant, with representment rightsAgainst the store; the developer is not a party
Payment method shown to the customerChosen by the merchantChosen by the store, including carrier billing and gift cards
Customer identityKnown to the merchantUnknown to the developer, unless a separate app account is created
Descriptor on the bank statementThe merchant’sThe store’s
How roles are allocated in an in-app purchase, compared with a direct web sale. The developer loses each of the seller’s attributes, one by one.

The store decides refunds on in-app purchases, without the developer’s prior consent. On the App Store, the customer submits the request to Apple, which reviews and decides it alone, then deducts the amount from the developer’s proceeds for the relevant month. Apple has set up an information channel around that decision. The developer receives a CONSUMPTION_REQUEST notification and has 12 hours to respond with consumption data. A REFUND or REFUND_DECLINED notification follows, depending on the outcome. This data influences the decision without determining it. If the developer does not respond in time, Apple decides based only on the information it has, which does not work in the developer’s favor.

Google Play handles the same process differently. Google reviews requests submitted within 48 hours of purchase, without the developer’s involvement; after that window, the user is referred to the publisher, which can issue a refund from the Play Console. Developers detect cancellations through the Voided Purchases API, which returns purchases that have been voided and indicates the source of the cancellation. A refund and a chargeback have the same effect on the payout balance, but they differ in commercial meaning and accounting treatment. Standard practice is therefore to separate them at data ingestion, using the cancellation source that the API returns.

⚠️
No card dispute, and no possible defense
A cardholder who disputes a charge contacts their issuer, whose counterparty is the store. The developer is not a party to the acceptance agreement, the dispute, or the representment process set by scheme rules. Since it has no standing in the process, it has no evidence to submit, no deadline to meet, and no arbitration to request. Its loss shows up as a deduction from a later payout, with no detailed reason and no recourse. Chargeback dashboards built for direct payment processing do not apply here, and neither do the dispute-rate thresholds the schemes monitor, since the merchant being measured is the store.

The lack of customer data affects everything downstream. The developer receives no name, email address, billing address, or verified country of residence. Both stores offer a single technical hook: an opaque identifier that the developer itself passes at the time of purchase, called appAccountToken at Apple and obfuscatedExternalAccountId at Google. Populating this field on every transaction is the only way to link a purchase to an app account later. Purchases made without it can never be tied to an account afterward.

The subscription the store runs

A subscription sold through in-app purchase is a recurring contract whose billing, renewal, and termination the store handles. That takes away the levers a merchant uses to run a recurring business. The renewal date, retries after a failure, the grace period, account hold, plan changes, price increases, and cancellation are all decided by the platform. The developer learns what happened through a server notification, often after the fact. Its billing system records events decided elsewhere, whereas a direct billing system triggers them itself.

Renewals follow a cycle set by the store alone. When a charge fails, Apple retries during a window that it documents as lasting up to 60 days. The developer learns of the failure through a DID_FAIL_TO_RENEW notification, with the GRACE_PERIOD subtype where applicable, indicating that access remains open. Google Play, for its part, distinguishes a configurable grace period from an account hold, whose default length it now calculates by subtracting the grace period from a 60-day recovery window. During the hold, the subscription exists but does not give access to the service, and recovery after the payment issue is fixed triggers a SUBSCRIPTION_RECOVERED notification. The developer therefore has to replicate these states in its own system, even though it controls none of them.

EventWho decidesWhat the developer receives
Initial subscriptionThe user, in the store’s purchase sheetSUBSCRIBED (Apple) · SUBSCRIPTION_PURCHASED (Google)
Successful renewalThe store, on the date it setsDID_RENEW · SUBSCRIPTION_RENEWED
Failed debitThe card issuer, via the storeDID_FAIL_TO_RENEW · SUBSCRIPTION_IN_GRACE_PERIOD
Dunning and retriesThe store aloneNo visibility into the retry schedule
Account hold for failed paymentThe storeSUBSCRIPTION_ON_HOLD (Google)
Voluntary pauseThe user, on Google Play onlySUBSCRIPTION_PAUSED
Plan changeThe user, in the store’s interfaceDID_CHANGE_RENEWAL_PREF · SUBSCRIPTION_PURCHASED
Auto-renewal turned offThe userDID_CHANGE_RENEWAL_STATUS · SUBSCRIPTION_CANCELED
Actual expirationThe store, at the end of the paid periodEXPIRED · SUBSCRIPTION_EXPIRED
Refund, revocationThe storeREFUND, REVOKE · SUBSCRIPTION_REVOKED
Subscription events and where they happen. Sources: Apple, App Store Server Notifications V2; Google, Real-time developer notifications. Developer documentation accessed in 2026.
⚠️
Cancellation happens outside the app, and the canceled subscriber stays active
Users cancel a subscription bought through a store in the operating system settings, not in the app. The notification that auto-renewal has been turned off reaches the developer when the user acts, while access to the service remains due until the end of the period already paid. Each subscriber therefore has two dates, the decision and the expiration, and confusing them skews both the churn calculation and entitlement grants. Apple does not let the developer cancel a subscription on the customer’s behalf. National law often requires an online cancellation flow, such as Article L. 215-1-1 of the French Consumer Code or Section 312k of the German Civil Code (BGB). In a store, that requirement can only be met by sending the user to the platform’s cancellation screen.

Recovery techniques for a failed renewal payment disappear along with the mandate, which the developer does not hold. It cannot retry the authorization, choose when to retry, offer another payment method, or send a card update link. The whole dunning process described for a self-billed subscription runs at the store, under the store’s rules and with results the developer cannot measure. What the developer has left is in-app messaging, asking a subscriber on hold to fix their payment method in the system settings. The recovery rate is therefore driven by the store’s retries, and this messaging moves it only at the margin.

Strong customer authentication is also the store’s job. For a European payment, the cardholder’s counterparty is the store, which holds the acceptance relationship and applies the exemption for merchant-initiated transactions. The developer never sees a 3-D Secure challenge, sets no thresholds, and cannot claim a low-value exemption on a transaction that is not its own. The authorization rate becomes a platform attribute, comparable from one developer to the next because the same company produces it. This uniformity deprives the developer of an optimization lever it has when it processes payments itself.

The commercial levers that remain are limited to those the store has built. Apple and Google offer introductory offers, promo codes, win-back offers for former subscribers, and price grids by territory. These are managed in the store console, each with its own eligibility rules, allowed durations, and propagation delays. A pricing mechanism the store does not support cannot be implemented, and a price test designed for in-house billing has to be rewritten from scratch before it can run in a store.

🔑
Two versions of the truth for one subscriber, and only one counts
The developer keeps a subscription state in its own database, derived from the notifications it has received and processed. The store holds the authoritative state, which can be queried on demand through Apple’s App Store Server API or the Google Play Developer API. The two drift apart whenever a notification is lost, delayed, replayed out of order, or handled by a service that is down. Local state should therefore be treated as a cache, never as a source of truth, and refreshed from the store’s API before every entitlement decision. Periodic reconciliation is still needed, because a subscriber who is wrongly granted access never reports it.

Leaving the store’s payment system

Leaving the store’s system covers the mechanisms a developer uses to steer customers to a payment made outside the app. Two separate developments have opened gaps in the in-app purchase requirement, one regulatory and European, the other judicial and American. They differ in the rights they create, the costs they carry, and their geography. Confusing them leads to an exit flow that is legal in one market and prohibited in the other. Both attack the same rule: the one that stopped a developer from telling customers that another price exists outside the app.

August 13, 2020
Fortnite pulled from the stores
Epic Games adds direct payment to its app; Apple and Google pull it the same day. Two lawsuits begin in the US District Court for the Northern District of California.
September 2021
Apple’s commitment to the JFTC
Japan’s competition authority closes its investigation after Apple commits to letting reader apps include an external account management link, worldwide.
September 10, 2021
Anti-steering injunction in the US
Judge Yvonne Gonzalez Rogers rejects nearly all of Epic’s antitrust claims. She finds that the anti-steering clauses violate California’s unfair competition law and bars Apple from blocking links to other ways to buy.
May 2, 2023
Regulation (EU) 2022/1925 starts to apply
The Digital Markets Act becomes applicable. The first six gatekeepers are designated on September 6, 2023, with the App Store and Google Play among the services covered.
January 16, 2024
The US injunction becomes enforceable
The Supreme Court declines to hear the appeals. Apple then offers an external link entitlement in the US, with a 27% commission, reduced to 12% for small businesses, on purchases made within seven days of the click.
March 4, 2024
Apple fined €1.84B
The European Commission fines Apple under Article 102 TFEU for preventing music streaming apps from telling users about cheaper offers elsewhere.
March 6, 2024
DMA obligations apply
Apple opens the EU to third-party app marketplaces, web distribution, and alternative business terms. Google opens alternative billing in the European Economic Area.
October 7, 2024
Injunction against Google
After the jury verdict of December 11, 2023, Judge James Donato orders Google to open Play to rival stores, stop requiring its billing system, and allow outbound links.
April 23, 2025
€500M fine under the DMA
The European Commission finds that Apple breaches the obligation to let developers communicate offers freely, under Article 5(4), and orders it to lift the restrictions that limit it.
April 30, 2025
Apple held in contempt in the US
Judge Gonzalez Rogers finds that Apple circumvented her injunction. She bars Apple from charging any commission on purchases made outside the app after an outbound link, and from showing any deterrent warning screen.
July 31, 2025
The Ninth Circuit upholds the injunction against Google
The opening obligations take effect in the US in the fall. In November 2025, Epic and Google announce a settlement providing for reduced rates, subject to court approval.
December 11, 2025
Circumvention upheld, price sent back to the judge
The Ninth Circuit upholds Apple’s contempt finding for circumventing the injunction, rules that the ban on any commission on out-of-app purchases is too broad, and sends the case back to the district court to set a fee tied to the actual costs of the outbound link.

Regulation (EU) 2022/1925 targets the in-app purchase requirement through three separate provisions. Article 5(4) lets business users communicate and promote their offers to users acquired through the platform service, and conclude contracts with them, free of charge and without going through the gatekeeper. Article 5(7) bars the gatekeeper from requiring the use of its payment service, including in-app payment systems. Article 6(4) requires it to allow the installation and effective use of third-party apps and app stores. All three obligations apply directly in the EU, with no need for national transposition.

⚠️
An open door is not a free door
The European rules cited require the store to decouple access to its distribution from use of its payment processing, without depriving it of compensation. Apple and Google have therefore broken their commission into separately billed components, some of which remain after a developer leaves the payment system. A developer that switches to third-party billing in the EU still pays distribution fees, sometimes per-install fees, and takes on the full cost of payment acquiring. The net gain depends on the average order value, the conversion rate after the outbound click, and the actual cost of the replacement payment processing. In some cases it is negative, and the math has to be done market by market.

The US order of April 30, 2025, went further than the DMA on one point: the price of leaving. It barred Apple from charging a commission on purchases made outside the app after a link, and from surrounding that link with deterrent screens, wording restrictions, or placement constraints. On December 11, 2025, the Ninth Circuit upheld the contempt finding but ruled the ban on any commission too broad. It sent back to the trial judge the task of setting what Apple may charge on those transactions. The US channel therefore remains fee-free until that amount is set, with no guarantee that it will stay that way. The decision’s geographic reach, however, is settled. The injunction was issued under California’s unfair competition law and applies only in the US.

Other jurisdictions are moving on different legal grounds. In September 2021, South Korea amended its Telecommunications Business Act to bar app store operators from requiring a specific payment method. In June 2024, Japan passed a law promoting competition in smartphone software. Its opening obligations have applied since December 2025, under the oversight of the Japan Fair Trade Commission. In the UK, the Competition and Markets Authority had already found an effective duopoly in its June 2022 market study. In 2025, it designated Apple and Google as having strategic market status under the 2024 digital markets law. The timetable for UK remedies follows from that designation.

🔑
What an outbound link gives back to the developer, and what it imposes again
Leaving the store’s payment system means becoming the seller again in the legal sense. The developer takes back invoicing, VAT registration or One-Stop Shop enrollment, and tax collection in every market it serves. Also returning are the dispute relationship with the schemes, PCI DSS compliance scope, strong customer authentication in Europe, and dunning on failed payments. In exchange, the developer regains its customers’ identity, control over pricing, freedom to design the cancellation flow that national laws require, and the ability to measure what it sells. Comparing the two channels therefore means weighing these burdens as much as the commission rate. All of these obligations come back at once, starting with the first transaction processed outside the store.

The payout, and what is missing to reconcile it

The payout is the transfer through which the store pays the developer its share of a period’s sales. It covers an aggregate of transactions, never an individual sale. Each store totals the period’s sales and deducts its commission, refunds, the taxes it collected, and any withholdings. A single transfer follows, per legal entity and per currency group. No line of that transfer carries a purchase reference. The accounting trail linking a sale to a bank deposit, which is straightforward in traditional card acquiring, is therefore broken by design.

Apple App StoreGoogle Play
Reporting periodApple’s fiscal month, four or five weeks long, ending on a SaturdayThe calendar month
Payment timingAbout 30 to 45 days after the fiscal month closesAround the 15th of the following month, for orders from the previous calendar month
Minimum payment thresholdPublished by territory in App Store Connect; below it, the balance rolls overPublished in the payments profile; below it, the balance rolls over
GroupingBy payment region and currency, single transferBy payments profile, single transfer
Available documentsDaily sales reports, monthly financial reports by regionMonthly earnings report detailed by order, sales reports
Currency conversionDone by Apple, at its own rate, with no per-transaction detailDone by Google, at its own rate
Payout cycles at the two stores. Sources: Apple, App Store Connect, payments and financial reports documentation; Google, Play Console Help, payments section. Accessed in 2026.
⚠️
Apple’s fiscal month is not the finance team’s month
Apple divides its fiscal year into four- or five-week periods ending on a Saturday, and its financial reports follow those periods. A reconciliation run on calendar months therefore produces a systematic gap that carries over from period to period and grows at quarter-end. The daily sales report, by contrast, follows the regular calendar and shows units and sale prices, not the net revenue actually paid. Comparing the two series without converting the periods means comparing figures that cover neither the same days nor the same definition. Apple publishes its fiscal calendar. Loading it into the data warehouse eliminates this gap for good; once the periods are mixed, nothing can explain it.

Country-level tax withholdings are the second source of discrepancies. The stores collect and remit VAT or sales tax in the territories where they act as the seller. They pass on to the developer the digital services taxes that several countries have introduced, either by adjusting the list price or by reducing the payout. Some territories also impose withholding tax, which the store deducts before payment; a treaty exemption or reduction requires filing a tax form in the payments account beforehand. A developer that has not provided this information discovers the withholding on its first payout and cannot recover it retroactively.

In territories where the store collects the tax itself, the tax is removed from the price paid before the commission is calculated. The commission base is therefore the pre-tax price, not the amount the customer paid. Two customers who pay the same list price generate different net revenue depending on their country of residence. The list price itself is chosen from a grid of price points per territory, which Apple expanded in 2023 to several hundred values per country. A harmonized pre-tax price across all markets is impossible in a store, whereas it is trivial on a merchant website. Revenue management therefore requires territory-by-territory modeling. An average rate applied to total revenue hides these differences.

🔑
The three missing joins, and how to build them
Full reconciliation requires linking a purchase, a customer, a line in the financial report, and a bank transfer. The store provides none of these links. The first join has to be created at the time of purchase, by always passing the opaque account identifier each platform provides; it is the only way to tie a transaction to a user later. The second is built by keeping the store’s transaction ID as the sale’s primary key, linked to the original transaction ID for subscription renewals. The third remains out of reach, because the transfer covers an aggregate for the period. Bank reconciliation is then done at the total level, not line by line.
  • Ingest server notifications and financial reports separately. Notifications provide the real-time event and the transaction ID; reports provide the net amount actually paid out. Neither source replaces the other, and their totals do not match over the same calendar window.
  • Book gross first, then net. The amount paid by the customer, the tax collected by the store, the commission, and refunds are four separate figures; revenue tracked only as net makes any price or refund analysis impossible.
  • Reconcile refunds in the period in which the store books them. A refund granted in March on a January sale is deducted from the March payout, which makes the gap unexplainable in books kept by sale date.
  • Treat notifications as unordered and replayable. Both platforms resend notifications, and non-idempotent processing leads to duplicate entitlement grants or wrongful revocations.
  • Document the contracting entity for each territory. The identity of the store company that buys the content determines the VAT treatment of the developer’s supply, and it varies by region.
  • Load the store’s fiscal calendar into the data warehouse. Period misalignment is the leading cause of reconciliation gaps, and the easiest to eliminate for good.

Market sizing suffers from the same opacity as reconciliation. Neither Apple nor Alphabet reports App Store or Google Play revenue separately in its financial statements. Apple includes it in services; Alphabet reports it in a line that combines subscriptions, platforms, and devices. The in-app spending figures commonly cited therefore come from estimation firms, a source that became more concentrated after Sensor Tower acquired data.ai in 2024. Apple, for its part, publishes a study it commissioned from Analysis Group. The study put developer billings and sales in the App Store ecosystem at $1.1 trillion in 2022, more than 90% of which carried no commission. The scope the study chose serves the argument of the company that paid for it. The figure is accurate under the definition used. Reading it correctly requires knowing what that scope includes.

✅
Key points before choosing a channel
Selling through an app store means trading the payment relationship for distribution. The developer gains instant worldwide payment collection, an authorization rate it does not have to build, and no compliance burden on payments. It gives up the commission, its customers’ identity, refund decisions, control of the subscription, and transaction-level accounting traceability. The openings won since 2024 in the EU and the US make the choice possible market by market, but nowhere remove the cost of leaving. The decision rests on net revenue per territory, after commission, tax, and the cost of replacement payment processing, and it has to be rechecked every time the fee schedule changes.