iOS SDK - Response Handling
Errors Passed to the SDK
Effective as of iOS SDK 5.4, the WLW platform passes failure response data in the PDPaydiantError
class, which identifies the unchanged HTTP code, along with a context-specific description and an instance of PDErrorInformation
object, encapsulating the raw failure response body. The errorCode
and errorDescription
represent the event status, plus an external error code passed by a third-party entity through the connector framework, if applicable.
The following XML sample depicts the general structure of the server error object.
<?xml version="1.0" encoding="UTF-8"?>
<PDPaydiantError>
<statusCode>400</statusCode>
<statusMessage>BAD_REQUEST</statusMessage>
<description>"Account already exists."</description>
<rawErrorDescription>...</rawErrorDescription>
<localizedDescription>...</localizedDescription>
<errorInformation>
<PDErrorInformation>
<errorCode>798</errorCode>
<errorDescription>DUPLICATES_NOT_ALLOWED</errorDescription>
<externalErrorDescription>
...
Array of PDExternalErrorInformation
...
</externalErrorDescription>
</PDErrorInformation>
</errorInformation>
</PDPaydiantError>
The PDErrorInformation
is populated with the errorCode
and errorDescription
values defined in WLW’s platform. The following tables define each possible value within the code ranges that have been designated for specific operation types.
Note: Not all codes within each designated range have assigned definitions.
Settlement Statuses (200 - 209)
errorCode |
errorDescription |
200 |
APPROVED |
201 |
DECLINED |
202 |
SETTLEMENT_FAILED |
203 |
INSUFFICIENT_FUNDS |
204 |
PARTIAL_PAYMENT_SUCCESS |
Authorization Statuses (210 - 219)
errorCode |
errorDescription |
210 |
AUTH_APPROVED |
211 |
AUTH_FAILED |
212 |
PARTIAL_PRE_AUTH_SUCCESS |
Scheduled Processing Statuses (220 - 229)
errorCode |
errorDescription |
220 |
AUTH_APPROVED_AND_SCHEDULED |
Refund Statuses (230 - 239)
errorCode |
errorDescription |
230 |
REFUND_APPROVED |
231 |
REFUND_ON_HOLD |
232 |
REFUND_FAILED |
235 |
REFUND_NOT_POSSIBLE |
236 |
REFUND_TRANSACTION_DATA_MISMATCH |
237 |
REFUND_TRANSACTION_AMOUNT_EXCEED |
General Payment Processing Statuses (240 - 249)
errorCode |
errorDescription |
240 |
DUPLICATE_TRANSACTION |
241 |
PROCESSING_ERROR |
242 |
GATEWAY_PROCESSING_ERROR |
243 |
TRANSACTION_NOT_ALLOWED |
244 |
TRANSACTION_UNDER_REVIEW |
245 |
TRANSACTION_NOT_SUPPORTED |
errorCode |
errorDescription |
250 |
INVALID_INPUTS |
251 |
INVALID_AMOUNT |
252 |
INVALID_CARD_NUMBER |
253 |
INVALID_EXPIRY_DATE |
254 |
EXPIRED_CARD |
255 |
INVALID_ABA |
257 |
AVS_MISMATCH |
258 |
INVALID_CARD_CODE |
Non-Transaction Processing Statuses (340 - 349)
errorCode |
errorDescription |
340 |
SUCCESS |
341 |
CRUD_NOT_POSSIBLE |
349 |
ENTITY_IS_DELETED |
errorCode |
errorDescription |
350 |
ENTITY_NOT_EXISTING |
351 |
DUPLICATES_NOT_ALLOWED |
352 |
EMPTY_PARTNER_URI |
353 |
EMPTY_TENANT_URI |
354 |
EMPTY_MERCHANT_URI |
355 |
EMPTY_USER_PROFILE_URI |
356 |
EMPTY_CURRENCY_URI |
357 |
EMPTY_FINANCIAL_INSTITUTE_URI |
358 |
EMPTY_WALLET_ACCOUNT_URI |
359 |
EMPTY_PAYMENT_PROCESSOR_URI |
360 |
INVALID_PARTNER_URI |
361 |
INVALID_TENANT_URI |
362 |
NVALID_MERCHANT_URI |
363 |
INVALID_USER_PROFILE_URI |
364 |
INVALID_CURRENCY_URI |
365 |
INVALID_FINANCIAL_INSTITUTE_URI |
366 |
INVALID_WALLET_ACCOUNT_URI |
367 |
INVALID_PAYMENT_PROCESSOR_URI |
368 |
INVALID_PAYMENT_IMAGE_CATEGORY_URI |
369 |
INVALID_PAYMENT_IMAGE_URI |
Balance Inquiry Statuses (370 - 379)
errorCode |
errorDescription |
370 |
BALANCE_INQUIRY_SUCCESS |
371 |
BALANCE_INQUIRY_FAILED |
372 |
BALANCE_TEMP_UNAVAILABLE |
373 |
BALALNCE_NOT_SUPPORTED |
374 |
INVALID_BALANCE_AMOUNT |
375 |
INVALID_BALANCE_REQUEST |
Verification Statuses (380 - 389)
errorCode |
errorDescription |
380 |
VERIFICATION_SUCCESS |
381 |
VERIFICATION_FAILED |
382 |
VERIFICATION_AMOUNT_MISMATCH |
383 |
VERIFICATION_PERIOD_EXPIRED |
384 |
VERIFICATION_NOT_SUPPORTED |
385 |
VERIFICATION_TEMP_NOT_AVAILABLE |
386 |
INVALID_VERIFICATION_REQUEST |
387 |
VERIFICATION_INITIATED |
388 |
UNSUPPORTED_IIN |
389 |
UNSUPPORTED_TENDER_TYPE |
Loyalty Account Statuses (400 - 409)
errorCode |
errorDescription |
400 |
ALLOWED_LOYALTY_CARD_LIMIT_EXCEEDED |
errorCode |
errorDescription |
500 |
INVALID_TRANSACTION |
501 |
SUSPECTED_FRAUD |
errorCode |
errorDescription |
550 |
MERCHANT_ERROR |
Full Reversal Statuses (600 - 619)
errorCode |
errorDescription |
600 |
FULL_REVERSAL_SUCCESS |
601 |
FULL_REVERSAL_DENIED |
602 |
FULL_REVERSAL_EXT_SYSTEM_FAILED |
603 |
FULL_REVERSAL_SYSTEM_FAILED |
604 |
FULL_REVERSAL_NOT_POSSIBLE |
605 |
TRANSACTION_NOT_FOUND_FOR_REVERSAL |
Void Statuses (620 - 639)
errorCode |
errorDescription |
620 |
VOID_SUCCESS |
621 |
VOID_DENIED |
622 |
VOID_EXT_SYSTEM_FAILED |
623 |
VOID_SYSTEM_FAILED |
624 |
VOID_NOT_POSSIBLE |
Loyalty Transaction Statuses (700 - 749)
errorCode |
errorDescription |
700 |
ADD_LOYALTY_POINTS_SUCCESS |
701 |
ADD_LOYALTY_POINTS_FAILED |
702 |
ADD_LOYALTY_POINTS_NOT_SUPPORTED |
703 |
INVALID_POINTS_AMOUNT |
704 |
SUBTRACT_LOYALTY_POINTS_FOR_REFUND_SUCCESS |
705 |
SUBTRACT_LOYALTY_POINTS_FOR_REFUND_FAILED |
706 |
SUBTRACT_LOYALTY_POINTS_FOR_REFUND_NOT_SUPPORTED |
707 |
SUBTRACT_LOYALTY_POINTS_SUCCESS |
708 |
SUBTRACT_LOYALTY_POINTS_FAILED |
709 |
SUBTRACT_LOYALTY_POINTS_NOT_SUPPORTED |
710 |
ADD_LOYALTY_POINTS_FOR_SALE_SUCCESS |
711 |
ADD_LOYALTY_POINTS_FOR_SALE_FAILED |
712 |
ADD_LOYALTY_POINTS_FOR_SALE_NOT_SUPPORTED |
713 |
LOYALTY_POINTS_VOID_SUCCESS |
714 |
LOYALTY_POINTS_VOID_FAILED |
715 |
LOYALTY_POINTS_VOID_NOT_POSSIBLE |
716 |
LOYALTY_POINTS_FULL_REVERSAL_SUCCESS |
717 |
LOYALTY_POINTS_FULL_REVERSAL_FAILED |
718 |
LOYALTY_POINTS_FULL_REVERSAL_NOT_POSSIBLE |
Load Account Statuses (750 - 759)
errorCode |
errorDescription |
750 |
ADD_VALUE_SUCCESS |
751 |
ADD_VALUE_FAILED |
752 |
ADD_VALUE_NOT_SUPPORTED |
753 |
MAX_VALUE_EXCEEDED |
754 |
MAX_BALANCE_EXCEEDED |
Provisioning Statuses (760 - 769)
errorCode |
errorDescription |
760 |
CARD_PROVISIONING_SUCCESS |
761 |
CARD_PROVISIONING_FAILED |
762 |
CARD_PROVISIONING_NOT_SUPPORTED |
763 |
CARD_PROVISIONING_LIMIT_EXCEEDED |
764 |
CARD_PROVISIONING_DECLINED |
Identity Provider Statuses (780 - 789)
errorCode |
errorDescription |
780 |
IDP_AUTHENTICATION_SUCCESS |
781 |
IDP_AUTHENTICATION_FAILURE |
782 |
IDP_PROCESSING_ERROR |
783 |
IDP_EXTERNAL_PROCESSING_ERROR |
Variable-Step Payment Account Enrollment Statuses (790 - 809)
errorCode |
errorDescription |
790 |
PAYMENT_ACCOUNT_ENROLLMENT_SUCCESSFUL |
791 |
PAYMENT_ACCOUNT_ENROLLMENT_FAILED |
792 |
PAYMENT_ACCOUNT_ENROLLMENT_CANCELLED |
793 |
PAYMENT_ACCOUNT_ENROLLMENT_EXPIRED |
794 |
PAYMENT_ACCOUNT_ENROLLMENT_CARD_PROVISIONING_LIMIT_EXCEEDED |
795 |
PAYMENT_ACCOUNT_ENROLLMENT_CARD_PROVISIONING_DECLINED |
796 |
PAYMENT_ACCOUNT_ENROLLMENT_NOT_SUPPORTED |
797 |
PAYMENT_ACCOUNT_ENROLLMENT_CRUD_NOT_POSSIBLE |
798 |
PAYMENT_ACCOUNT_ENROLLMENT_DUPLICATED_NOT_ALLOWED |
799 |
PAYMENT_ACCOUNT_ENROLLMENT_VERIFICATION_AMOUNT_MISMATCH |
800 |
PAYMENT_ACCOUNT_ENROLLMENT_VERIFICATION_NOT_SUPPORTED |
801 |
PAYMENT_ACCOUNT_ENROLLMENT_VERIFICATION_TEMP_NOT_AVAILABLE |
802 |
PAYMENT_ACCOUNT_ENROLLMENT_INVALID_VERIFICATION_REQUEST |
803 |
PAYMENT_ACCOUNT_ENROLLMENT_VERIFICATION_INITIATED |
804 |
PAYMENT_ACCOUNT_ENROLLMENT_CANCELLATION_NOT_POSSIBLE |
805 |
PAYMENT_ACCOUNT_ENROLLMENT_ALREADY_CANCELLED |
Payment Status Code Reference
Payment status codes are not error codes in that they are not returned to the app in failure responses. Rather, they represent the outcome of a payment authorization request as it is returned to WLW by the processor and are returned to the app within the PaymentStatusCode
attribute of a PDTransactionAccount
instance returned in a success response at completion of a payment transaction. In transactions where one or more payment attempts failed before the transaction was ultimately successful, the previousPaymentResults
attribute of the PDTransactionDetail
object may include PDTransactionAccount
instances populated with values from this list.
Authorization Status
Code |
Status Message |
Description |
200 |
Approved Payment |
Payment for the transaction has been approved. |
201 |
Declined Payment |
Payment for the transaction has been declined. |
203 |
Insufficient Funds |
The account from which the payment is being drawn does not have enough money to cover the amount due. |
210 |
Auth_Approved |
The authorization has been approved. |
211 |
Auth_Failed |
The authorization has not succeeded. |
212 |
Partial_Pre_Auth_Success |
The amount for pre-authorization was approved for an amount that was less than the approved pre-authorization amount. |
Payment Status
Code |
Status Message |
Description |
240 |
Duplicate Transaction |
The transaction has already been submitted. |
241 |
Processing Error |
Approval of the payment authorization has failed. |
242 |
Gateway Processing Error |
An error has occurred in an external system while processing the payment. |
243 |
Transaction Not Allowed |
This transaction cannot be processed at the customer’s financial institution. |
Code |
Status Message |
Description |
250 |
Invalid Inputs |
The transaction contains one or more invalid parameter entries. |
251 |
Invalid Amount |
The amount entered is not a valid format (e.g., multiple decimal points may have been entered). |
252 |
Invalid Card Number |
The credit card number entered is not valid (e.g., too many or too few digits). |
253 |
Invalid Expiry Date |
The credit card expiration date is not a valid date. |
254 |
Expired Card |
The credit card expiration date has already passed. |
255 |
Invalid ABA |
The ABA code is not valid for the card. |
256 |
Invalid Account Number |
The account number is invalid. |
257 |
AVS Mismatch |
The transaction resulted in an AVS mismatch. The address provided does not match billing address of card holder. |
258 |
Invalid Card Code |
The card code (CVV2/CVC2/CID) is invalid. |
Code |
Status Message |
Description |
500 |
Invalid Transaction |
The transaction request is not valid; contact Issuer. |
501 |
Suspected Fraud |
A fraudulent transaction is suspected; contact Issuer. |
Code |
Status Message |
Description |
550 |
Merchant Error |
The data transmitting from the POS terminal has resulted in an error. |