Terminal-2 icon

Error handling

Resolve errors shown on the mobile iOS device.

The Adyen payments platform performs regular checks to make sure that the mobile device on which the SDK is installed is secure. If an issue is found during the security attestation process, an error is shown on the mobile device. In many cases end users can resolve the issue themselves. The user needs to resolve the issue before trying to use the device again.

The following tables show the most common errors and how to handle them.

Device error messages

You need to resolve the issue before trying to use the device again. Refer to the column Internet needed to resolve to learn if your integration needs internet connectivity to resolve the error.

Error code Description Internet needed to resolve Required action
DEBUGGER_ENABLED Transaction canceled. -x- Disconnect the debugger and try again.
INVALID_NYC1_FIRMWARE_VERSION Card reader firmware version is invalid. -white_check_mark- Update the card reader to the latest software version and try again.
LOCAL_TIME_TAMPERING Transaction canceled. Unable to check the security requirements. -white_check_mark- On the device, go to Settings > General > Date & Time and turn on Set automatically.
NON_SELF_RESOLVABLE Transaction canceled. Unable to check the security requirements. -white_check_mark- Contact our Support Team to resolve the issue.
NO_TOKEN Cannot transact. -white_check_mark- Connect the device to a network so that the SDK can check the security requirements.
OFFLINE_DATA_TAMPERING An error occurred, offline data may have been lost. -white_check_mark- Connect the device to a network so that the SDK can check the security requirements.
PASSCODE_NOT_ENABLED Transaction canceled. Device passcode was removed, offline transaction data may have been lost. -white_check_mark- On the device, go to Settings > Face ID & Passcode, set a passcode for this device, and try again.
All offline "Store and Forward" transactions previously performed with the original passcode have been lost and cannot be recovered. You will not be able to continue making offline transactions until the error is resolved.
SCREEN_RECORDING Transaction canceled. -x- Stop screen recording and try again.
SCREEN_CAPTURED Transaction canceled. -x- Screen capture is not allowed. Try again.
SCREEN_TAMPERING Transaction canceled. -x- Try again. Keep the app open and in full-screen mode while the transaction is in progress.
SCREEN_OVERLAY Transaction canceled. -x- Keep the app open and in full-screen while the transaction is in progress.
SYSTEM_CHANGE Transaction canceled. Cannot transact due to system change. -x- Connect the device to a network so that the SDK can check the security requirements.
If the date/time of the device was changed, you must change it back to continue transacting. If the device was restarted, it must go online for the SDK to check security requirements.
TOKEN_EXPIRED_S&F Offline transaction window has expired. -white_check_mark- Connect the device to a network so that the SDK can check the security requirements.

AdyenPOSError cases

AdyenPOSError is a public Swift enum that can be thrown when you call SDK methods, for example PaymentService.performTransaction(), warmUp(), performDiagnosis(), or a firmware update method. You handle these errors in your own code. They can occur with any iOS Mobile SDK integration, including Tap to Pay on iPhone and card reader (NYC1) integrations.

The Localized message column shows the English reference text. The actual message follows the same language hierarchy as the rest of the transaction flow: it can be shown in the shopper's card language, your configured primary or secondary language, or the device's language.

If you print an AdyenPOSError using print(error) or error.localizedDescription, you get an unreadable value such as AdyenPOSError 6. Use String(describing: error) to get the localized message shown in the tables below.

Transaction errors

Errors related to starting or processing a payment transaction.

Error case Localized message Required action
malformedTransactionRequest Unable to parse Terminal API request: {error}. Check that your Terminal API payment request is structured correctly.
transactionInProgress Unable to proceed because there is a transaction in progress. Wait for the current transaction to finish before you start a new one.

Device and connection errors

Errors related to the mobile device's state or its connection to a card reader.

Error case Localized message Required action
deviceConnectionFailure Unable to connect to the reader with serial number {sn}: {reason}. Check that the card reader is turned on and within range, then try to connect again.
noPairedReaders No previously paired readers found. Pair a card reader with the SDK before you try to use it.
deviceLocked Device is locked. Please unlock the device and try again. Unlock the device before you perform SDK operations.
passcodeDisabled Device passcode was removed, offline data may have been lost. Please set a passcode and try again. Set a device passcode.
Offline "Store and Forward" data saved with the previous passcode may be lost.
unableToFetchCardReaderBatteryInfo Unable to retrieve battery information from the card reader. Check that the card reader is connected, then try again.

Tap to Pay errors

Errors specific to Tap to Pay on iPhone.

Error case Localized message Required action
tapToPayNotSupported Tap to Pay is not supported on this device due to device model and/or iOS version. Use a device and iOS version that meet the Tap to Pay on iPhone requirements.
tapToPayNotAllowed Tap to Pay is not allowed. Most likely the app is missing an entitlement to use it. Request the Tap to Pay on iPhone entitlement from Apple for your app.
tapToPayPaymentInterfaceFailure Unable to retrieve Tap to Pay payment interface: {reason} Try again. If the issue persists, contact our Support Team.

Configuration and lifecycle errors

Errors related to SDK setup and your app's lifecycle, for example warming up or backgrounding.

Error case Localized message Required action
unableToObtainInstallationId Unable to generate an application identifier. Check that your device has a network connection and a passcode set, then try again. If the issue persists, reinstall the app or contact our Support Team.
backgroundWarmupNotAllowed Unable to warm up if the application is in the background. Call warmUp() only while your app is in the foreground.
invalidSuccessScreenTimeout The value for successScreenTimeout is not within the allowed range. Set successScreenTimeout to a value between 0.5 and 4 seconds (default is 4 seconds).

Rate limiting

Errors returned when your integration sends too many requests in a short time.

Error case Localized message Required action
tooManyRequests Too many session-related requests. Please wait before retrying. Wait before you retry, and add backoff logic to your integration. Check your session establishment flow for requests sent too frequently.

Education errors

Errors related to showing education screens that instruct end users how to use Tap to Pay on iPhone.

Error case Localized message Required action
educationNotSupported Education for the provided payment interface/action is not supported. Only call presentEducationForTapToPay(for:) for a supported payment interface and action.
educationFailedToDisplay Failed to display education for the provided payment interface/action. Try again. If the issue persists, contact our Support Team.

Firmware errors

Firmware errors are returned as firmwareError(reason:). The reason value tells you exactly what went wrong:

Reason Localized message Required action
generalError A general firmware error occurred. Try the firmware update again.
noConnectedDevices There are no connected devices. Connect the card reader before you start a firmware update.
noConnectedDock There are no connected docks. Dock the card reader before you start a firmware update.
firmwareDelegateNotSet The delegate is not set correctly. Set the firmware delegate in your integration.
noUpdateAvailable There is no firmware update available. No action needed.
bluetoothFirmwareUpdateError An error occurred performing a Bluetooth firmware update. Reset your device and try again. Reset the card reader, then try the update again. See Updating the card reader firmware for the reset steps.
firmwareRetrievalError An error occurred fetching the firmware update. Check your network connection, then try again.
updatePartiallyApplied Failed to fully apply firmware update. Try again. Try the firmware update again.
updateNotApplied An error occurred applying the firmware update. Try the firmware update again.

See also