Skip to content

Releases: stripe/stripe-terminal-ios

5.0.0

03 Nov 17:04

Choose a tag to compare

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

4.7.3

20 Oct 15:30

Choose a tag to compare

New

  • Added support for S710 and S710 devkit readers.

Fixes

  • Fixes an issue where collecting magstripe data would error when connected to a smart reader.
  • Fixes an issue where collecting a payment after collecting NFC data would report a "device busy" error.

4.7.2

17 Sep 17:49

Choose a tag to compare

4.7.2 2025-09-15

Fixes

  • Fixes an issue where connectReader for Tap to Pay on iPhone would incorrectly report success if an Apple-provided reader software upate was interrupted by the app moving to the background.

4.7.1

10 Sep 19:32

Choose a tag to compare

4.7.1 2025-09-10

Fixes

  • Fixes #364: Restores BBPOS Chipper 2X support.

4.7.0

04 Sep 18:30

Choose a tag to compare

4.7.0 2025-09-04

New

  • Support for PayNow, a popular payment method in Singapore, is now available for Terminal smart readers in public preview.
  • Support for PayPay, a popular digital wallet in Japan, is now available for Terminal smart readers in private preview.
    • If you are interested in joining this preview, please contact Stripe support.

Fixes

  • Fixes #355: SDK will now correctly report SCPErrorOfflineEncryptionKeysUnavailable instead of SCPErrorUnexpectedSdkError when the iOS device is locked and the offline encryption keys are unavailable.

4.6.1

07 Aug 18:09

Choose a tag to compare

4.6.1 2025-08-07

  • Built with Xcode 16.0 Swift version 6.0.

Fixes

  • Fixed issue with connecting to a reader for the first time while offline

4.6.0

04 Aug 21:40

Choose a tag to compare

4.6.0 2025-08-04

  • Built with Xcode 16.0 Swift version 6.0.

New

  • Improved error handling when device is tampered. Connecting to a tampered reader will now fail with the SCPErrorReaderTampered error code.
  • Preview: Added ConfirmConfiguration.surcharge and SurchargeConfiguration to configure surcharging on confirmPaymentIntent.
    • If you are interested in joining the preview, please contact Stripe support.
  • Preview: Added a print method to enable printing images on the Verifone V660p reader.
    • If you are interested in joining the preview, please contact Stripe support.

Updates

  • Preview: The ConfirmConfiguration.amountSurcharge field has been renamed to ConfirmConfiguration.surcharge.amount.
    • If you are interested in joining this preview, please contact Stripe support.

4.5.0

10 Jun 19:01

Choose a tag to compare

  • Built with Xcode 16.0 Swift version 6.0.

New

Updates

  • iOS Location permission is no longer enforced when discovering readers, and will instead only be enforced when confirming payment intents.

Fixes

  • Fixed issue with issuing Interac refunds when onBehalfOf parameter is provided.
  • Fixed issue where SCPCardPresentParameters fields were dropped.
  • Fixed issue where calling discoverReaders while a mobile reader is connected would cause the SDK to enter an unexpected state preventing subsequent collectPaymentMethod requests from responding.

4.4.0

14 May 17:20

Choose a tag to compare

  • Built with Xcode 16.0 Swift version 6.0.

New

  • Added simulated Internet reader support for collecting inputs. See the updated SCPSimulatorConfiguration for usage.
  • Added TapToPayInternalNetworkError error code for network errors surfaced in Tap to Pay on iPhone and changed related errors from InternalNetworkError to TapToPayInternalNetworkError.
  • Added new mobile reader disconnect reasons: bluetoothSignalLost, usbDisconnected, and idlePowerDown to SCPDisconnectReason.

Fixes

  • Fixed an issue where calling collectPaymentMethod when no reader was connected to the SDK falsely returned SCPErrorFeatureNotAvailableWithConnectedReader. This error is now correctly reported as SCPErrorNotConnectedToReader.
  • Fixed an issue where the auto-reconnect feature would attempt to reconnect after a reader disconnected due to critically low battery and then disconnect again. Auto-reconnect is no longer attempted in this scenario.
  • Fixed an issue where connection attempt to a reader incorrectly returned SCPErrorNotConnectedToInternet if fetching the connection token failed. The correct error SCPErrorConnectionTokenProviderCompletedWithError is now reported instead.
  • Fixed an issue where the WisePad 3 reader would remain on the processing screen for 30 seconds when a collectPaymentMethod request with updatePaymentIntent applied fails. The reader now exits the processing screen immediately.

4.3.0

26 Mar 22:41

Choose a tag to compare

  • Built with Xcode 16.0 Swift version 6.0.
  • New: Added field requestPartialAuthorization to SCPCardPresentParameters.
  • New: Added field cardDetails to SCPPaymentMethodDetails.
    • Note for internet reader integrations, this feature requires reader software version 2.31 or later to be installed on your internet reader.
  • Update: If the fetchConnectionToken completion block is called with an empty string for the token the SDK will fail the command with SCPErrorConnectionTokenProviderCompletedWithNothing.
  • Fix: Resolved an issue where the SDK could be left in an unexpected state if discoverReaders was called while an existing discoverReaders was already in progress.
  • Preview: CollectInputs now requires a unique id for each SelectionButton.
  • Fix: Auto reconnect now reports SCPErrorBluetoothConnectTimedOut if it times out reconnecting to a reader instead of SCPErrorCanceled.
  • Fix: Auto reconnect will continue trying to reconnect while the app is in the background. When the app becomes active the reconnect timer will give another 60 seconds for reconnect to succeed before timing out.
  • Fix: Resolved an issue where the allowRedisplay parameter was not correctly applied when using updatePaymentIntent with collectPaymentMethod