**Last updated**: 30 October 2025 | [**Change log**](/products/checkout/ios/changelog/) # iOS SDK Take payments with our [certified PCI-SSF compliant](https://listings.pcisecuritystandards.org/documents/SSF_At-a-Glance.pdf) iOS SDK, and qualify for SAQ-A - the lowest PCI compliance level. Create your own uniquely styled and branded checkout form by integrating our SDK into your native app. Read more about the Checkout SDK and the supported payment journeys [here](/products/checkout). Note Make yourself familiar with our [API principles](/products/reference/api-principles) to ensure a resilient integration. Important Please ensure you integrate the SDK as advised in our documentation or you might be subject to additional PCI compliance and won't meet the SAQ-A compliance level. ## How does it work? We are securing your customer's payment details by creating a session. You can then either apply the session directly in the [Payments API](/products/payments/card-payment) or [create a token](/products/verified-tokens/create-verified-token) for use with our Modular APIs. ### What is a session? A `session` is a unique identifier for your customer's card details, generated by the SDK. ## Get our SDK Our iOS SDK is available via [Cocoapods](https://cocoapods.org/) as well as [Swift Package Manager](https://www.swift.org/package-manager/#:~:text=The%20Swift%20Package%20Manager%20is,in%20Swift%203.0%20and%20above.). Only our latest iOS SDK versions from 2.4.0 will be available on Swift Package Manager. #### Cocoapods Once you've installed and configured your project to use Cocoapods, add the following line to your projects `Podfile` to add our SDK. ``` pod 'AccessCheckoutSDK' ``` Here is a link to the homepage of our SDK on Cocoapods: * [Access Checkout iOS SDK on Cocoapods](https://cocoapods.org/pods/AccessCheckoutSDK) #### Swift Package Manager Support for Swift Package Manager is available in the Access Checkout iOS SDK from version 2.4.0 onwards. Once you've configured your project to use Swift Package Manager, you can add the iOS SDK as a dependency in either of the two ways: * by [editing the Package.swift file](https://www.swift.org/package-manager/#importing-dependencies) or * by [using XCode](https://developer.apple.com/documentation/swift_packages/adding_package_dependencies_to_your_app) You must then specify the URL of the [Access Checkout iOS SDK GitHub repository](https://github.com/Worldpay/access-checkout-ios) and the version `4.0.0`. ## Import You must import the Access Checkout module to have access to all the classes, methods and functions you need to create your form and generate sessions. Here is an example of how you would import the Access Checkout module into your Swift file. ```swift import AccessCheckoutSDK ``` After importing the Access Checkout module, we recommend you extend your `ViewController` with `UIViewController`. ```swift class ViewController: UIViewController { ... ``` ## Additional security measures #### Obfuscate your app code We highly recommend that you obfuscate your app code using the [tools](https://www.google.co.uk/search?q=ios%20code%20obfuscation%20tools) available on the market to make it more difficult for anyone to reverse-engineer your code. #### Verify the integrity of the Cocoapods dependency We recommend that you verify the integrity of the iOS source code that has been downloaded by Cocoapods after installation of the AccessCheckoutSDK pod. To do this, run the command below in the directory that contains your Podfile to get a checksum of the AccessCheckoutSDK pod sources. Then you must make sure that the checksum displayed matches checksum `c2bdcb1d52924329ce10b033fe877e5f6a4ce4a198454894273c38e40b0a4598`. ``` find Pods/AccessCheckoutSDK/ -type f -exec shasum -a 256 {} \; | awk '{print $1}' | shasum -a 256 ``` ## What to do next Payments API Enterprise SMB (Worldpay eCommerce) [**Create a session to pay with a card**](/products/checkout/ios/v3/card-only) 1. [Submit card details to create a `session`](/products/checkout/ios/v3/card-only). 2. Apply the session in the [payment request](/products/payments/card-payment). [**Create a session for CVC only and pay with a stored token**](/products/checkout/ios/v3/cvc-only) 1. [Submit the CVC to create a session](/products/checkout/ios/v3/cvc-only). 2. Apply the `sessions.cvc` and stored token in the [payment request](/products/payments/use-a-stored-card). Modular APIs Enterprise See our guides on how to create sessions you can use to take a payment: Note For one-time payments, you would need to [delete the token](/products/tokens/querying-and-updating-tokens#deleting-tokens) after you take the payment. [**Create a session to pay with a card**](/products/checkout/ios/v3/card-only) 1. [Submit card details to create a session](/products/checkout/ios/v3/card-only). 2. Create a [verified token](/products/verified-tokens/create-verified-token). 3. [Take a payment](/products/card-payments/authorize-a-payment) with this token. [**Create sessions to pay with a card and CVC**](/products/checkout/ios/v3/card-and-cvc) 1. [Submit card details and CVC to create two separate sessions](/products/checkout/ios/v3/card-and-cvc). 2. Create a [verified token](/products/verified-tokens/create-verified-token) with your card `session`. 3. Use your CVC `session` and verified token in our `card/checkout` payment instrument to [take a payment](/products/card-payments/authorize-a-payment). [**Create a session for CVC only and pay with a stored token**](/products/checkout/ios/v3/card-and-cvc#create-a-session-for-cvc-only) 1. [Submit the CVC to create a session](/products/checkout/ios/v3/cvc-only). 2. Use your CVC `session` and stored verified token in our `card/checkout` payment instrument to [take a payment](/products/card-payments/authorize-a-payment).