# Overview (/sdk/ios/overview)

How the PayPal Mobile SDK v3.0.0 fits into your iOS app, who's responsible for what, and where to go next.



Accept PayPal, Pay Later, PayPal Credit, and card payments in your iOS app with PayPal Mobile SDK v3.0.0.

A native SDK is one actor among several in a checkout integration. Your iOS app, server, PayPal, and the buyer's device each have different responsibilities.

## Responsibility model [#responsibility-model]

| Responsibility                                                                                  | Owner                                       |
| ----------------------------------------------------------------------------------------------- | ------------------------------------------- |
| Create and capture the orders; create setup or tokens to save payment methods through Orders v2 | Your server                                 |
| Obtain a client ID and merchant ID and enable the payment methods on your account               | You, through the PayPal Developer Dashboard |
| Render the PayPal button, or your own card fields; register return links                        | Your app                                    |
| Prepare the checkout session, present PayPal and 3D Secure challenges, and return the result    | The SDK                                     |
| Route the buyer back to your app through Universal Links                                        | The device and operating system             |

The SDK does not:

* Create or capture orders. Your server does this through Orders v2.
* Provide a card-entry UI. Your app builds the card fields and handles input validation.
* Set return or cancel URLs in the order. In v3, you pass these URLs to the SDK through the URL configuration.
* Determine app-switch eligibility. PayPal makes that decision server-side; the SDK presents the resulting flow.

## The checkout flow [#the-checkout-flow]

Each payment method follows the same flow, with a few differences:

1. Your app shows the buyer a way to pay, such as a PayPal button, or your card form.
2. On intent, your app creates the order on your server. For PayPal, your app also prepares the checkout session first.
3. Your app passes the order ID to `start()` or `approveOrder()`.
4. The buyer approves the payment in the PayPal app, an in-app browser, or, for cards, a 3D Secure challenge when required.
5. The buyer returns to your app. The SDK delivers a success, cancel, or failure result.
6. On success, your server captures the order or you store the setup token.

PayPal uses a session-first pattern: call `createPayPalSession()` before `start()` or `vault()`. Card skips the PayPal session, ships no UI, and resolves its 3D Secure challenge in-process through `ASWebAuthenticationSession`. Each integration guide documents its specific flow.

## Key behaviors and rules [#key-behaviors-and-rules]

* Call `createPayPalSession()` before `start()` or `vault()` for PayPal. Otherwise, the SDK returns a session-not-started error.
* Treat cancellation as a normal outcome, not an error. Return the buyer to checkout.
* Render buttons and other payment UI without an order. Create and pass an order only when the buyer starts or approves the payment.
* Make sure the return and cancel URLs passed to the SDK match the associated domain your app is registered for. The host and path prefix must be consistent.

## Find the right guide [#find-the-right-guide]

For a new integration, start with the installation and setup guide. Then, follow the guides for the payment methods you want to support.

| If you want to…                                                                | Go to                                                           |
| ------------------------------------------------------------------------------ | --------------------------------------------------------------- |
| Install and initialize the SDK                                                 | [Install and set up](/sdk/ios/install-and-setup)                |
| Update an existing v2.x integration to v3                                      | [Update iOS SDK to v3.0.0](/sdk/ios/update-ios)                 |
| Accept a PayPal payment, including Pay Later and PayPal Credit                 | [PayPal Checkout](/sdk/ios/add-payment-methods/paypal-checkout) |
| Add and configure PayPal payment buttons                                       | [Buttons](/sdk/ios/add-payment-methods/payment-buttons)         |
| Accept a card payment and save the card                                        | [Cards](/sdk/ios/add-payment-methods/card)                      |
| Diagnose a build or integration failure                                        | [Troubleshooting](/sdk/ios/troubleshooting)                     |
| Understand the server-side order lifecycle: create, authorize, capture, refund | [Orders v2 API reference](/api/orders/v2/)                      |
