App Store & Google Play: In-App Purchase Guidelines
Can a desktop license unlock mobile Pro features via device sync? Read Apple App Store & Google Play billing rules and compliant options like server accounts.
Can an iOS/Android app unlock Pro features by syncing with a desktop app that already has a Pro license, without requiring a separate In-App Purchase on the mobile device?
I’m developing a .NET Maui Application for Windows, macOS, iOS and Android. Pro features are sold via:
- Mobile: In-App Purchase on iOS and Android
- Desktop: License key purchased from the website (Windows/macOS)
The app supports device-to-device file sync between mobile and desktop. I want a user who bought Pro on desktop to automatically get Pro on mobile when syncing (and vice versa), without paying again. There is no server-backed account system; licenses are device-based. When changing devices, users either enter the desktop license key again or use the “Restore In-App Purchase” function on mobile.
Relevant policy excerpts I’ve noted:
- Apple App Store Review Guidelines: “If you want to unlock features or functionality … you must use in‑app purchase. Apps may not use their own mechanisms to unlock content or functionality, such as license keys …”
- Google Play billing policy: “Apps on Google Play that require or accept payment for access to in‑app features or services … must use the Google Play billing system for these transactions.”
Specific questions:
-
Would activating Pro on mobile by syncing with a Pro desktop installation be considered “bypassing the In-App Purchase” requirement by Apple or Google, even if no payment occurs during the sync?
-
Is a device-to-device license transfer (desktop → mobile) allowed under App Store / Google Play rules, given a device-based license model without server accounts?
-
If device-to-device sync is not allowed, what compliant approaches enable cross‑platform license portability while minimizing user friction? For example:
- Using a server-backed account to tie purchases to a user
- Issuing transferable license files during sync
- Relying on platform restore flows
Any guidance, examples of compliant implementations, or references to official policy clarifications or precedent would be appreciated.
No, an iOS or Android app cannot unlock Pro features via sync with a desktop Pro license without a separate in-app purchase—this directly violates App Store guidelines and Google Play billing policies, even without payment during sync. Both platforms ban custom mechanisms like license keys or device-to-device transfers that bypass their billing systems for digital unlocks. The fix? Lean on server-backed accounts or platform restore flows for true cross-platform portability in your .NET MAUI app.
Contents
- App Store Guidelines on In-App Purchases
- Google Play Billing Policy
- Is Device-to-Device Sync Allowed?
- Compliant Cross-Platform License Approaches
- .NET MAUI Implementation Guidance
- Sources
- Conclusion
App Store Guidelines on In-App Purchases
Apple’s stance is crystal clear: if your app wants to unlock Pro features or premium functionality, it must go through in-app purchase (IAP). No exceptions for clever workarounds. The official App Store Review Guidelines spell it out: “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.”
That “etc.”? It’s Apple’s way of saying anything resembling a bypass is out. Developers have hit rejections trying similar tricks—like syncing entitlements from a desktop buy or validating external license keys. One forum thread nails the frustration: even cross-platform access to previously bought features needs IAP availability on iOS, or it’s a no-go (Apple Developer Forums).
But here’s the nuance for multi-platform apps. Guideline 3.1.3(b) lets users access content bought elsewhere if it’s also offered via IAP in the app. Syncing a desktop Pro license directly to mobile? That’s not access—it’s unlocking without Apple taking their cut. Real-world precedent: apps rejected for device-based licenses tied to external shops, not IAP (Stack Overflow case).
Short answer to your first question: yes, this counts as bypassing IAP, payment or not. Apple doesn’t care about the money trail during sync; they care about control over digital unlocks.
Google Play Billing Policy
Google’s rules mirror Apple’s but hit harder on enforcement. Any app offering in-app purchases for features or services must use Google Play billing—full stop. The Payments policy states: “Apps on Google Play that require or accept payment for access to in‑app features or services… must use the Google Play billing system.”
Even trickier: no directing users to external payments or unlocks inside the app. That includes flows that “lead users from an app to a payment method other than Google Play’s billing” (Play Console Help). Device sync from a desktop license key? Google sees it as a custom mechanism dodging their system, just like a QR code or key entry.
Their 2020 blog clarifies: talk about alternatives outside the app all you want, but inside? Billing or bust (Android Developers Blog). So question 1 again: absolutely, sync-based activation bypasses billing requirements.
Is Device-to-Device Sync Allowed?
Straight up—no. Your device-based model, where desktop Pro license transfers via file sync to mobile without a server or separate IAP, breaks both policies. Apple’s guidelines explicitly nix license keys and equivalents for unlocks (updated 3.1.1). Google forbids any in-app path avoiding Play Billing.
Why? Platforms view this as one purchase unlocking everywhere, sidestepping mobile revenue shares (30%!). No server account means no verifiable tie to a legit IAP—it’s just peer-to-peer entitlement smuggling. Vice versa (mobile to desktop) might fly easier on desktop stores, but mobile-to-anywhere still needs IAP validation.
Question 2: Device-to-device transfers aren’t allowed under a no-server, device-bound setup. “Restore IAP” works for mobile re-downloads, but it won’t magically Pro-ify a fresh desktop install without your key re-entry.
Compliant Cross-Platform License Approaches
Good news: portability is possible without double-charging loyal users. Ditch pure device-sync; here’s what works, ranked by low friction.
First, server-backed accounts. Tie Pro features to a user ID (email/login). User buys desktop license? Server flags their account as Pro. Mobile app checks server on launch/sync—unlocks if entitled. Crucial: still offer IAP on mobile. Apple/Google allow this for cross-platform continuity, as long as IAP is the mobile path (Apple 3.1.3(b); Google external comms OK outside app).
Friction fix: Silent server check during your existing file sync. No extra login if you weave it into device pairing.
Second, platform restore flows. Mobile IAP includes “Restore Purchases” button—standard. For desktop-to-mobile: prompt users to buy IAP once, then restore covers new devices. Not zero-friction, but compliant and familiar.
Third, avoid “transferable license files”—that’s just a fancier license key, banned (CrustLab summary).
What about consumables/non-consumables? Pro unlocks are typically non-consumable subscriptions or one-time—still need IAP.
Examples: Many games let web-bought currency sync via account, but only if IAP-available in-app.
.NET MAUI Implementation Guidance
For your .NET MAUI app spanning Windows, macOS, iOS, Android—Microsoft’s got your back with platform-specific billing wrappers. Check their cross-platform billing sample: it unifies StoreKit (iOS/Mac), Play Billing (Android), and Microsoft Store (Windows) behind one interface. Add a server ping for entitlement checks.
Blog post dives deeper: implement native APIs with MVVM, handling restores seamlessly (.NET Blog). Your file sync? Layer server validation on top—no more pure device licenses.
Pro tip: Test restores early. Users hate friction, but reviewers hate violations more.
Sources
- App Review Guidelines - Apple Developer
- App Store Review Guideline updates - Apple Developer
- App Store Review Guidelines discussion - Apple Developer Forums
- iOS App Store Review Guidelines - CrustLab
- Understanding Google Play’s Payments policy
- Payments - Play Console Help
- Answering your FAQs about Google Play billing - Android Developers Blog
- License key discussion - Apple Developer Forums
- iOS App license per device - Stack Overflow
- Cross-Platform Billing in .NET MAUI - .NET Blog
- .NET MAUI BillingService Sample - Microsoft Learn
Conclusion
Syncing desktop Pro licenses to mobile without IAP is a fast rejection ticket—both Apple and Google call it a bypass. Go server-backed for seamless cross-platform magic, or stick to restores for simplicity. In .NET MAUI, Microsoft’s samples make it straightforward; prioritize that over risky device hacks. Users get continuity, you get approved—win-win.