SCPError
Objective-C
enum SCPError {}
Swift
typealias ErrorCode.Code._ErrorType = ErrorCode
Possible error codes for NSError objects under the SCPErrorDomain domain.
-
The SDK is busy executing another command. The SDK can only execute a single command at a time. You can use the
paymentStatus
orconnectionStatus
properties on yourSCPTerminal
instance (or the corresponding delegate methods) to determine if the SDK is ready to accept another command.Declaration
Objective-C
SCPErrorBusy = 1000
Swift
case busy = 1000
-
Canceling a command failed because the command already completed.
Declaration
Objective-C
SCPErrorCancelFailedAlreadyCompleted = 1010
Swift
case cancelFailedAlreadyCompleted = 1010
-
No reader is connected. Connect to a reader before trying again.
Declaration
Objective-C
SCPErrorNotConnectedToReader = 1100
Swift
case notConnectedToReader = 1100
-
Already connected to a reader.
Declaration
Objective-C
SCPErrorAlreadyConnectedToReader = 1110
Swift
case alreadyConnectedToReader = 1110
-
Your implementation of
fetchConnectionToken
called the completion block with(nil, nil)
. Please make sure your integration completes with either a connection token or an error.Declaration
Objective-C
SCPErrorConnectionTokenProviderCompletedWithNothing = 1510
Swift
case connectionTokenProviderCompletedWithNothing = 1510
-
processPayment
was called with an unknown or invalid PaymentIntent. You must process a payment immediately after collecting a payment method.Declaration
Objective-C
SCPErrorProcessInvalidPaymentIntent = 1530
Swift
case processInvalidPaymentIntent = 1530
-
collectPaymentMethod
orprocessPayment
was called with anil
PaymentIntent.Declaration
Objective-C
SCPErrorNilPaymentIntent = 1540
Swift
case nilPaymentIntent = 1540
-
processRefund
was called without callingcollectRefundPaymentMethod
beforehand.Declaration
Objective-C
SCPErrorNilRefundPaymentMethod = 1550
Swift
case nilRefundPaymentMethod = 1550
-
The RefundParameters object has invalid values. The Charge ID (ch_123abc) can be found on the
PaymentIntent
object, which you should get from your backend.Declaration
Objective-C
SCPErrorInvalidRefundParameters = 1555
Swift
case invalidRefundParameters = 1555
-
A PaymentIntent was referenced using an invalid client secret.
Declaration
Objective-C
SCPErrorInvalidClientSecret = 1560
Swift
case invalidClientSecret = 1560
-
The SDK must be actively Discovering Readers in order to successfully connect to a reader. See documentation on
-[SCPTerminal discoverReaders:delegate:completion:]
and-[SCPTerminal connectReader:completion:]
Declaration
Objective-C
SCPErrorMustBeDiscoveringToConnect = 1570
Swift
case mustBeDiscoveringToConnect = 1570
-
Before connecting to a reader, it must have already been discovered in the current discovery session. Trying to connect to a reader from a previous discovery session is not supported.
Declaration
Objective-C
SCPErrorCannotConnectToUndiscoveredReader = 1580
Swift
case cannotConnectToUndiscoveredReader = 1580
-
discoverReaders
was called using an invalid SCPDiscoveryConfiguration. Your app selected a discovery method that is either incompatible with the selected device type or attemped to usesimulated
orlocationId
with a reader which does not supportsimulated
orlocationId
. Currentlychipper2X
is the only reader which supportssimulated
andverifoneP400
is the only reader which supports use oflocationId
for location filtering.See
SCPDiscoveryConfiguration
for valid configurations.Declaration
Objective-C
SCPErrorInvalidDiscoveryConfiguration = 1590
Swift
case invalidDiscoveryConfiguration = 1590
-
No longer used
Declaration
Objective-C
SCPErrorInvalidCart = 1600
Swift
case invalidCart = 1600
-
collectPaymentMethod
was called with anil
SCPReaderDisplayDelegate
, but theSCPTerminal.connectedReader
does not have a built-in display, and requires that your app support displaying messages from the reader to your user.Declaration
Objective-C
SCPErrorNilReaderDisplayDelegate = 1850
Swift
case nilReaderDisplayDelegate = 1850
-
installUpdate
was passed anil
SCPReaderSoftwareUpdate
.Declaration
Objective-C
SCPErrorNilUpdate = 1860
Swift
case nilUpdate = 1860
-
-[SCPTerminal connectReader:completion:]
was called from an unsupported version of the SDK. In order to fix this you will need to update your app to the most recent version of the SDK. We suggest you prompt your user to update their app, assuming there is an update app version with a supported version of our SDK.Declaration
Objective-C
SCPErrorUnsupportedSDK = 1870
Swift
case unsupportedSDK = 1870
-
This feature is currently not available for the selected reader.
Declaration
Objective-C
SCPErrorFeatureNotAvailableWithConnectedReader = 1880
Swift
case featureNotAvailableWithConnectedReader = 1880
-
The command was canceled by your app.
Declaration
Objective-C
SCPErrorCanceled = 2020
Swift
case canceled = 2020
-
Access to location services is currently disabled. This may be because:
- The user disabled location services in the system settings.
- The user denied access to location services for your app.
- The user’s device is in Airplane Mode and unable to gather location data.
Declaration
Objective-C
SCPErrorLocationServicesDisabled = 2200
Swift
case locationServicesDisabled = 2200
-
This error indicates that Bluetooth is turned off, and the user should use Settings to turn Bluetooth on.
If Bluetooth is on but the app does not have permission to use it, a different error (
SCPErrorBluetoothError
) occurs.Declaration
Objective-C
SCPErrorBluetoothDisabled = 2320
Swift
case bluetoothDisabled = 2320
-
Scanning for bluetooth devices timed out.
Declaration
Objective-C
SCPErrorBluetoothScanTimedOut = 2330
Swift
case bluetoothScanTimedOut = 2330
-
Bluetooth Low Energy is unsupported on this iOS device. Use a different iOS device that supports BLE (also known as Bluetooth 4.0)
Declaration
Objective-C
SCPErrorBluetoothLowEnergyUnsupported = 2340
Swift
case bluetoothLowEnergyUnsupported = 2340
-
Updating the reader software failed because the reader’s battery is too low. Charge the reader before trying again.
Declaration
Objective-C
SCPErrorReaderSoftwareUpdateFailedBatteryLow = 2650
Swift
case readerSoftwareUpdateFailedBatteryLow = 2650
-
Updating the reader software failed because the update was interrupted.
Declaration
Objective-C
SCPErrorReaderSoftwareUpdateFailedInterrupted = 2660
Swift
case readerSoftwareUpdateFailedInterrupted = 2660
-
The card is not a chip card.
Declaration
Objective-C
SCPErrorCardInsertNotRead = 2810
Swift
case cardInsertNotRead = 2810
-
The swipe could not be read.
Declaration
Objective-C
SCPErrorCardSwipeNotRead = 2820
Swift
case cardSwipeNotRead = 2820
-
Reading a card timed out.
Declaration
Objective-C
SCPErrorCardReadTimedOut = 2830
Swift
case cardReadTimedOut = 2830
-
The card was removed during the transaction.
Declaration
Objective-C
SCPErrorCardRemoved = 2840
Swift
case cardRemoved = 2840
-
A card can only be used for one transaction, and must be removed after being read. Otherwise, subsequent
collectPaymentMethod
attempts will fail with this error.Your terminal delegate will receive
-[SCPTerminalDelegate terminal:didReportReaderEvent:info:]
withSCPReaderEventCardRemoved
when the card is removed.The Chipper 2x and WisePad 3 will beep until the card is removed.
Declaration
Objective-C
SCPErrorCardLeftInReader = 2850
Swift
case cardLeftInReader = 2850
-
The reader is busy.
Declaration
Objective-C
SCPErrorReaderBusy = 3010
Swift
case readerBusy = 3010
-
An incompatible reader was detected. You can only use the Stripe Terminal iOS SDK with one of Stripe’s pre-certified readers.
Declaration
Objective-C
SCPErrorIncompatibleReader = 3030
Swift
case incompatibleReader = 3030
-
Could not communicate with the reader.
Declaration
Objective-C
SCPErrorReaderCommunicationError = 3060
Swift
case readerCommunicationError = 3060
-
Generic bluetooth error.
Among other things, it may indicate that the app does not have permission to use Bluetooth (iOS 13+).
Declaration
Objective-C
SCPErrorBluetoothError = 3200
Swift
case bluetoothError = 3200
-
Connecting to the bluetooth device timed out. Make sure the device is powered on, in range, and not connected to another app or device. If this error continues to occur, you may need to charge the device.
Declaration
Objective-C
SCPErrorBluetoothConnectTimedOut = 3210
Swift
case bluetoothConnectTimedOut = 3210
-
The Bluetooth device was disconnected unexpectedly.
Declaration
Objective-C
SCPErrorBluetoothDisconnected = 3230
Swift
case bluetoothDisconnected = 3230
-
Generic reader software update error.
Declaration
Objective-C
SCPErrorReaderSoftwareUpdateFailed = 3800
Swift
case readerSoftwareUpdateFailed = 3800
-
Updating the reader software failed because there was an error communicating with the reader.
Declaration
Objective-C
SCPErrorReaderSoftwareUpdateFailedReaderError = 3830
Swift
case readerSoftwareUpdateFailedReaderError = 3830
-
Updating the reader software failed because there was an error communicating with the update server.
Declaration
Objective-C
SCPErrorReaderSoftwareUpdateFailedServerError = 3840
Swift
case readerSoftwareUpdateFailedServerError = 3840
-
-[SCPTerminal processPayment:completion:]
was called from a reader with an unsupported reader version. You will need to update your reader to the most recent version in order to accept payments. We suggest you prompt your user update the reader via the update flow that you have implemented using-[SCPTerminal checkForUpdate:]
and-[SCPTerminal installUpdate:delegate:completion:]
.Declaration
Objective-C
SCPErrorUnsupportedReaderVersion = 3850
Swift
case unsupportedReaderVersion = 3850
-
The reader returned from discovery does not have an IP address and cannot be connected to. The IP address should have been set by the SDK during registration of the reader. Try registering the reader again.
Declaration
Objective-C
SCPErrorUnknownReaderIpAddress = 3860
Swift
case unknownReaderIpAddress = 3860
-
Connecting to reader over the internet timed out. Make sure your device and reader are on the same Wifi network and your reader is connected to the Wifi network.
Declaration
Objective-C
SCPErrorInternetConnectTimeOut = 3870
Swift
case internetConnectTimeOut = 3870
-
Connecting to the reader failed because it is currently in use and
SCPConnectionConfiguration.failIfInUse
was set totrue
.Try to connect again with
failIfInUse = false
, or choose a different reader.A reader is in use while it’s collecting a payment.
Declaration
Objective-C
SCPErrorConnectFailedReaderIsInUse = 3880
Swift
case connectFailedReaderIsInUse = 3880
-
Unexpected SDK error.
Declaration
Objective-C
SCPErrorUnexpectedSdkError = 5000
Swift
case unexpectedSdkError = 5000
-
The Stripe API declined the payment. Inspect
SCPProcessPaymentError.requestError
property for more information about the decline, including the decline code.Declaration
Objective-C
SCPErrorPaymentDeclinedByStripeAPI = 6000
Swift
case paymentDeclinedByStripeAPI = 6000
-
The reader declined the payment. Try another card.
Declaration
Objective-C
SCPErrorPaymentDeclinedByReader = 6500
Swift
case paymentDeclinedByReader = 6500
-
The refund failed. The customer’s bank or card issuer was unable to process it correctly (e.g., a closed bank account or a problem with the card)
Declaration
Objective-C
SCPErrorRefundFailed = 6800
Swift
case refundFailed = 6800
-
The SDK is not connected to the internet.
Declaration
Objective-C
SCPErrorNotConnectedToInternet = 9000
Swift
case notConnectedToInternet = 9000
-
The underlying request timed out.
Declaration
Objective-C
SCPErrorRequestTimedOut = 9010
Swift
case requestTimedOut = 9010
-
The underlying request returned an API error.
Declaration
Objective-C
SCPErrorStripeAPIError = 9020
Swift
case stripeAPIError = 9020
-
The API response from Stripe could not be decoded.
Declaration
Objective-C
SCPErrorStripeAPIResponseDecodingError = 9030
Swift
case stripeAPIResponseDecodingError = 9030
-
Generic network error
Declaration
Objective-C
SCPErrorInternalNetworkError = 9040
Swift
case internalNetworkError = 9040
-
Your implementation of
-[SCPConnectionTokenProvider fetchConnectionToken:]
called the completion block with an error.Declaration
Objective-C
SCPErrorConnectionTokenProviderCompletedWithError = 9050
Swift
case connectionTokenProviderCompletedWithError = 9050
-
The current session has expired and the reader must be disconnected and reconnected. The SDK will attempt to auto-disconnect for you and you should instruct your user to reconnect it.
-[SCPTerminalDelegate terminal:didReportUnexpectedReaderDisconnect:]
will be called if the SDK is able to successfully auto-disconnect. If it does not successfully auto-disconnect (didReportUnexpectedReaderDisconnect
will not be called andSCPTerminal.connectionStatus
will still beSCPConnectionStatusConnected
) you can attempt again via-[SCPTerminal disconnectReader:]
or you can instruct your user to disconnect manually by turning the reader off.Note this error will only occur in one of the following calls:
-[SCPTerminal createPaymentIntent:completion:]
-[SCPTerminal retrievePaymentIntent:completion:]
-[SCPTerminal collectPaymentMethod:delegate:completion:]
if connected to a Verifone P400 or a BBPOS WisePOS E-[SCPTerminal processPayment:completion:]
-[SCPTerminal cancelPaymentIntent:completion:]
-[SCPTerminal readReusableCard:delegate:completion:]
-[SCPTerminal collectRefundMethod:parameters]
-[SCPTerminal processRefund:completion]
Declaration
Objective-C
SCPErrorSessionExpired = 9060
Swift
case sessionExpired = 9060