- iOS 15+
- Xcode 16+
- Swift 6
- arm64
⚠️ Note
We dropped the support for x86. As of April 2025, Apple requires all apps submitted to the App Store to be built by Xcode 16+ which can’t be downloaded on an Intel chip MacBook. Hence there is no use case for the old architecture. We only support arm64 architecture.
For detailed integration steps, refer to our
official documentation
🔐 3DS authentication can be enabled by setting it to true during Configuration initialization.
threeDS: .init(enabled: true, attemptN3D: true)attemptN3D You can choose to automatically downgrade your payment to a non-3DS payment if there are any technical issues during the 3DS authentication process that would otherwise cause the payment to fail. To do this, set the attemptN3D field in your request to true and we'll automatically attempt to process the payment without 3DS authentication More info
↗️
⚠️ Important
SPM (Swift Package Manager) and CocoaPods can usually coexist in the same project without issues. That said, since CocoaPods is now in maintenance mode, the iOS team made a tech decision to officially support only SPM going forward. It’s simpler to manage and already works well alongside CocoaPods if needed.
Swift Package Manager
If you've never used it before, get started with Apple's step by step guide into adding package dependencies
SPM sometimes has caching issues, it's better to do some clean up before upgrading to a new release.
- close Xcode
- In terminal:
- Run
brew install git-lfs - cd to your project folder then run these to clear cache
rm -rf ~/Library/Caches/org.swift.swiftpm
rm -rf ~/Library/org.swift.swiftpm
rm -rf ~/.swiftpm
rm -f ~/.swiftpm/configuration/mirrors.json
rm -f ~/.swiftpm/configuration/registries.json
rm -rf .build .swiftpm
rm -f Package.resolved
swift package reset
rm -rf ~/Library/Caches/com.apple.dt.Xcode
rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache.noindex
rm -rf ~/Library/Developer/Xcode/DerivedData/PrecompiledHeaders
rm -rf ~/Library/Developer/Xcode/Archives
rm -rf ~/Library/Developer/Xcode/Products
rm -rf ~/Library/Caches/com.apple.dt.Xcode/SourcePackages
rm -rf ~/Library/Developer/Xcode/SourcePackages
rm -rf ~/Library/Caches/com.apple.nsurlsessiond
rm -rf ~/Library/Caches/com.apple.CFNetwork
- Build the project using
xcodebuild -resolvePackageDependencies
Please use our Dashboard to create sandbox
- processing_channel_id
- secret_key
- public_key
-
After cloning the repository, navigate to
SampleApplication/SampleApplication/Configuration. You will find the following files:-
env-example.xcconfig: A template file containing dummy environment variables, which is tracked in source control. -
EnvironmentVars.stencil: A code generation template used by Sourcery↗️
-
-
Open a terminal and navigate to the repository’s root folder:
cd path/to/repository -
Run the initialization script:
bash .github/scripts/init-env-vars.sh
-
Locate the newly created
env.xcconfigfile (excluded from version control) and update it with your Checkout.com public and private keys. -
Generate the required Swift environment variables:
bash .github/scripts/codegen-env-vars.sh
-
This script will generate
EnvironmentVars.generated.swift, which will be used in the project. -
Open the Sample Application in Xcode and run it.
-
After completing the setup, your configuration files should resemble the structure shown below:
-
Set the
processingChannelIDvalue when creating aPaymentSessionRequestin the sample application.
⚠️ Important
The secret key is embedded in the Sample Application only for demonstration purposes. Never include a secret key in your production application. Instead, always use your backend API to generate a payment session securely.
Find our CHANGELOG

