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

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:

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
✅ 2. Accept the required documents in App Store Connect
✅ 3. Apply for the External Link Entitlement
✅ 4. Prepare a compliant in-app UX
✅ 5. Implementation of the checkout link
✅ 6. After obtaining Apple permission
✅ 7. Submit the new version of the application for review
🟨 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.