Enabling Apple Pay for selling digital products
This document is intended for clients who offer their applications on iOS devices. These are third-party apps, meaning they are developed independently and not published by Apple.
The document provides a step-by-step guide to enabling payments via external payment service providers and outlines the necessary steps to complete the integration.
- Introduction
- Rules and commissions for selling digital content in iOS apps
- Meeting Apple requirements guide
Introduction
If you are a digital goods seller inside the European Union with an iOS application and would like to offer payment methods other than Apple Pay in your application, you can read here how to do so. You can also save up to 18,5% on payment commission on each transaction.
Within the European Union, it is now possible to bypass this restriction. As of 2024, under the EU Digital Markets Act (DMA), Apple allows the use of external payment service providers after completing certain compliance steps, which are described in this document.
This document also outlines the differences in costs incurred by a store depending on whether it uses Apple Pay (In-App Purchase) or an external payment service provider such as Paytool.
Rules and commissions for selling digital goods in iOS apps
Meeting Apple requirements guide
Rules and commissions for selling digital content in iOS apps
The following information applies only to the sale of digital content (np. subskrypcje).
The sale of physical goods is not subject to Apple commissions.
Tip: If you sell physical goods, such as clothing, you may use external payment service providers without having to meet the additional Apple requirements described below.
📱 Apple Pay & Fees for Digital Subscriptions
Apple charges a commission if an app uses Apple Pay through In-App Purchase (IAP) to sell digital content — even after the Digital Markets Act (DMA) comes into effect. This means that if you use Apple Pay to sell digital goods, you must still pay the same commission rate as before the introduction of the DMA. Commission rates:
-
30% – for new subscribers or large businesses,
-
15% – after the first year of subscription or for small businesses.
Whether a business is classified as “small” or “large” is determined by annual transaction revenue within the App Store.
| App Type | Business classification |
|---|---|
| App with less than 1 million USD annual revenue | Small |
| App with more than 1 million USD annual revenue | Large |
🔄 Alternative Payment Options (as of March 2024)
Since March 2024, Apple has allowed alternatives to InApp (IAP) around the UE. This means that since March 2024, you can use external payment service providers for selling digital content. In this case, Apple still charges a commission on each transaction; however, the rates are significantly lower (as shown in the table below). This also requires implementing the integration in accordance with Apple’s guidelines described in the section how to enable LOO payment guidence.
| Payment model | Apple commission | Paytool commission | Requires Apple approval? | Requires additional integration? | Can use Paytool? | Conditions / Limitations |
|---|---|---|---|---|---|---|
| Apple Pay (IAP) standard Apple Pay payment | 15% (small) or 30% (large) | 0% | ✅ Automatically | ❌ No | ❌ No | Built-in within App Store |
| Link-Out Option (LOO) our suggested payment model | 10% (small) or 17% (large) | 1-2% | ✅ Yes | ✅ Yes | ✅ Yes | User is redirected to a browser |
The table shows a comparison of commission amounts for a 1000 EUR transaction, assuming that Paytool charges a 1.5% transaction fee:
| Payment model | Apple (15%) | Apple (30%) | Apple (10%) | Apple (17%) | Paytool (1.5%) | Sum: small company | Sum: large company |
|---|---|---|---|---|---|---|---|
| Apple Pay (IAP) | 150.00 EUR | 300.00 EUR | – | – | – | 150.00 EUR | 300.00 EUR |
| Link-Out Option (LOO) | – | – | 100.00 EUR | 170.00 EUR | 15.00 EUR | 115.00 EUR | 185.00 EUR |
Meeting Apple requirements guide
In this section, you will find information on how to obtain Apple’s approval to use the Link-Out Option (LOO) in your iOS application. All steps are listed in the order you should follow.
✅ 1. Make sure your app qualifies for LOO
-
You sell only digital content/services (e.g., subscriptions, premium access, tokens)
-
Your app is available in European Union countries
-
You do not offer the same content via IAP (In-App Purchase) — LOO cannot coexist with IAP
✅ 2. Accept the required documents in App Store Connect
-
Go to: "Agreements, Tax, and Banking"
-
Accept: "EU Digital Markets Act Addendum"
✅ 3. Apply for the External Link Entitlement
-
Fill the form here:🔗 https://developer.apple.com/support/dma-and-apps-in-the-eu/
- Add:
-
Your app’s name
-
A list of EU countries where the feature will be active
-
A link to the external checkout (e.g., via Paytool)
-
Screenshots showing the UX flow, including:
-
Screen with the "Buy on the Website" button
-
Screen with the required disclaimer
-
View of the payment page (checkout outside the app)
-
-
✅ 4. Prepare a compliant in-app UX
-
Add a button: “Buy on the Website” or “Buy outside the App Store”
The button must open Safari (NOT a WebView)
After clicking, the user must see a disclaimer screen:
-
You continue the purchase outside the App Store. Apple is not responsible for the privacy or security of transactions made on this site.
-
The user must manually confirm the intention to continue (e.g., "Continue" or "Cancel")
✅ 5. Implementation of the checkout link
The link must contain the required Apple parameters (e.g. appleExternalPurchase=true)
-
It must lead to the hosted PSP page (Paytool address)
-
The page must work correctly in Safari and must not contain redirects to other applications or prompts to install anything
✅ 6. After obtaining Apple permission
-
You will receive External Purchase Link Entitlement
-
Add it to the app configuration (in Xcode or Plist)
-
Activate the feature only for users from EU countries
✅ 7. Submit the new version of the application for review
-
Attach a note informing Apple that you are using LOO in accordance with the DMA
-
Include screenshots or a video of the full UX flow
-
Indicate that you Paytool Verestro is a registered PSP
🟨 Tips:
Accelerate acceptance by providing a video or prototype (e.g. Figma, Loom)
Do not offer promotions or lower prices at checkout outside the App Store — Apple prohibits this
Do not include a link to the payment page in the app description in the App Store — only within the app
There are example code samples in HTML and Swift that displays the Apple-required disclaimer view before redirecting the payer to an external payment gateway such as Paytool.
HTML code sample
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Ostrzeżenie przed przekierowaniem</title>
<style>
body {
font-family: sans-serif;
padding: 2em;
background-color: #f9f9f9;
}
.container {
max-width: 480px;
margin: auto;
background-color: #fff;
padding: 2em;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
button {
width: 100%;
margin-top: 1.5em;
padding: 1em;
font-size: 1em;
border: none;
border-radius: 8px;
background-color: #007aff;
color: white;
cursor: pointer;
}
.cancel {
background-color: #ccc;
margin-top: 0.5em;
}
</style>
</head>
<body>
<div class="container">
<h2>You are leaving this application</h2>
<p>
You will be redirected to an external site to complete your purchase. Apple is not responsible for the privacy or security of this transaction.
</p>
<button onclick="window.location.href='<paytoolUrl>/token=abc123&appleExternalPurchase=yes'">
Continue payment
</button>
<button class="cancel" onclick="history.back()">Return</button>
</div>
</body>
</html>
Tip: The checkout link should contain a query param compliant with Apple requirements (e.g. ?appleExternalPurchase=yes)
SWIFT code sample
import UIKit
import SafariServices
class SubscriptionViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let buyButton = UIButton(type: .system)
buyButton.setTitle("Buy through the site", for: .normal)
buyButton.addTarget(self, action: #selector(openExternalPurchaseDisclaimer), for: .touchUpInside)
buyButton.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(buyButton)
NSLayoutConstraint.activate([
buyButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
buyButton.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])
}
@objc func openExternalPurchaseDisclaimer() {
guard let url = URL(string: "<paytoolUrl>/disclaimer.html") else { return }
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
Tip: You must use UIApplication.shared.open—not WebView.
Tip: The URL must lead to a disclaimer page (like the HTML above), not directly to the checkout page.