Stripe iOS SDK
Clone or download
csabol-stripe Merge pull request #1124 from stripe/csabol/nb_encoding
Fixes encoding for Norwegian Bokmal
Latest commit b71ffd8 Jan 11, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Adjust issue / pull request template (#960) Jun 7, 2018
Example Update all versioned links to example-ios-backend (#1040) Nov 13, 2018
FauxPasConfig Renable fauxpas for static target and disable APIAvailability Dec 11, 2017
Stripe.xcodeproj Fixes encoding for Norwegian Bokmal Jan 10, 2019
Stripe.xcworkspace Apply Xcode 9.4 Changes (#963) Jun 8, 2018
Stripe fixup to indentation in comment Jan 3, 2019
StripeiOSResources revert info.plist change for resources bundle Dec 1, 2016
Tests Add STPPaymentCardTextFieldDelegate method for the return key being p… Jan 2, 2019
ci_scripts Run `STPImageLibraryTests` on iOS 9 using new `AssertEqualImages` mac… Aug 6, 2018
docs Regenerate docs with `ci_scripts/` using jazzy … Nov 14, 2018
.clang-format introduce style defaults with clang-format Oct 22, 2014
.cocoapods.yml update pod try to open UI Examples Jul 19, 2017
.gitignore Git ignore undocumented.json Aug 7, 2017
.jazzy.yaml Fix spellcheck lint for helper functions info / die, Set default GitH… Aug 15, 2017
.phraseapp.yml Add phraseapp push/pull scripts Aug 25, 2016
.travis.yml Expand Test Execution Coverage (#979) Jul 12, 2018 Update CHANGELOG with v14.0.0 items Nov 14, 2018 Move to root directory Aug 3, 2017
Cartfile.private introduce HTTP stubbing for card functional tests Nov 25, 2018
Cartfile.resolved introduce HTTP stubbing for card functional tests Nov 25, 2018
LICENSE Add LICENSE Nov 12, 2012 Update MIGRATING for removal of `STPPaymentIntent.returnUrl` Nov 8, 2018 Update version to v14.0.0 Nov 14, 2018 Change Styleguide around acronym capitalization Nov 8, 2018
Stripe.podspec Update version to v14.0.0 Nov 14, 2018
VERSION Update version to v14.0.0 Nov 14, 2018
install_cardio.rb fix rename error in install_cardio.rb Jul 19, 2017 fix references to old example names Jul 19, 2017

Stripe iOS SDK

Travis CocoaPods Carthage compatible CocoaPods CocoaPods

The Stripe iOS SDK makes it quick and easy to build an excellent payment experience in your iOS app. We provide powerful and customizable UI screens and elements that can be used out-of-the-box to collect your users' payment details. We also expose the low-level APIs that power those UIs so that you can build fully custom experiences. See our iOS Integration Guide to get started!

Note: We've greatly simplified the integration for STPPaymentContext in v11.0.0. If you integrated STPPaymentContext prior to this and you're interested in migrating, please see our migration guide.


Simplified Security: We make it simple for you to collect sensitive data such as credit card numbers by tokenizing payment information. This means the sensitive data is sent directly to Stripe instead of passing through your server. For more information, please see our Integration Security Guide.

Apple Pay: We provide a seamless integration with Apple Pay that will allow your customers to pay using payment methods from their Wallet. For more information, please see our Apple Pay page. We also have a tutorial for our Apple Pay Utilities.

Native UI: We provide out-of-the-box native screens and elements so that you can get started quickly without having to think about designing the right interfaces. See our Standard Integration Guide for the most hands off approach. Please see our Custom Integration Guide if you want a little more control.

Card Scanning: We support card scanning capabilities using See our Card IO section.


We recommend that you install the Stripe iOS SDK using a package manager such as Cocoapods or Carthage. If you prefer to link the library manually, please use a version from our releases page because we consider the master branch to be unstable.

If you're reading this on, please make sure you are looking at the tagged version that corresponds to the release you have installed. Otherwise, the instructions and example code may be mismatched with your copy. You can read the latest tagged version of this README and browse the associated code on GitHub using this link.


The Stripe iOS SDK is compatible with apps supporting iOS 9 and above and requires Xcode 9 to build from source.

Getting Started


Please see our iOS Integration Guide which explains everything from SDK installation, to tokenizing payment information, to Apple Pay integration, and more. For more fine-grained documentation for all of the classes and methods, please see our full Stripe iOS SDK Reference.


There are 3 example apps included in the repository:

Card IO

To add card scanning capabilities to our prebuilt UI components, you can simply install alongside our SDK. You'll also need to set NSCameraUsageDescription in your application's plist, and provide a reason for accessing the camera (e.g. "To scan cards").

To try this out, you can run ./install_cardio.rb, which will download and install in Standard Integration (Swift). Now, when you run the example app on a device, you'll see a "Scan Card" button when adding a new card.


We welcome contributions of any kind including new features, bug fixes, and documentation improvements. Please first open an issue describing what you want to build if it is a major change so that we can discuss how to move forward. Otherwise, go ahead and open a pull request for minor changes such as typo fixes and one liners.

Running Tests

  1. Install Carthage (if you have homebrew installed, brew install carthage)
  2. From the root of the repo, install test dependencies by running carthage bootstrap --platform ios --configuration Release --no-use-binaries
  3. Open Stripe.xcworkspace
  4. Choose the "StripeiOS" scheme with the iPhone 6, iOS 11.2 simulator (required for snapshot tests to pass)
  5. Run Product -> Test

Migrating from Older Versions