MOB-48Recommended US, EU, JP, KR law
Link to outside payments only under each storefront's program
Show a link or button to your own checkout for digital goods only in storefronts whose store rules allow it. Record for each storefront the program you use and the date you joined it.
Region
United States (US), European Union (EU), Japan (JP), South Korea (KR). The duty comes from the law there. The rule applies only when the project serves people there, and its Applies when also holds.
Review by
2027-04-30
How to do it
The exceptions come from court orders and national laws, so they differ per country and change often. In the United States, Apple's guidelines let apps show buttons and links to other ways to pay, with no entitlement. Google Play's US external content links and alternative billing programs need enrolment in the Play Console. In the EU, the Digital Markets Act lets apps offer another payment processor beside Apple's In-App Purchase, or link to an outside offer. Google Play offers alternative billing in the EEA. In Japan, the Mobile Software Competition Act lets apps on iOS 26.2 and later use another processor or link to a web offer. There, In-App Purchase must appear at the same time as the other method. In South Korea, Apple's StoreKit External Purchase Entitlement allows another payment provider only in a new app sold on the Korean storefront alone. That app cannot also use In-App Purchase. Google Play runs its own alternative billing program for South Korea. Each program sets its own fees, disclosure sheets and monthly sales reports. Read the terms when you join and at each review date. Store sales follow sell digital goods through the store's billing.
Examples
Plain text example
let linkOutStorefronts: Set<String> = ["USA"]
func showsWebCheckout() async -> Bool {
guard let storefront = await Storefront.current else { return false }
return linkOutStorefronts.contains(storefront.countryCode)
}
Kotlin example
val linkOutCountries = setOf("US")
fun checkWebCheckout(billingClient: BillingClient, onResult: (Boolean) -> Unit) {
billingClient.getBillingConfigAsync(GetBillingConfigParams.newBuilder().build()) { result, config ->
onResult(result.responseCode == BillingClient.BillingResponseCode.OK && config?.countryCode in linkOutCountries)
}
}
How to check
A table in the repository lists each storefront where the app links out, with the program name and the date joined. A test build set to a storefront outside the table shows no link to outside checkout.
Sources
- App Review Guidelines 3.1.1(a) Link to Other Purchase Methods
- Apple, Distribution in Japan
- Google Play, External content links program
Related rules
- MOB-4 Sell digital goods through the store's billing in Mobile apps
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/mobile-apps/store-review-and-listing/storefront-payment-programs">Agent Wranglers mobile apps playbook</a>. In code you write, add a comment next to it with the same link.