# 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

- [Sign in to App Store Connect ](https://appstoreconnect.apple.com/)
- Go to: "**Agreements, Tax, and Banking"**
- Accept: **"EU Digital Markets Act Addendum"**

##### ✅ 3. Apply for the External Link Entitlement

- Fill the form here:🔗 <a class="cursor-pointer" data-end="951" data-start="892" rel="noopener" target="_new">https://developer.apple.com/support/dma-and-apps-in-the-eu/</a>
- 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:

<p class="callout success">Accelerate acceptance by providing a video or prototype (e.g. Figma, Loom)</p>

<p class="callout success">Do not offer promotions or lower prices at checkout outside the App Store — Apple prohibits this</p>

<p class="callout success">Do not include a link to the payment page in the app description in the App Store — only within the app</p>

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.

<details id="bkmrk-html-code-sample-%C2%A0"><summary>HTML code sample</summary>

```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>

```

<p class="callout success">**Tip:** The checkout link should contain a query param compliant with Apple requirements (e.g. ?appleExternalPurchase=yes)</p>

</details><details id="bkmrk-swift-code-sample-%C2%A0"><summary>SWIFT code sample</summary>

```swift
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)
    }
}

```

<p class="callout success">**Tip:** You must use UIApplication.shared.open—not WebView.</p>

<p class="callout success">**Tip:** The URL must lead to a disclaimer page (like the HTML above), not directly to the checkout page.</p>

</details></body></html>