6.0.0 2026-10-07
- Built with Xcode 27.0, Swift version 6.4.
- The framework is built with
-Xfrontend -disable-module-selectors-in-module-interface, so the public.swiftinterfaceuses the pre-6.3 dot-qualified spelling instead of the SE-0491Module::Typeselector syntax Swift 6.3+ emits by default. Minimum requirement for integrators: Xcode 16.0+, Swift 6.0+.
New
- WisePad 3 now supports amount surcharge and confirm-time on-reader surcharge consent. Collect-time
surchargeNoticeremains unsupported on WisePad 3. - Added
SCPErrorCanceledByReader, returned when an operation is canceled on the reader: the physical cancel button on a mobile reader, or the customer canceling on a smart reader. Programmatic cancellations initiated through the SDK continue to returnSCPErrorCanceled. - Tap to Pay on iPhone now returns
SCPErrorCanceledByReaderwhen the customer dismisses the payment sheet or backs out of PIN entry. Cancellations the integration requests throughSCPCancelablecontinue to returnSCPErrorCanceled. - Added
SCPPaymentMethodCardPresentDetails, which exposes the instrument fields returned bypayment_method.card_presentandpayment_method.interac_present, including available and preferred card networks. - Added
latestChargeandlatestChargeIdtoSCPPaymentIntent, exposing the PaymentIntent's most recent Charge from eitherlatest_chargeor the legacychargeslist. - Preview: Refunds - Added
confirmRefund, which creates a Refund for a PaymentIntent without collecting a payment method or displaying reader UI.- Added
SCPConfirmRefundParametersto configure full or partial refunds and optional Refund fields. - Added
SCPRefundStatusCanceledandSCPRefundStatusRequiresAction. - Added
SCPRefundNextActionto expose required follow-up details. - To request access to this feature, please contact Stripe Support.
- Added
- Preview: Added support for Mexico installments (meses sin intereses, or MSI) for eligible card-present transactions. Use
SCPInstallmentsParametersBuilderto enable installments when creating a PaymentIntent. After payment method collection,SCPInstallmentsParameters.availablePlanscontains the eligible installment plans. After confirmation,SCPInstallmentsParameters.plancontains the plan selected by the cardholder.- To request access to this feature, please contact Stripe Support.
- Preview: Swish — Added
SCPPaymentMethodTypeSwishandSCPSwishDetails, and exposed Swish details throughSCPPaymentMethod.swishandSCPPaymentMethodDetails.swish.- To request access to this feature, please contact Stripe Support.
Updates
- Breaking:
SCPRefund.stripeIdnow returns a nullable string. In Swift,Refund.stripeIdis nowString?. Check for a value before using it. - Breaking: Standardized the PaymentMethod properties on
SCPSetupIntentto matchSCPPaymentIntent. The expandedSCPPaymentMethodis now exposed aspaymentMethod, and its ID is exposed aspaymentMethodId. Replace uses of the previous ID-valuedpaymentMethodproperty withpaymentMethodId, and replacepaymentMethodExpandedwithpaymentMethod. - Breaking: Removed
SCPPaymentIntent.charges. UselatestChargefor the expanded most recent Charge andlatestChargeIdfor its ID. - Breaking: Removed
SCPPaymentIntent.invoice. Retrieve the PaymentIntent's invoice relationship through the Stripe API from your server. - Breaking:
SCPPaymentMethod.cardPresentandSCPPaymentMethod.interacPresentnow returnSCPPaymentMethodCardPresentDetailsinstead ofSCPCardPresentDetails. Transaction-only properties remain onSCPPaymentMethodDetails.cardPresentandSCPPaymentMethodDetails.interacPresent.SCPCardPresentDetails.networkshas been removed; use the correspondingSCPPaymentMethodCardPresentDetails.networksproperty instead. Expiration month and year on the new model are nullable to preserve their absence in API responses. - Breaking: Removed
SCPCardBrand(CardBrand). Thebrandproperties on
SCPCardDetails,SCPCardPresentDetails, andSCPOfflineCardPresentDetails
are now strings.SCPCardPresentDetails.networkand the entries in
SCPNetworks.availableare also strings, andSCPNetworks.preferrednow
exposes the API's preferred network. Replace enum comparisons such as.visa
with string comparisons such as"visa". - Breaking: Replaced
SCPErrorPrinterLowBatterywith the more generalSCPErrorReaderBatteryLow, returned when a reader remains connected but cannot complete an operation, such as printing, because its battery is too low. - Breaking: Removed
SCPCardFundingType(CardFundingType). Thefunding
properties onSCPCardDetails(CardDetails) andSCPCardPresentDetails
(CardPresentDetails) are now nullable strings containing the value returned
by the Stripe API. Replace enum comparisons such as.creditwith string
comparisons such as"credit". Missing funding values are returned asnil,
and values introduced after the installed SDK version are preserved. - Breaking: Removed
SCPTerminal.stringFromCardBrand:(Terminal.stringFromCardBrand).
brandvalues are now strings directly, so no conversion is necessary. - Breaking: Removed
SCPReadMethod(ReadMethod). ThereadMethod
properties onSCPCardPresentDetails(CardPresentDetails) and
SCPOfflineCardPresentDetails(OfflineCardPresentDetails) are now strings
containing canonical Stripe API values such as"contact_emv". Values
introduced after the installed SDK version are preserved, and missing values
are returned as"unknown". - Breaking: Removed
SCPTerminal.stringFromReadMethod:
(Terminal.stringFromReadMethod).readMethodvalues are now strings
directly, so no conversion is necessary. - Breaking: Removed
SCPErrorSimulatedOfflineModeNotAvailableForAccount.
Simulated offline mode is now generally available and is no longer gated
per-account, so this error is never returned.
setSimulatedOfflineModeConfiguration:error:no longer fails when a reader is
connected, and connecting a testmode reader no longer disconnects it for
lacking access. Remove any handling for this error code. Connecting to a
livemode reader still returns
SCPErrorSimulatedOfflineModeNotAvailableInLivemode. - Breaking:
SCPPaymentIntentParametersBuildernow defaultscaptureMethodtoSCPCaptureMethodAutomaticAsyncinstead ofSCPCaptureMethodManual. Integrations that require separate capture, including those using on-receipt tipping, incremental authorization, or extended authorization, must explicitly setSCPCaptureMethodManual. - Breaking:
allowRedisplayis now required when initializingCollectSetupIntentConfigurationBuilder, and all SetupIntent collection and processing methods require aCollectSetupIntentConfiguration. In Swift, migrate fromCollectSetupIntentConfigurationBuilder()toCollectSetupIntentConfigurationBuilder(allowRedisplay: .always)(or another appropriate value), then pass the built configuration assetupConfigtocollectSetupIntentPaymentMethodor ascollectConfigtoprocessSetupIntent. - Breaking: Renamed
SCPRefundParameters(RefundParameters) andSCPRefundParametersBuilder(RefundParametersBuilder) toSCPProcessRefundParameters(ProcessRefundParameters) andSCPProcessRefundParametersBuilder(ProcessRefundParametersBuilder). Update integrations that callprocessRefundto use the new names. Refund behavior is unchanged. - Breaking: Added
ReaderInteractionDelegateas the shared base protocol forMobileReaderDelegateandTapToPayReaderDelegate. The five reader lifecycle and display callbacks shared by Mobile Reader and Tap to Pay now use thereadermethod prefix, allowing integrations that support both reader types to implement these callbacks once.- Rename the five required Swift callbacks from
tapToPayReader(_:didStartInstallingUpdate:cancelable:),tapToPayReader(_:didReportReaderSoftwareUpdateProgress:),tapToPayReader(_:didFinishInstallingUpdate:error:),tapToPayReader(_:didRequestReaderInput:), andtapToPayReader(_:didRequestReaderDisplayMessage:)to their correspondingreader(_:forms. In Objective-C, rename the corresponding selectors fromtapToPayReader:didStartInstallingUpdate:cancelable:,tapToPayReader:didReportReaderSoftwareUpdateProgress:,tapToPayReader:didFinishInstallingUpdate:error:,tapToPayReader:didRequestReaderInput:, andtapToPayReader:didRequestReaderDisplayMessage:to selectors beginning withreader:. - Payment callbacks are not part of
ReaderInteractionDelegate. Mobile Reader and Tap to Pay connections use the separateReaderPaymentInteractionDelegate.reader(_:didRequestInteraction:)callback andPaymentInteractionwrapper types for blocking payment UI. Set the delegate on the connection configuration withsetReaderPaymentInteractionDelegate(_:). - The update API split is intentional:
MobileReaderDelegate.reader(_:didReportAvailableUpdate:)reports a deferred optional update whose installation is user-triggered for Mobile Readers, while the shared installation callbacks also report mandatory Tap to Pay configuration installation during connection. Tap to Pay doesn't report available optional updates.
- Rename the five required Swift callbacks from
- Breaking: Removed
allowCustomerCancelandsetAllowCustomerCancel:fromSCPInternetConnectionConfiguration. Customer-initiated cancellation is controlled per-collection bycustomerCancellationon the collect configuration, which is enabled by default on readers that support it. - Breaking: Removed the deprecated collect-then-confirm refund APIs: all
collectRefundPaymentMethodoverloads and the parameterlessconfirmRefund(completion:)andconfirmRefund(reader:completion:)overloads. UseprocessRefundinstead. - Breaking: Removed the deprecated
SCPSimulateReaderUpdateenum andSCPSimulatorConfiguration.availableReaderUpdate. UsetestReaderUpdateon the Bluetooth, USB, or Tap to Pay connection configuration instead. - Breaking: Removed the deprecated
descriptionproperties fromSCPPaymentIntentParametersandSCPSetupIntentParameters. UsestripeDescriptioninstead. - Breaking: The minimum supported iOS version is now iOS 16.
Fixes
- Fixed automatic reconnect to report
SCPDisconnectReasonPeerRemovedPairingInformationwhen a peer-removal error refines an initially unknown disconnect reason.