---
title: "Out-of-app payments on iOS"
description: "Redirect your users to a website to complete payments for their in-app purchases."
url: "https://docs.adyen.com/online-payments/out-of-app-payments-on-ios"
source_url: "https://docs.adyen.com/online-payments/out-of-app-payments-on-ios.md"
canonical: "https://docs.adyen.com/online-payments/out-of-app-payments-on-ios"
last_modified: "2023-06-21T22:37:00+02:00"
language: "en"
---

# Out-of-app payments on iOS

Redirect your users to a website to complete payments for their in-app purchases.

[View source](/online-payments/out-of-app-payments-on-ios.md)

[Apple's updated App Review Guidelines](https://developer.apple.com/news/?id=9txfddzf) allow linking to an external website from your app to let your users complete their payments for in-app purchases. This enables you to have more control over your payment flows.

## Requirements

Before you begin, take into account the following requirements, limitations, and preparations.

| Requirement                                                               | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ------------------------------------------------------------------------- |   |
| **Integration type**                                                      | To redirect shoppers from your app to the browser to complete payments, you need one of the following setups:- A [Web Drop-in/Components or API-only integration that uses the Advanced flow](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=Drop-in\&version=latest) integration
- A [Web Drop-in/Components integration that uses the Sessions flow](/online-payments/build-your-integration/sessions-flow/?platform=Web\&integration=Drop-in\&version=latest)
- A [Hosted Checkout](/online-payments/build-your-integration/sessions-flow/?platform=Web\&integration=Hosted%20Checkout) integration                                                                                                                                                     |
| **[API credential roles](/development-resources/api-credentials/roles/)** | Make sure that your API credential has the **Checkout webservice role**.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **[Webhooks](/development-resources/webhooks/)**                          | Subscribe to Standard webhooks.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **Limitations**                                                           | * We only recommend to use this solution if you are based in the United States (US), or if you are based in another country/region, but accept payments in the US App Store for digital goods and services. For other types of purchases, use our native iOS Drop-in/Components solution with the [Sessions](/online-payments/build-your-integration/sessions-flow/?platform=iOS\&integration=Drop-in\&version=latest) or [Advanced](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=Drop-in\&version=latest) flow.
* If you redirect your shoppers to a website to accept subscription payments, you need to manage subscriptions yourself. See our [Tokenization](/online-payments/tokenization) documentation to learn more about subscription payments. |

## How it works

1. You offer in-app purchases in your native iOS app.
2. The shopper selects the option to make a purchase, for example by selecting a button in your app.
3. You redirect the shopper to a website where they can complete the payment.
4. The shopper completes their payment on the website.
5. You redirect the shopper back to your app, and show them a purchase confirmation.

To let your shoppers pay on a website, you can use a Web integration, or our Hosted Checkout solution.

[![](/user/pages/docs/02.online-payments/45.out-of-app-payments-on-ios/how_it_works_iOS.png)](/user/pages/docs/02.online-payments/45.out-of-app-payments-on-ios/how_it_works_iOS.png)

## Redirect your shoppers for an out-of-app payment

We offer two solutions to redirect your shoppers to an external website in a mobile browser from your iOS app to complete their payment:

* **Web Drop-in/Components**: redirect your shoppers to your existing web checkout page in the mobile browser. This option requires you to build your own Web integration with Adyen, and implement your own logic to return the shopper back to your app.
* **Hosted Checkout**: redirect the shopper to an Adyen-hosted website where they make the payment. This option requires lower development effort, and the shopper is automatically redirected back to your app after they complete the payment.

Refer to our [comparison of Hosted Checkout and Web integrations](/online-payments/build-your-integration/sessions-flow/?platform=Web\&integration=Hosted%20Checkout#start-integrating-with-web-hosted-checkout) to learn more about the differences between the solutions.

### Tab: Web Drop-in/Components

You can choose the [server-side flow](/online-payments/build-your-integration#choose-your-server-side-implementation) that you want to implement and use our guides to integrate with Web Drop-in/Components for the [Sessions flow](/online-payments/build-your-integration/sessions-flow/?platform=Web\&integration=Drop-in\&version=latest) or the [Advanced flow](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=Drop-in\&version=latest).

To accept out-of-app payments with our Web Drop-in/Components:

1. When your shopper proceeds to make a purchase in your app, for example by selecting **Buy**, redirect your shopper to your existing checkout page in a mobile browser.

2. Display the payment details for the in-app purchase on your checkout page.

3. When the shopper proceeds to pay, handle the payment flow. Depending on your server-side flow, this consists of either:

   * A single [/sessions](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions) request.
   * Subsequent [/paymentMethods](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods), [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments), and [/payments/details](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/details) requests.

4. After the shopper completes the payment flow on your website, redirect them to your app. We recommend to implement a logic that automatically redirects your shoppers upon payment completion. Alternatively, implement a button for your shoppers to select when they want to go back to your app.

5. Get the payment outcome in an AUTHORISATION webhook.

### Tab: Hosted Checkout

Use our [Hosted Checkout guide](/online-payments/build-your-integration/sessions-flow/?platform=Web\&integration=Hosted%20Checkout) to build your integration. The payment flow for out-of-app payments with Hosted Checkout is as follows:

1. When your shopper proceeds to make a purchase in your app, for example by selecting **Buy**, make a [/sessions](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions) request.
2. In the [/sessions](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions) request, specify your app URL in the `returnUrl` field.
   * Use the custom URL for your app, for example, `my-app://adyen`, to take the shopper back to your app after they complete the payment outside your app. For more information on setting a custom URL scheme, read the [Apple Developer documentation](https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app).
3. From the [/sessions](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions) response, save the URL for the Hosted Checkout page.
4. Redirect your shopper from your app to the URL for the Hosted Checkout page you saved in the previous step.\
   After your shopper completes the payment on the Hosted Checkout page, your shopper is redirected to your app using the `returnUrl` you specified in your [/sessions](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions) request.
5. Get the payment outcome in an AUTHORISATION webhook.

## Test and go live

Before going live with your integration, use our [test card numbers](/development-resources/test-cards-and-credentials/test-card-numbers) to test that you make a successful out-of-app payment.

## See also

* [Build your integration](/online-payments/build-your-integration/)
* [Result codes](/online-payments/build-your-integration/payment-result-codes/)
* [Go-live checklist](/online-payments/go-live-checklist/)
