Skip to main contentSkip to footer

    Top Rated & Verified

    Top Clutch App Development Company Black Owned United StatesTop Clutch Java Developers France 2026Top Clutch Service Line Blind Company Black Owned 2026Top Clutch App Development Company Minority Owned 2026Top Clutch Web Developers Black Owned 2026Top Clutch App Development Company Black Owned 2026Top Clutch Flutter Developers France 2026Top Clutch Health & Wellness App Developers France 2026Top Clutch Swift Company France 2026Top Clutch Machine Learning Company France 2026Top Clutch Chatbot Company France 2026Top Clutch Artificial Intelligence Company France 2026Top Clutch App Development Company Minority Owned Los Angeles
    Back to Blog
    Engineering Guide
    September 3, 2026
    31 min read

    In-App Purchase Implementation:The 2026 Guide to StoreKit 2, Play Billing, and the Commission Rules Two Courts Rewrote

    A per-install EU fee just died, a Play Billing Library deadline just passed, and Apple's US commission on external links is $0 by court order — for now. Here is how the purchase pipeline actually works, and what changed under it in 2026.

    In-app purchase and subscription billing architecture concept for iOS and Android apps in 2026 — StoreKit 2, Play Billing, and platform commission rules
    Oct 1, 2026
    EU Core Technology Commission (5%) replaces the per-install Core Technology Fee
    Apple Developer — Changes for Apps in the European Union, checked Sep 3, 2026
    $0
    Apple's current US commission on external purchase-link sales — unsettled, not permanent
    9th Cir. opinion, Dec 11, 2025; SCOTUS cert granted Jun 30, 2026
    Aug 31, 2026
    Deadline for new Android apps/updates to run Play Billing Library 8+
    Android Developers — Play Billing Library deprecation FAQ
    $28k–$70k
    Single-platform in-app purchase build, 4–9 weeks
    Frenchy Digital scoping bands, 2026

    Key Takeaways

    • In-app purchase implementation is two separate mandatory platform systems — StoreKit 2 on iOS, Play Billing on Android — plus server-side verification, entitlement management and webhook handling for lifecycle events. Neither platform lets you route digital-content payments around its own system for anything unlocking in-app functionality.
    • The commission you owe on the same sale now depends on the storefront and the payment path: Apple's EU terms replaced the per-install Core Technology Fee with a flat 5% Core Technology Commission effective October 1, 2026, while Apple's US external-link commission sits at $0 pending a district-court rate-setting the Ninth Circuit ordered on December 11, 2025 and a Supreme Court case not yet argued.
    • Google's Play Billing Library follows a two-year deprecation cycle: Billing Library 7 stopped being accepted for new submissions and updates on August 31, 2026 (extendable to November 1, 2026 on request). Already-published apps on older versions keep transacting — only new releases are blocked.
    • Epic v. Google's October 2024 permanent injunction already requires Google to allow alternative billing and third-party stores inside Google Play in the US; a proposed settlement that would replace those terms is filed but not yet approved as of when we checked.
    • The FTC's click-to-cancel rule was vacated by the Eighth Circuit in July 2025 on procedural grounds and is not currently back in force, but ROSCA, FTC Act Section 5 and state auto-renewal statutes still require an easy cancellation path, independent of Apple's and Google's own platform-contract requirements to expose subscription management.
    • No independently audited industry-average trial-to-paid conversion or churn benchmark exists — the widely quoted figures come from individual vendors' own customer bases with no disclosed methodology and disagree with each other by wide margins. We refuse to repeat any of them as fact.
    • Frenchy Digital cost bands: discovery $9k–$22k; single-platform build $28k–$70k; cross-platform unified entitlements $70k–$180k; enterprise/regulated build $180k–$420k+.

    What 'In-App Purchase Implementation' Actually Means

    In-app purchase implementation is the system that lets a user pay for something inside your app and reliably receive what they paid for — not the single SDK call most teams picture when they say "we added in-app purchases."

    Both Apple and Google recognize three purchase shapes, and getting the shape right at the product-catalog level matters more than most teams expect, because reclassifying a shipped product later is disruptive to customers who already own it. A consumable can be purchased repeatedly and is used up (in-game currency, extra credits). A non-consumable is purchased once and unlocks something permanently (a pro-tier feature, an ad-removal toggle). An auto-renewable subscription recurs on a billing cycle until canceled, and carries the most lifecycle complexity of the three — renewals, grace periods, billing retries, price-increase consent, cross-device restoration.

    The rule that governs everything else in this guide: if a purchase unlocks features or functionality inside your app, Apple's Guideline 3.1.1 and Google's Payments Policy both require it to go through their own purchase system, with narrow and specific exceptions. Neither company treats this as optional, and both actively scan for workarounds.

    Apple's current guideline text is direct about what does not count as a legitimate workaround:

    If you want to unlock features or functionality within your app, (by way of example: subscriptions, in-game currencies, game levels, access to premium content, or unlocking a full version), you must use in-app purchase. Apps may not use their own mechanisms to unlock content or functionality, such as license keys, augmented reality markers, QR codes, cryptocurrencies and cryptocurrency wallets, etc.

    Apple App Store Review Guidelines, §3.1.1

    The same section requires that any restorable purchase have a working restore mechanism, that purchased credits or in-game currency never expire, and — for apps offering randomized virtual items ("loot boxes") — that the odds of each outcome be disclosed to the customer before purchase. These are not stylistic preferences; each has been an actual App Store rejection reason, and each is checkable in your own product against the exact wording above rather than a paraphrase of it.

    The exceptions matter as much as the rule. Physical goods and services consumed outside the app — a rideshare, a hotel booking, a physical product shipped to the customer — have always been allowed to use other payment processors on both platforms; this guide is about digital content and in-app functionality, which is the category that is actually restricted, and where that restriction sits has changed meaningfully in 2026, as the commission section below covers in detail.

    StoreKit 2: Products, Transactions, and JWS Verification

    StoreKit 2, introduced at WWDC 2021, replaced a genuinely painful integration pattern. The original StoreKit required fetching an opaque, encrypted receipt blob from the device and either sending it to Apple's verifyReceipt endpoint or decoding it locally with OpenSSL — slow, hard to test, and a recurring source of production bugs around receipt refresh timing and sandbox-versus-production endpoint confusion.

    StoreKit 2 replaces the opaque receipt with typed Swift objects — Product for what's purchasable, Transaction for what was actually bought — and signs every transaction as a JSON Web Signature (JWS) you can verify cryptographically against Apple's published keys, without a network round trip for every check. Transaction.currentEntitlementshands you the customer's current, already-verified purchase state directly as an async sequence, which is a materially different developer experience from manually reconstructing entitlement state from a decoded receipt array.

    The old verifyReceiptendpoint still functions today, and Apple has not announced a shutdown date for it the way Google shut down FCM's legacy send APIs. But every piece of Apple's current documentation treats it as the legacy path, not the way to build new integrations — if you're standing up a new purchase flow in 2026, there is no reason to build against receipts instead of StoreKit 2's transaction model.

    One detail that trips up teams migrating from StoreKit 1: a transaction is not finished automatically. Your app must call transaction.finish() after it has verified the purchase and durably granted the entitlement — a transaction that is never finished reappears in Transaction.updates on every future app launch, which is either a minor annoyance (a duplicate local notification) or a real bug (double-granting a consumable) depending on how your grant logic is written.

    Testing purchases before they touch real money

    Apple's StoreKit Testing framework lets you define a local product catalog in a .storekitconfiguration file and exercise the entire purchase, renewal, refund and billing-grace-period flow directly in the Xcode simulator — including fast-forwarding subscription renewals that would otherwise take real calendar days to observe. It runs independently of the sandbox environment, which is the separate, slower option for testing against Apple's actual servers with a sandbox Apple ID before submission. Google's equivalent is license testing through Play Console, plus the ability to configure test-only subscription renewal intervals so a monthly plan can renew every few minutes during QA. Neither replaces a final sandbox/internal-testing-track pass before release — both exist to catch entitlement-logic and webhook-handling bugs long before a real purchase is on the line.

    If you're deciding on a cross-platform framework before this level of detail even becomes relevant, our iOS app development guide and Android app development guide cover the platform-native versus cross-platform tradeoff more broadly; StoreKit 2 and Play Billing both have solid wrappers in React Native and Flutter, but you will still end up reading each platform's own documentation for anything beyond the basic purchase flow.

    The App Store Server API and Server Notifications V2

    A client-side purchase confirmation tells your app's UI to update immediately — it should never be the thing that actually grants an entitlement your business depends on. That is what the App Store Server API and App Store Server Notifications V2 are for: an independent, server-to-server source of truth your backend controls.

    The App Store Server API is a pull model: your server authenticates with a signed JWT and can query a customer's live subscription status or full purchase history directly from Apple, using only a transaction identifier — not the entire receipt blob StoreKit 1 required. This is the correct place to check entitlement state when a request comes in from a surface StoreKit itself doesn't touch — a companion web app, an internal support tool, an API key gate.

    App Store Server Notifications V2 is the push counterpart: Apple posts a signed JWS payload to a webhook endpoint you register whenever a subscription-relevant event happens — a renewal, an expiration, a refund, entry into a billing grace period, a price-increase consent, and more. Apple's documented retry behavior sends up to five attempts, roughly at 1, 12, 24, 48 and 72 hours after the previous attempt, if your endpoint doesn't return a success response — an endpoint down for a few hours will still receive the notification eventually, but one down for more than three days will not. V1 notifications are deprecated in Apple's current documentation; build against V2 only.

    A common gap: an app that checks Transaction.currentEntitlementsonly when it launches will miss anything that happens while it's closed. If your backend needs to know about a refund or a failed renewal in near-real-time — to gate API access, alert a support queue, or update a companion web dashboard — Server Notifications V2 is not optional polish; it is the only path that doesn't depend on the user happening to reopen the app.

    Webhook handling for both platforms needs to be idempotent by design: Apple and Google can both redeliver a notification you've already processed (a retry after a slow-but-eventually-successful response, for instance), and a handler that isn't safe to run twice on the same event will eventually double-grant something or send a duplicate downstream side effect.

    Google Play Billing: Acknowledgment, Consumption, and the Aug 2026 Deadline

    Play Billing Library is Google's equivalent client-side framework — BillingClient, launchBillingFlow — and it carries a requirement that catches more integrations than any single StoreKit 2 detail: every purchase must be explicitly acknowledged within three days of completing, or Google automatically refunds it and reverses the purchase.

    Acknowledgment is a distinct API call from whatever your app logic does to unlock content locally, which is exactly why it's easy to ship a flow that looks correct in testing — the user pays, the UI unlocks — but never actually calls the acknowledgment endpoint. Three days later, Google auto-refunds the purchase, and unless your app is separately watching for that reversal, it keeps showing the content as unlocked with no unlock event to explain why the user is no longer entitled. Consumable products have a second, related requirement: they must be consumed via consumeAsync (which also acknowledges) before the same item can be purchased again — a non-consumable or subscription is acknowledged but never consumed.

    Google runs Billing Library itself on a two-year deprecation cycle, announced at Google I/O 2019: each major version stops being accepted for new app submissions and app updates two years after release, with an extension window available on request through the Play Console.

    Billing Library versionNew-submission / update cutoffExtension deadline (on request)
    5August 31, 2024 (passed)November 1, 2024
    6August 31, 2025 (passed)November 1, 2025
    7August 31, 2026 (just passed)November 1, 2026
    8August 31, 2027November 1, 2027
    9 (released May 19, 2026)August 31, 2028November 1, 2028
    As of this guide's publish date, the Billing Library 7 cutoff is three days old. If your app is still shipping updates on BL7 or earlier, new releases are blocked as of August 31, 2026 unless you've requested the extension to November 1 through Play Console's Policy Status page. Already-published binaries on an older version keep transacting normally for existing users — nothing forces an install-base migration — but you cannot ship a new build until you upgrade to at least Billing Library 8.

    Google's own guidance for teams upgrading right now is to go straight to Billing Library 9 rather than stop at the version-8 floor, since 8 faces the identical August 31, 2027 cutoff and 9 shipped with additional in-app messaging and price-increase opt-in features that most teams will want regardless.

    StoreKit 2 vs. Play Billing, Side by Side

    Laid next to each other, the two platforms solve the same problem with genuinely different mechanics — and the differences are exactly the details that get missed when a team builds one platform first and assumes the other works the same way.

    DimensionStoreKit 2 (iOS)Play Billing (Android)
    Purchase frameworkStoreKit 2 (Product, Transaction types; Swift/SwiftUI-native)Play Billing Library (BillingClient, launchBillingFlow)
    Transaction authenticity signalJWS-signed transaction, verifiable client- or server-side against Apple's public keysPurchase token, verified server-side via the Google Play Developer API
    Legacy path statusOriginal receipt + verifyReceipt still functions but is the documented legacy path since StoreKit 2's 2021 releaseBilling Library versions deprecate on a 2-year cycle; v7 stopped accepting new submissions/updates Aug 31, 2026
    Post-purchase server syncApp Store Server API (pull) + App Store Server Notifications V2 (push, signed JWS, up to 5 retries over 72 hours)Google Play Developer API (pull) + Real-time Developer Notifications via Cloud Pub/Sub (push)
    Mandatory post-purchase step your app must callFinish the transaction (Transaction.finish()) after granting entitlement, or it re-appears in unfinished transactions on every launchAcknowledge the purchase within 3 days or Google auto-refunds it; consumables must also be consumed via a separate call
    Restore purchases requirementRequired by Guideline 3.1.1 for any restorable purchase; AppStore.sync() or Transaction.currentEntitlements drives itHandled by re-querying purchases tied to the signed-in Google account; no separate 'restore' UI action needed in most flows

    The Commission Map Has Fractured

    Through 2023, "Apple takes 30%" and "Google takes 30%" were close enough to true everywhere that a single number could scope a business model. That stopped being true in 2026. The commission owed on functionally the same transaction now depends on the storefront region, the payment path the customer used, and — for Apple in the US specifically — a rate that is still being litigated.

    PathWhat it coversCurrent rateStatus
    Apple — standard global (outside EU)In-app purchase via Apple's system30% standard / 15% Small Business Program or after year 1 of a subscriptionUnchanged by the 2026 EU update — applies to the rest of the world
    Apple — EU, in-app purchaseApple's own in-app purchase system, EU storefront26% standard / 15% reduced (Small Business, Mini Apps Partner, Video Partner Programs; subscriptions after year 1)Effective Oct 1, 2026, replacing the prior EU-specific tier structure
    Apple — EU, alternative payment processing in-appA third-party payment processor used inside the app, EU storefront20% standard / 10% reducedNew category created by the EU's alternative-payment allowance
    Apple — EU, Core Technology CommissionApps distributed via alternative marketplaces or the web, outside the App Store5% flatReplaces the per-install Core Technology Fee (€0.50/install after 1M annual EU downloads) as of Oct 1, 2026
    Apple — EU, out-of-app web link-out (Store Services)Purchase completed on the web within 7 days of an in-app link tap15% standard / 10% reducedTime-boxed to the 7-day attribution window
    Apple — US, external purchase linkPurchase completed via an external link from a US-storefront app$0, pending district-court rate-setting on remandUnsettled — see the Epic v. Apple section below before pricing around this
    Google — standard globalPurchase via Google Play Billing30% standard / 15% first $1M annual revenue per developer, and after year 1 of a subscriptionGoogle's long-standing tiered structure, materially unchanged by the Epic litigation
    Google — US, alternative billing / external linkPurchase via a developer-chosen processor or external link, US storefrontReduced service fee under the standing 2024 injunction (specific developer-negotiated rate varies; not a flat published number)Available now under the 2024 injunction; final terms may still shift if the proposed Epic/Google settlement is approved
    Methodology.Every rate above reflects the named platform's own current published terms or the most recent court order, checked September 3, 2026, with the primary source cited. We did not include any vendor-published conversion, retention or ROI figure alongside these commission numbers — those are addressed separately, and refused, in the vendor section below.

    Two rows deserve a closer read before you build a pricing model around them, because both are mid-litigation rather than settled: Apple's $0 US external-link commission, and Google's US alternative-billing rate. The next two sections cover each in the detail an actual pricing decision requires.

    Epic v. Apple: The Contempt Saga, and Why It Isn't Over

    Understanding what Apple can currently charge on US external-link purchases requires the actual sequence — reporting on this case has repeatedly conflated "the injunction exists" with "the commission is zero forever," and the two are not the same claim.

    1. 1.2021: The district court (Judge Yvonne Gonzalez Rogers) rules mostly for Apple on antitrust monopoly claims, but issues a permanent injunction on a California Unfair Competition Law anti-steering claim: Apple must let developers include external links and other calls to action directing customers to purchasing mechanisms outside Apple's in-app purchase system.
    2. 2.April 30, 2025: Judge Gonzalez Rogers holds Apple in civil contempt, finding Apple violated the 2021 injunction through 'scare screens' discouraging external-link use and by continuing to charge a commission on external-link sales. The court orders Apple to stop charging any commission on external-link purchases and to remove the scare screens immediately.
    3. 3.Since April 2025: Apple has charged $0 commission on purchases completed through external links from US-storefront apps.
    4. 4.December 11, 2025: The Ninth Circuit affirms the contempt finding and the scare-screen and dynamic-link holdings, but rules the district court's total ban on any commission is itself overbroad — the panel holds Apple may charge some commission tied to costs that are genuinely and reasonably necessary to facilitate external-link purchases, and remands for the district court to set that rate. The panel also denies Apple's request to vacate the injunction and denies its request to reassign the case to a different judge.
    5. 5.Early-to-mid 2026: Apple obtains a stay preserving the $0-commission status quo while it seeks Supreme Court review.
    6. 6.April 28–29, 2026: The Ninth Circuit grants Epic's motion for reconsideration and reverses the stay, finding Apple had not shown good cause to keep it in place — the case returns to the district court to set the actual commission rate even as Apple's Supreme Court petition remains pending.
    7. 7.May 21, 2026: Apple petitions the U.S. Supreme Court for review of the Ninth Circuit's opinion.
    8. 8.June 30, 2026: The Supreme Court grants certiorari — specifically to review the legal standard applied for civil contempt, not a direct review of the commission-rate question itself — with arguments expected in the Court's October 2026 term.
    Where this stands as of September 3, 2026, when we checked: Apple continues charging $0 commission on US external-link purchases. That is the operative rate today, not a permanent fixture — the district court has not yet set the rate the Ninth Circuit ordered it to determine, and the Supreme Court has not yet heard the related contempt-standard case. Build your current pricing on the $0 rate if you must ship today, but do not architect a multi-year business model as though this number cannot move — it is actively, currently in dispute in two courts at once.

    Practically, what this means for external-link purchase flows in a US-storefront app: Apple's Guideline 3.1.3 now states that apps "cannot, within the app, encourage users to use a purchasing method other than in-app purchase, except for apps on the United States storefront and as set forth in 3.1.1(a) and 3.1.3(a)" — the direct textual result of this litigation. A US app can include buttons and external links today without the reader-app restrictions that still apply elsewhere; whether that specific carve-out or the $0 commission survives the pending Supreme Court and district-court proceedings unchanged is genuinely not yet known.

    Epic v. Google: The Injunction, the Settlement, and What's Live Today

    Epic's case against Google ran on a different track and reached a jury verdict rather than a bench ruling: in December 2023, a jury found Google's Play Store conduct constituted an illegal monopoly. In October 2024, Judge James Donato issued a permanent, worldwide injunction requiring Google to allow third-party app stores to operate within Google Play, to stop forcing developers to use Google Play's own billing system exclusively, and to stop restricting developers from telling users about — or linking to — alternative payment methods. The Ninth Circuit substantially upheld the jury verdict and the injunction's remedies on appeal in 2025.

    In November 2025, Epic and Google filed a proposed settlement intended to resolve the case on negotiated terms rather than continue litigating the injunction's exact scope. As of when we checked, Judge Donato has not approved that settlement — he scheduled a summer-2026 evidentiary hearing he reportedly called the case's "final act," and the original October 2024 injunction remains in force in the meantime.

    Two separate pieces of Google litigation get conflated constantly in coverage of this space, and it's worth being precise: the Epic antitrust case described above is distinct from a separate consumer/states class-action settlement — a $700 million payment to consumers and state attorneys general over related Play Store conduct — which received its own final court approval on its own track. A developer's alternative-billing rights come from the Epic injunction and any settlement that eventually replaces it, not from the $700 million consumer settlement.

    What's actually live for a developer building today: Google's Play Console policies for US developers already permit offering alternative billing and linking to external payment options, consistent with the standing 2024 injunction. The specific fee Google charges on alternative-billing transactions is negotiated per the injunction's terms rather than a single flat published percentage the way the EU numbers are — if alternative billing materially changes your unit economics, get the current terms directly from Google Play Console rather than from a number in this or any other article, since this is exactly the kind of detail a pending settlement could still revise.

    Subscription Compliance: Restore, Cancel, and What Federal Law Actually Requires

    Two platform-contract obligations sit underneath every subscription flow, independent of whatever federal rulemaking is doing at a given moment: Apple's Guideline 3.1.1 requires a working restore mechanism for any restorable purchase, and both Apple and Google require you to expose subscription management and cancellation through the platform's own settings surface — not buried inside your own app's account menu as the only path.

    Federal rulemaking on cancellation ease has itself been unsettled in exactly the way the commission litigation above is. The FTC's Negative Option Rule — widely called the "click-to-cancel" rule — was vacated by the Eighth Circuit on July 8, 2025, on procedural grounds: the court found the FTC had skipped a preliminary regulatory analysis required because the rule's projected economic impact exceeded the statutory threshold for a "major rule." That is a process failure, not a ruling that the underlying policy goal was wrong. The FTC opened a new Advance Notice of Proposed Rulemaking on March 11, 2026 seeking public comment on how to proceed; as of when we checked, that comment period has closed and no replacement rule is yet in force.

    The rule being vacated does not mean the obligation to make cancellation easy disappeared. The Restore Online Shoppers' Confidence Act (ROSCA), Section 5 of the FTC Act's general unfairness and deception standards, and a growing body of state auto-renewal statutes all still apply to negative-option subscriptions, and the FTC has stated it will continue enforcing under those existing authorities while the new rulemaking proceeds. Building a cancellation flow that's deliberately harder than the sign-up flow is legal risk under current law, vacated federal rule or not.

    On restore specifically: the most common production gap is treating restore as an edge case tested once before launch rather than a flow real users hit constantly — every reinstall, every new device, every user who signed up on one platform and expects entitlement to follow them. Transaction.currentEntitlements on iOS and a re-query against the signed-in Google account on Android both handle the mechanics; the gap is almost always in how that reconciles against your own entitlement store, not in the platform API itself.

    If your product spans a mobile app and a companion web experience, the same accounts-and-entitlements question shows up there too — our mobile app RFP template guide covers how to specify cross-platform entitlement and restore requirements precisely enough that competing proposals are actually comparable, rather than each vendor claiming "subscriptions supported" at very different levels of rigor.

    Reference Architecture and the Order to Build It In

    The order matters because each step either depends on the one before it or fails invisibly without it — the same pattern that governs push notification infrastructure applies here, with the platform-specific failure modes swapped in.

    StepWhatFailure Mode If SkippedWhy This Order
    1Product catalog setup on both platformsRead-only in App Store Connect / Play Console; no code yetNothing downstream has a product to referenceConsumable/non-consumable/subscription types must match your actual product logic before any client code is written — reclassifying a shipped product later is disruptive to existing purchasers.
    2Client-side purchase flow (StoreKit 2 Product/Transaction; Play BillingClient)Write required; purchase completes but is not yet verifiedUser pays, sees no unlock — the worst possible failure mode, so build verification before shipping this aloneThis is the part every tutorial covers and the part least likely to be the actual risk in your system.
    3Server-side verification (App Store Server API; Google Play Developer API)Read of the platform's own record, independent of the clientClient-reported purchases are trusted at face value — spoofableThis is the step that actually determines whether your entitlement logic can be trusted for anything that matters.
    4Entitlement store and grant logicWrite required; ties a verified purchase to an account, not just a deviceEntitlement lives only on-device — breaks on reinstall, device change, or a companion web/API surfaceNeeds to exist before webhook handling has anywhere to write updates.
    5Webhook handling (App Store Server Notifications V2; Google real-time developer notifications)Write required; must be idempotent against retries and duplicate deliveryRenewals, refunds and billing-grace events that happen while the app is closed never reach your backendOrdered after the entitlement store because notifications exist to update it, not to replace it.
    6Restore purchases / re-entitlement flowRead of the platform's current entitlement state, reconciled against your storeA reinstall or new-device user appears unentitled despite having paid — a support-ticket generator and an App Store rejection risk under 3.1.1Comes after the entitlement store exists, since restore is fundamentally a reconciliation against it.
    7Acknowledgment/consumption (Android) and transaction finishing (iOS)Write required on every completed purchaseAndroid: automatic refund within 3 days. iOS: unfinished transaction reappears on every future launchLast only because it is the step most tutorials skip, not because it is low priority — treat it as part of step 2, not optional polish.

    A note on ownership: webhook handling, entitlement reconciliation, and platform SDK version currency (the Billing Library deprecation cadence from earlier) all need a named owner and a recurring cadence, not a one-time build task closed at launch. A purchase flow that worked correctly at launch degrades quietly as platform requirements shift underneath it — an unnoticed Billing Library deadline, a webhook endpoint that silently stopped responding — and by the time a support queue notices "customers who paid aren't getting access," the underlying cause has often been accumulating for weeks.

    Build vs. Buy: RevenueCat, Adapty, Qonversion, and What They Don't Change

    This is not a ranked top list, for the same reason the push-infrastructure landscape isn't one: StoreKit 2 and Play Billing are mandatory platform layers every vendor sits on top of, so the useful question is what a given vendor actually replaces, not which one scores highest on a benchmark nobody can verify.

    Layer / VendorCategoryWhat You're Actually BuyingPublic Security PostureCorporate Status (checked Sep 3, 2026)
    StoreKit 2 (Apple)Mandatory platform layerThe only path to Apple's in-app purchase system; every iOS monetization vendor sits on top of this, not instead of itApple's own infrastructure; you manage server-side JWS verification and API credentialsApple platform, not a company — not applicable
    Play Billing Library (Google)Mandatory platform layerThe only path to Google Play's billing system; same relationship to third-party vendors as StoreKit 2Google's own infrastructure; you manage server-side verification via the Play Developer APIGoogle platform, not a company — not applicable
    RevenueCatCross-platform entitlement & subscription infrastructureUnified entitlement state across iOS, Android and web from one SDK, plus webhook normalization across both platforms' notification formatsPublishes a public security/trust page; verify current certifications directly before a regulated use casePrivate, independent, Series C; $119M total raised across 7 rounds, most recent $50M round May 2025
    AdaptySubscription infrastructure + paywall experimentationSimilar core entitlement layer to RevenueCat, differentiated on no-code paywall A/B testingPublishes compliance claims; verify current certifications directlyPrivate, independent; no evidence found of acquisition as of when we checked
    QonversionSubscription infrastructure + analyticsEntitlement layer plus subscription analytics positioned on per-dollar cost efficiency versus larger competitorsPublishes compliance claims; verify current certifications directlyPrivate, independent; no evidence found of acquisition as of when we checked
    ApphudSubscription infrastructure + win-back flowsEntitlement layer differentiated on churn recovery and win-back campaign toolingPublishes compliance claims; verify current certifications directlyPrivate, independent; no evidence found of acquisition as of when we checked

    Building this yourself is defensible when you have one platform, a simple product catalog, and an engineer who will actually own the ongoing maintenance — server-side verification against the App Store Server API or the Play Developer API is genuinely tractable now in a way StoreKit 1's receipt validation wasn't. A vendor earns its subscription fee once you need entitlement state synchronized across iOS, Android and web from one source of truth, or paywall experimentation without shipping a new app-store build for every test, or you'd rather not build and maintain webhook normalization across both platforms' very different notification formats yourself.

    What no vendor changes: none of the entitlement-infrastructure vendors above alters what Apple or Google are legally permitted to charge you, and none replaces your own obligation to verify purchases server-side. They sit on top of the same two mandatory platform APIs covered throughout this guide, not around them — evaluate a vendor on what plumbing it saves you building, never on a claim that it changes your commission exposure.

    On the refused figures specifically: searching on September 3, 2026, we found multiple vendors' "State of Subscription Apps"-style reports quoting trial-to-paid conversion rates and month-one churn percentages drawn entirely from each vendor's own SDK-integrated customer base, with no disclosed sampling method and no stated confidence interval. A sample restricted to apps that already adopted a specific vendor's subscription tooling is not a random or representative sample of the app market, and treating it as "the industry average" overstates what the underlying data actually supports. We name the pattern and decline to print a specific number as fact.

    What the New Fee Map Does to a Real P&L

    The following is an illustrative worked scenario, not a real client engagement or a reported outcome — the arithmetic uses the verified commission rates from this guide, applied honestly to round numbers, to make the fee fragmentation above concrete.

    Consider a habit-tracking app with a $9.99/month subscription and 10,000 active paying subscribers split evenly across three paths: Apple in-app purchase (US storefront), Apple in-app purchase (EU storefront), and an external-link purchase from a US-storefront app. That's roughly 3,333 subscribers per path, or about $33,297 in monthly subscription revenue per path before any commission.

    PathApplicable rate (post-year-1 subscription, reduced tier)Commission owed on ~$33,297Net to the business
    Apple IAP, US storefront (standard global rate)15% (Small Business Program / after year 1)≈ $4,995≈ $28,302
    Apple IAP, EU storefront (new Oct 2026 terms)15% (reduced tier, after year 1)≈ $4,995≈ $28,302
    External link, US storefront (current, unsettled)$0 (pending district-court rate-setting)$0≈ $33,297

    The honest reading of that table is not "route everyone to external links" — it's that the third row is the least stable number in the entire model. The Ninth Circuit has already ruled the $0 rate is not the final word, and a rate the district court eventually sets could land anywhere the "genuinely and reasonably necessary costs" standard supports. A business model that only works at $0 external-link commission is a business model built on pending litigation, not a durable unit economics assumption — the discipline this scenario is meant to illustrate is running your own numbers at $0, at a plausible modest commission, and at the standard 15-30% rate, and checking the model survives all three, not just the most favorable one.

    Red Flags in Vendor and Agency Selection

    ClaimReality
    “We handle App Store compliance so you don't have to worry about the guidelines”Guideline 3.1.1's line between mandatory in-app purchase and permitted external processing is fact-specific to your product category. A vendor or agency that won't walk through your specific product against the actual guideline text has not actually reviewed your case.
    A quoted “average” trial-to-paid conversion or churn rate with no denominatorThese figures come from single vendors' own customer bases with no disclosed sampling method, and different reports disagree by wide margins while each claiming to represent the industry. Ask for the denominator and the sample before repeating any of these numbers internally.
    “Apple charges 0% on external links” stated as a stable, permanent factAs of when we checked, $0 is the current state pending a district-court rate-setting the Ninth Circuit ordered in December 2025, with a related Supreme Court case not yet argued. Any pricing model built assuming this never changes is building on a number in active litigation.
    No answer on how purchase acknowledgment or transaction finishing is handledIf a vendor's own documentation or a development partner's process never mentions Android acknowledgment-within-3-days or iOS Transaction.finish(), that's a sign they haven't operated a production purchase flow past the demo stage — this is where auto-refunds and reappearing transactions actually happen.
    “HIPAA-compliant” or “PCI-compliant in-app purchases” as a blanket claimApple and Google process the actual card transaction; your app never touches raw payment card data through StoreKit 2 or Play Billing, which is a genuine simplification — but claiming a broader compliance certification for the purchase flow itself, without naming what specifically was audited, is not a substantive claim.
    No mention of server-side verification at allA purchase flow that grants entitlement purely from a client-side success callback, with no independent server check against Apple's or Google's own API, is spoofable by a modified client. This should be a five-minute conversation in any technical review, and its absence from a proposal is a real gap, not an oversight to wave off.

    What This Costs, and Its Limits

    EngagementRangeTimelineTypical Scope
    Discovery + monetization audit$9k–$22k2–4 weeksPurchase-flow review, entitlement-logic audit, commission exposure mapping across platforms and regions
    Single-platform IAP implementation$28k–$70k4–9 weeksOne platform (StoreKit 2 or Play Billing) built correctly: server-side verification, webhook handling, restore flow, acknowledgment/finishing logic
    Cross-platform build with unified entitlements$70k–$180k9–16 weeksiOS + Android + web entitlement sync, paywall experimentation infrastructure, vendor migration if applicable
    Enterprise / regulated build$180k–$420k+14–24 weeksAudit logging, multi-region commission handling, documented compliance posture, penetration-test support

    One scoping note specific to this domain: the discovery phase for in-app purchase work should always include a platform-currency check on two fronts — the Billing Library version your Android app currently ships (anything on 7 or earlier needs to move before your next release) and whether your iOS integration still depends on legacy receipt validation instead of StoreKit 2's transaction model. Both are quick to check and expensive to discover mid-release instead.

    Limitations: what we could not verify.Google's exact negotiated service-fee percentage for US alternative-billing transactions under the Epic v. Google injunction is not a single flat published number the way the EU commission tiers are, and it may change again if the pending Epic/Google settlement is approved — confirm current terms directly in Play Console before pricing around it. We were unable to directly retrieve the full text of the Ninth Circuit's December 11, 2025 opinion PDF through our research tooling due to a network restriction; the holdings described in this guide are corroborated across multiple independent legal-analysis sources that had direct access to the opinion (see sources), but a reader relying on this for a legal filing or compliance decision should pull the primary opinion directly. We did not independently test any vendor's claimed webhook delivery reliability or entitlement-sync latency. And as stated throughout, we deliberately did not print a subscription conversion or churn benchmark as fact, because no independently audited figure exists for this category as of the date we checked.

    None of this is a substitute for your own counsel reviewing your specific product, region mix and purchase paths — commission and compliance obligations here are genuinely in motion across three separate active proceedings (Epic v. Apple, Epic v. Google, and the FTC's negative-option rulemaking), and a guide like this one can only be accurate as of the date it was checked, not as a permanent reference.

    Get Your Purchase Flow and Commission Exposure Audited

    Book a free 60-minute discovery call with Frenchy Digital, a senior-led Black-owned Los Angeles agency. We review your entitlement logic and commission exposure across platforms and send a written, fixed-price phased proposal within 5 business days.

    1517 S Bentley Ave Unit 204, Los Angeles CA 90025

    Frequently Asked Questions

    Sources & References

    1. 1Apple Developer — App Store Review Guidelines, Section 3.1 (In-App Purchase)
    2. 2Apple Developer — Changes for Apps in the European Union (business terms, effective October 1, 2026)
    3. 3Apple Developer News — Changes for Apps in the European Union
    4. 4Apple Developer Documentation — App Store Server API
    5. 5Apple Developer Documentation — App Store Server Notifications V2
    6. 6Apple Developer Documentation — Enabling App Store Server Notifications
    7. 7Apple Developer — Tech Talk: Support Customers with StoreKit 2 and App Store Server API
    8. 8Android Developers — Play Billing Library Version Deprecation FAQ
    9. 9Android Developers — Google Play's Billing System (Play Billing overview)
    10. 10Google Play Console Help — Update Regarding Google Play's Policies for Developers Serving Users in the US
    11. 11RevenueCat Engineering Blog — What's New in Google Play and Play Billing Library 9.0
    12. 12RevenueCat Engineering Blog — A Complete Guide to Migrating from Play Billing v7 to v8
    13. 13U.S. Court of Appeals for the Ninth Circuit — Epic Games, Inc. v. Apple Inc., No. 25-2935 (opinion filed Dec. 11, 2025)
    14. 14Justia — Epic Games, Inc. v. Apple Inc., No. 25-2935 (9th Cir. 2025), case summary
    15. 15Cravath, Swaine & Moore — Epic Games' Ninth Circuit Win Affirming Civil Contempt Finding
    16. 16Fenwick — Ninth Circuit Largely Upholds Ruling in Epic v. Apple
    17. 17Courthouse News Service — Ninth Circuit Confirms Contempt Finding Against Apple in Epic Games Battle
    18. 18Wikipedia — Epic Games v. Apple (case history and procedural timeline)
    19. 19Wikipedia — Epic Games v. Google (case history and procedural timeline)
    20. 20Mintz — Ninth Circuit Upholds Jury Verdict Against and Remedies Imposed Upon Google in Epic Games Monopolization Antitrust Suit
    21. 21Courthouse News Service — Judge Grants Final Approval of $700 Million Android App Antitrust Settlement
    22. 22Crowell & Moring — Eighth Circuit Cancels Click-to-Cancel
    23. 23Gibson Dunn — FTC Restarts Negative Option Rulemaking After Eighth Circuit Vacatur
    24. 24Latham & Watkins — Eighth Circuit Vacates FTC Click-to-Cancel Rule Days Before Compliance Deadline
    Chris Machetto - CEO & Founder of Frenchy Digital

    Chris Machetto

    CEO & Founder of Frenchy Digital, a senior-led Black-owned Los Angeles agency building custom mobile apps and the monetization infrastructure behind them.