github stripe/stripe-terminal-ios 5.0.0

one day ago

Version 5.0.0 is a major update with significant breaking changes. Please consult the v5 Migration Guide for detailed instructions on updating your integration.

  • Built with Xcode 26.0, Swift version 6.2.
  • Minimum iOS version requirement increased from 14.0 to 15.0.

⚠️ Breaking changes required

New Features & Previews

  • New: Simplified payment integration - Added processPaymentIntent, processSetupIntent, and processRefund. These new methods combine the collect and confirm steps into a single operation.
  • New: Swift async variants - Added modern async versions for asynchronous Terminal methods, allowing to await results directly instead of using completion blocks. Operation cancellation is handled via Swift Task cancellation.
  • New: Added a reconnecting enum value to SCPConnectionStatus. This new status is used specifically when an auto-reconnect operation is in progress.
  • Update: During a connection attempt, the Terminal.connectedReader property will now remain nil until the connection completes successfully. Previously, the property would be populated while the connection was still in progress.
  • Preview: Collect non-payment data from NFC instruments and magnetic Stripe cards. The SDK now returns new, specific subclasses for this data: SCPMagstripeCollectedData and SCPNfcUidCollectedData.
    • Fix: Resolved an issue where collecting magstripe data would cause an error on smart readers.
    • To request access to this private preview, please email terminal-collect-data@stripe.com.
  • Preview: Mail Order / Telephone Order (MOTO) Payments. The moto boolean has been replaced by a dedicated SCPMotoConfiguration object.
    • To request access to this private preview, please contact Stripe Support.

Platform & Initialization

  • Update: setTokenProvider has been replaced with Terminal.initWithTokenProvider method. You must call this method before using the Terminal.shared instance.
  • Update: Debug symbols (dSYMs) are no longer bundled with the XCFramework, reducing the overall framework size.
  • Update: The SCPCancelable completion block is now guaranteed to be called after an operation completes. Every call to cancel will have its own completion block invoked when the cancellation is finished.
  • Update: clearCachedCredentials now requires that no reader is connected. The method has been updated to return a Result in Swift (or a BOOL with an NSError in Objective-C) to indicate success or failure.

Reader Discovery & Connection

  • Update: When the location permission status is undetermined, the SDK will now wait up to 2 minutes for the user to respond to the permission prompt before failing with SCPErrorLocationServicesDisabled.
  • Update: init and new are no longer available for DiscoveryConfiguration. They must now be initialized using their associated builder.

Payment & Data Collection

Deprecation

Renaming & Refactoring

Don't miss a new stripe-terminal-ios release

NewReleases is sending notifications on new releases.